配置tftp
配置tftp服務的步驟:
一、安裝相關軟件包:tftpd(服務端),tftp(客戶端),xinetd
sudo apt-get install tftpd tftp xinetd 二、創建配置文件
在/etc/xinetd.d/下創建一個配置文件tftp
sudo vi tftp
在文件中輸入如下內容:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
保存退出 三、創建tftp服務文件目錄(上傳文件與下載文件的位置),而且更改其權限
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot -R 四、從新啓動服務
sudo /etc/init.d/xinetd restart
至此tftp
服務已經安裝完成了,下面能夠對其進行一下測試。(假設在當前目錄下有一個測試文件
test.txt)
$tftp 127.0.0.1
tftp> put test.txt
Sent 1018 bytes in 0.0 seconds
tftp> get test.txt
Received 1018 bytes in 0.1 seconds
tftp> quit
$
經過put命令,能夠把當前目錄下的test.txt文件,經過tftp上傳到它的服務文件目錄。這時,在/tftpboot下面會出現test.txt文件。經過get命令,能夠從/tftpboot下,下載test.txt文件。這樣就驗證了tftp服務配置的正確性。當文件上傳與下載結束後,能夠經過quit命令退出。
嚴格按照以上步驟配置tftp服務,通常均可以成功。若是出現沒法get或者put的時候,能夠查看一下防火牆是否關閉。
安裝配置nfs服務器
在ubuntu下安裝、配置nfs服務的步驟以下:
一、安裝nfs
Ubuntu上默認是沒有安裝nfs服務器的,所以咱們首先安裝nfs服務器端:
$sudo apt-get install nfs-kernel-server
在一些文檔中,提出還須要使用apt-get來手動安裝nfs的客戶端nfs-common,以及端口映射器portmap,但其實這是沒有必要的,由於在安裝nfs-kernel-server時,apt會自動爲咱們把它們安裝好。
二、配置/etc/exports
nfs容許掛載的目錄及權限在文件/etc/exports中進行了定義。例如,咱們要將根目錄下的rootfs目錄共享出來,那麼咱們須要在/etc/exports文件末尾添加以下一行:/rootfs *(rw,sync,no_root_squash)
其中:/rootfs是要共享的目錄,*表明容許全部的網絡段訪問,rw是可讀寫權限,sync是資料同步寫入內存和硬盤,no_root_squash是nfs客戶端分享目錄使用者的權限,若是客戶端使用的是root用戶,那麼對於該共享目錄而言,該客戶端就具備root權限。
其它nfs經常使用的參數有:
ro 只讀訪問
rw 讀寫訪問sync 全部數據在請求時寫入共享
async nfs在寫入數據前能夠響應請求
secure nfs經過1024如下的安全TCP/IP端口發送
insecure nfs經過1024以上的端口發送
wdelay 若是多個用戶要寫入nfs目錄,則歸組寫入(默認)
no_wdelay 若是多個用戶要寫入nfs目錄,則當即寫入,當使用async時,無需此設置。
hide 在nfs共享目錄中不共享其子目錄
no_hide 共享nfs目錄的子目錄
subtree_check 若是共享/usr/bin之類的子目錄時,強制nfs檢查父目錄的權限(默認)
no_subtree_check 和上面相對,不檢查父目錄權限
all_squash 共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。
no_all_squash 保留共享文件的UID和GID(默認)
root_squash root用戶的全部請求映射成如anonymous用戶同樣的權限(默認)
no_root_squas root用戶具備根目錄的徹底管理訪問權限
anonuid=xxx 指定nfs服務器/etc/passwd文件中匿名用戶的UID
anongid=xxx 指定nfs服務器/etc/passwd文件中匿名用戶的GID
三、重啓服務
$sudo /etc/init.d/portmap restart
$sudo /etc/init.d/nfs-kernel-server restart
四、測試nfs
此時能夠運行如下命令來顯示一下共享出來的目錄:
$showmount -e
或者可使用如下命令把它掛載在本地磁盤上,例如將/rootfs掛載到/mnt下:
$ sudo mount -t nfs localhost:/rootfs /mnt
能夠運行df命令查看是否掛載成功。查看後可使用如下命令卸載:
$ sudo umount /mnt QT4向s3c2410平臺移植
1.開發平臺:ubuntu 8.10,交叉編譯器版本3.4.5(arm-linux-gcc),qt-embedded-linux-
opensource-src-4.4.3.tar.gz。
2.目標平臺:s3c2410,320*240觸摸屏 ,linux-2.6.26.5,u-boot-1.3.4
3.移植步驟以下:
(1)首先配置linux內核,支持LCD驅動,而後點亮你的屏,而且支持framebuffer,具體的內核配置以下:
Device Drivers ---> Graphics support ---> <*> Support for frame
buffer devices --->
<*> S3C2410 LCD
framebuffer support
固然裏面還涉及一些細節。
(2)若是你想支持USB鼠標和USB鍵盤,只需配置內核既可:
Device Drivers ---> [*] HID Devices ---> <*> USB Human Interface
Device (full HID) support (3)編譯內核進行測試。
(4)接下來在以上工做的基礎上開始移植QT4。首先下載源碼:
ftp://ftp.trolltech.no/qt/source/qt-embedded-linux-opensource-src-4.4.3.tar.gz,放在你普通用戶的一個目錄,好比/home/xxx/qt4_port,解壓。
(5)進入解壓好的目錄。 (6)而後就是很關鍵的配置,QT4的移植是經過配置來是否支持某種特性,好比openssl等等。那麼根據你本身的需求呢進行相應的配置就能夠了,這裏參考網站的一篇文章進行,具體以下:
./configure \
-prefix /home/yoyoili/qt4_port/qt/build \
//指定安裝的目錄,與開發板上運行的目錄一致
-release -shared \
-fast \
-pch \
-no-qt3support \
-qt-sql-sqlite \
-no-libtiff -no-libmng \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-no-openssl \
-nomake examples -nomake demos -nomake tools\
-optimized-qmake \
-no-phonon \
-no-nis \
-no-opengl \
-no-cups \
-no-xcursor -no-xfixes -no-xrandr -no-xrender -no-xkb -no-sm\
-no-xinerama -no-xshape \
-no-separate-debug-info \
-xplatform qws/linux-arm-g++ \
-embedded arm \
-depths 16 \
-no-qvfb \
-qt-gfx-linuxfb \
-no-gfx-qvfb -no-kbd-qvfb -no-mouse-qvfb\
-qt-kbd-usb \
-confirm-license \
-no-armfpa
這裏沒有去實現觸摸屏的校準,若是支持觸摸屏,再加一個: qt-mouse-tslib。
這個過程若是涉及不少問題,通常都是你的系統缺乏了某些庫的問題,個人ubuntu 8.10
相應的庫都安裝的比較齊全,沒有錯誤,若是你是fedroa,只須要徹底安裝。(7)而後就是make && make install,編譯和安裝了,若是好的話,就會在你的安裝目錄,也就是 /home/xxx/qt4_port/qt/build 有相應的以下目錄:bin include lib mkspecs plugins translations,你們能夠看看裏面的內容。這裏咱們關心的是一個lib,就是庫文件,之後交叉編譯好的程序在板子上跑起來之後都須要這些庫。把所須要的庫 cp /home/xxx/qt4_port/qt/build/lib/libQt* /home/xxx/w/rootfs/home/qt/build/lib,
固然有的庫你能夠不須要拷貝的。注:這裏/home/xxx/w/rootfs是目標機nfs掛載點 (8)而後拷貝顯示中文的文泉驛字體,這裏好比:cp /home/xxx/qt4_port/qt/build/lib/fonts/wenquanyi_160_75.qpf /home/xxx/w/rootfs/home/qt/build/fonts (前面的路徑就是編譯並安裝之後的目錄,這個字體就是這個目錄的lib/fonts下面 ,固然後面就是咱們開發板根文件系統的目錄) (9)測試,咱們用源碼自帶的程序來進行測試,好比在源碼的example裏有不少,只需qmake && make就能夠了,而後把可執行文件拷貝開發板上用的根文件系統。 (10)設置相應的環境變量,這個環境變量是給開發板使用的,不是給你的PC
機!具體以下:
export QTDIR=/home/qt/build
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH //(不然找不到庫)
export PATH=$QTDIR/bin:$PATH
export QT_QWS_FONTDIR=/home/qt/build/fonts // (不然字體沒法顯示)
固然若是你用觸摸屏還有相關的設置,你也須要在這裏添加! (11)運行咱們的程序:
./test -qws -fn /home/qt/build/fonts/wenquanyi_160_75.qpf
而後你的屏上就有了顯示。 (12)而後你能夠在開發板上插上你的USB鼠標就能夠來操做這個小QT程序了。
(13)若是你想玩鍵盤:
設置你的console=tty0既能夠操做你的開發板了,你就能夠玩命令了,那麼這個console
的參數的指定有兩種方法,一個能夠經過u-boot傳遞,這裏好比:setenv bootargs root
=/dev/nfs nfsroot=192.168.1.110:/home/yoyoili/source/rootfs ip=192.168.1.120
init=/linuxrc console=tty0,
另外一個就是經過內核,你只需配置內核既能夠:具體以下:
Boot options ---> (root=/dev/nfs nfsroot=192.168.1.2:/home/yoyoili/
source/rootfs ip=192.168.1.3 init=/linuxrc console=tty0)! (14)這裏說一下可能出現的問題:
1.在編譯你的QT程序的時候會有一個collect錯誤,應該是鏈接的qt4的庫不是arm
交叉編譯工具編譯的,二者鏈接有衝突。在file.pro中去掉對qt4
庫的鏈接便可,增長一行CONFIG -= qt,便可去掉。