- 論壇徽章:
- 0
|
配置tftp
配置tftp服務(wù)的步驟:
1、安裝相關(guān)軟件包:tftpd(服務(wù)端),tftp(客戶端),xinetd
sudo apt-get install tftpd tftp xinetd
2、建立配置文件
在/etc/xinetd.d/下建立一個(gè)配置文件tftp
sudo vi tftp
在文件中輸入以下內(nèi)容:
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
}
保存退出
3、建立tftp服務(wù)文件目錄(上傳文件與下載文件的位置),并且更改其權(quán)限
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot -R
4、重新啟動(dòng)服務(wù)
sudo /etc/init.d/xinetd restart
至此tftp
服務(wù)已經(jīng)安裝完成了,下面可以對其進(jìn)行一下測試。(假設(shè)在當(dāng)前目錄下有一個(gè)測試文件
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命令,可以把當(dāng)前目錄下的test.txt文件,通過tftp上傳到它的服務(wù)文件目錄。這時(shí),在/tftpboot下面會(huì)出現(xiàn)test.txt文件。通過get命令,可以從/tftpboot下,下載test.txt文件。這樣就驗(yàn)證了tftp服務(wù)配置的正確性。當(dāng)文件上傳與下載結(jié)束后,可以通過quit命令退出。
嚴(yán)格按照以上步驟配置tftp服務(wù),一般都可以成功。如果出現(xiàn)無法get或者put的時(shí)候,可以查看一下防火墻是否關(guān)閉。
安裝配置nfs服務(wù)器
在ubuntu下安裝、配置nfs服務(wù)的步驟如下:
1、安裝nfs
Ubuntu上默認(rèn)是沒有安裝nfs服務(wù)器的,因此我們首先安裝nfs服務(wù)器端:
$sudo apt-get install nfs-kernel-server
在一些文檔中,提出還需要使用apt-get來手動(dòng)安裝nfs的客戶端nfs-common,以及端口映射器portmap,但其實(shí)這是沒有必要的,因?yàn)樵诎惭bnfs-kernel-server時(shí),apt會(huì)自動(dòng)為我們把它們安裝好。
2、配置/etc/exports
nfs允許掛載的目錄及權(quán)限在文件/etc/exports中進(jìn)行了定義。例如,我們要將根目錄下的rootfs目錄共享出來,那么我們需要在/etc/exports文件末尾添加如下一行:/rootfs *(rw,sync,no_root_squash)
其中:/rootfs是要共享的目錄,*代表允許所有的網(wǎng)絡(luò)段訪問,rw是可讀寫權(quán)限,sync是資料同步寫入內(nèi)存和硬盤,no_root_squash是nfs客戶端分享目錄使用者的權(quán)限,如果客戶端使用的是root用戶,那么對于該共享目錄而言,該客戶端就具有root權(quán)限。
其它nfs常用的參數(shù)有:
ro 只讀訪問
rw 讀寫訪問sync 所有數(shù)據(jù)在請求時(shí)寫入共享
async nfs在寫入數(shù)據(jù)前可以響應(yīng)請求
secure nfs通過1024以下的安全TCP/IP端口發(fā)送
insecure nfs通過1024以上的端口發(fā)送
wdelay 如果多個(gè)用戶要寫入nfs目錄,則歸組寫入(默認(rèn))
no_wdelay 如果多個(gè)用戶要寫入nfs目錄,則立即寫入,當(dāng)使用async時(shí),無需此設(shè)置。
hide 在nfs共享目錄中不共享其子目錄
no_hide 共享nfs目錄的子目錄
subtree_check 如果共享/usr/bin之類的子目錄時(shí),強(qiáng)制nfs檢查父目錄的權(quán)限(默認(rèn))
no_subtree_check 和上面相對,不檢查父目錄權(quán)限
all_squash 共享文件的UID和GID映射匿名用戶anonymous,適合公用目錄。
no_all_squash 保留共享文件的UID和GID(默認(rèn))
root_squash root用戶的所有請求映射成如anonymous用戶一樣的權(quán)限(默認(rèn))
no_root_squas root用戶具有根目錄的完全管理訪問權(quán)限
anonuid=xxx 指定nfs服務(wù)器/etc/passwd文件中匿名用戶的UID
anongid=xxx 指定nfs服務(wù)器/etc/passwd文件中匿名用戶的GID
3、重啟服務(wù)
$sudo /etc/init.d/portmap restart
$sudo /etc/init.d/nfs-kernel-server restart
4、測試nfs
此時(shí)可以運(yùn)行以下命令來顯示一下共享出來的目錄:
$showmount -e
或者可以使用以下命令把它掛載在本地磁盤上,例如將/rootfs掛載到/mnt下:
$ sudo mount -t nfs localhost:/rootfs /mnt
可以運(yùn)行df命令查看是否掛載成功。查看后可以使用以下命令卸載:
$ sudo umount /mnt
QT4向s3c2410平臺移植
1.開發(fā)平臺:ubuntu 8.10,交叉編譯器版本3.4.5(arm-linux-gcc),qt-embedded-linux-
opensource-src-4.4.3.tar.gz。
2.目標(biāo)平臺:s3c2410,320*240觸摸屏 ,linux-2.6.26.5,u-boot-1.3.4
3.移植步驟如下:
(1)首先配置linux內(nèi)核,支持LCD驅(qū)動(dòng),然后點(diǎn)亮你的屏,并且支持framebuffer,具體的內(nèi)核配置如下:
Device Drivers ---> Graphics support ---> Support for frame
buffer devices --->
S3C2410 LCD
framebuffer support
當(dāng)然里面還涉及一些細(xì)節(jié)。
(2)如果你想支持USB鼠標(biāo)和USB鍵盤,只需配置內(nèi)核既可:
Device Drivers ---> HID Devices ---> USB Human Interface
Device (full HID) support
(3)編譯內(nèi)核進(jìn)行測試。
(4)接下來在以上工作的基礎(chǔ)上開始移植QT4。首先下載源碼:
ftp://ftp.trolltech.no/qt/source/qt-embedded-linux-opensource-src-4.4.3.tar.gz
,
放在你普通用戶的一個(gè)目錄,比如/home/xxx/qt4_port,解壓。
(5)進(jìn)入解壓好的目錄。
(6)然后就是很關(guān)鍵的配置,QT4的移植是通過配置來是否支持某種特性,比如openssl等等。那么根據(jù)你自己的需求呢進(jìn)行相應(yīng)的配置就可以了,這里參考網(wǎng)站的一篇文章進(jìn)行,具體如下:
./configure \
-prefix /home/yoyoili/qt4_port/qt/build \
//指定安裝的目錄,與開發(fā)板上運(yùn)行的目錄一致
-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
這里沒有去實(shí)現(xiàn)觸摸屏的校準(zhǔn),如果支持觸摸屏,再加一個(gè):
qt-mouse-tslib。
這個(gè)過程如果涉及很多問題,一般都是你的系統(tǒng)缺少了某些庫的問題,我的ubuntu 8.10
相應(yīng)的庫都安裝的比較齊全,沒有錯(cuò)誤,如果你是fedroa,只需要完全安裝。
(7)然后就是make && make install,編譯和安裝了,如果好的話,就會(huì)在你的安裝目錄,也就是 /home/xxx/qt4_port/qt/build 有相應(yīng)的如下目錄:bin include lib mkspecs plugins translations,大家可以看看里面的內(nèi)容。這里我們關(guān)心的是一個(gè)lib,就是庫文件,以后交叉編譯好的程序在板子上跑起來以后都需要這些庫。把所需要的庫
cp /home/xxx/qt4_port/qt/build/lib/libQt* /home/xxx/w/rootfs/home/qt/build/lib,
當(dāng)然有的庫你可以不需要拷貝的。注:這里/home/xxx/w/rootfs是目標(biāo)機(jī)nfs掛載點(diǎn)
(8)然后拷貝顯示中文的文泉驛字體,這里比如:cp /home/xxx/qt4_port/qt/build/lib/fonts/wenquanyi_160_75.qpf /home/xxx/w/rootfs/home/qt/build/fonts (前面的路徑就是編譯并安裝以后的目錄,這個(gè)字體就是這個(gè)目錄的lib/fonts下面 ,當(dāng)然后面就是我們開發(fā)板根文件系統(tǒng)的目錄)
(9)測試,我們用源碼自帶的程序來進(jìn)行測試,比如在源碼的example里有很多,只需qmake && make就可以了,然后把可執(zhí)行文件拷貝開發(fā)板上用的根文件系統(tǒng)。
(10)設(shè)置相應(yīng)的環(huán)境變量,這個(gè)環(huán)境變量是給開發(fā)板使用的,不是給你的PC
機(jī)!具體如下:
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 // (否則字體無法顯示)
當(dāng)然如果你用觸摸屏還有相關(guān)的設(shè)置,你也需要在這里添加!
(11)運(yùn)行我們的程序:
./test -qws -fn /home/qt/build/fonts/wenquanyi_160_75.qpf
然后你的屏上就有了顯示。
(12)然后你可以在開發(fā)板上插上你的USB鼠標(biāo)就可以來操作這個(gè)小QT程序了。
(13)如果你想玩鍵盤:
設(shè)置你的console=tty0既可以操作你的開發(fā)板了,你就可以玩命令了,那么這個(gè)console
的參數(shù)的指定有兩種方法,一個(gè)可以通過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,
另一個(gè)就是通過內(nèi)核,你只需配置內(nèi)核既可以:具體如下:
Boot options ---> (root=/dev/nfs nfsroot=192.168.1.2:/home/yoyoili/
source/rootfs ip=192.168.1.3 init=/linuxrc console=tty0)!
(14)這里說一下可能出現(xiàn)的問題:
1.在編譯你的QT程序的時(shí)候會(huì)有一個(gè)collect錯(cuò)誤,應(yīng)該是連接的qt4的庫不是arm
交叉編譯工具編譯的,兩者連接有沖突。在file.pro中去掉對qt4
庫的連接即可,增加一行CONFIG -= qt,即可去掉。
2.如果出現(xiàn)這個(gè)問題:/lib/libQtCore.so: undefined reference to `clock_gettim
解決的辦法就是在Makefile里的LFAGS后添加一個(gè) -lrt就可以。
3.有的人用的交叉編譯器是用的arm-softfloat-linux-gnu-gcc,所以在make
編譯的時(shí)候老是提示arm-linux-gcc
找不到,解決這個(gè)問題的辦法很多,一個(gè)方法就是重新制作你的交叉編譯器,修改arm-
softfloat.dat(好像是這個(gè))將里面的TARGET修改為arm-linux
就可以了,另一個(gè)方法就是修改QT4源碼的mkspecs/qws/linux-arm-g++目錄下修改qmake.
config將arm-linux-gcc修改為arm-softfloat-linux-gcc,然后再make就行了。
4.當(dāng)然你可以用很多工具來編譯你的程序,比如qtcreator,kdevelop
本文來自ChinaUnix博客,如果查看原文請點(diǎn):http://blog.chinaunix.net/u3/108299/showart_2151310.html |
|