構建基本的嵌入式Linux根檔案系統

來源:互聯網
上載者:User

標籤:http   os   使用   io   檔案   for   ar   資料   art   

配置tftp
配置tftp服務的步驟:
1、安裝相關軟體包:tftpd(服務端),tftp(用戶端),xinetd sudo apt-get install tftpd tftp xinetd
2、建立設定檔
在/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
}
儲存退出
3、建立tftp服務檔案目錄(上傳檔案與下載檔案的位置),並且更改其許可權
sudo mkdir /tftpboot
sudo chmod 777 /tftpboot -R
4、重新啟動服務
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服務的步驟如下:
1、安裝nfs
Ubuntu上預設是沒有安裝nfs伺服器的,因此我們首先安裝nfs伺服器端:
$sudo apt-get install nfs-kernel-server
在一些文檔中,提出還需要使用apt-get來手動安裝nfs的用戶端nfs-common,以及連接埠映射器portmap,但其實這是沒有必要的,因為在安裝nfs-kernel-server時,apt會自動為我們把它們安裝好。
  
2、配置/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
  
3、重啟服務
$sudo /etc/init.d/portmap restart
$sudo /etc/init.d/nfs-kernel-server restart
  
4、測試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。首先下載源碼:
放在你普通使用者的一個目錄,比如/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,即可去掉。
  2.如果出現這個問題:/lib/libQtCore.so: undefined reference to `clock_gettim 解決的辦法就是在Makefile裡的LFAGS後添加一個 -lrt就可以。
  3.有的人用的交叉編譯器是用的arm-softfloat-linux-gnu-gcc,所以在make編譯的時候老是提示arm-linux-gcc找不到,解決這個問題的辦法很多,一個方法就是重新製作你的交叉編譯器,修改arm-softfloat.dat(好像是這個)將裡面的TARGET修改為arm-linux就可以了,另一個方法就是修改QT4源碼的mkspecs/qws/linux-arm-g++目錄下修改qmake.config將arm-linux-gcc修改為arm-softfloat-linux-gcc,然後再make就行了。
  4.當然你可以用很多工具來編譯你的程式,比如qtcreator,kdevelop

 

更多精彩linux視頻教程,盡在51CTO學院:http://edu.51cto.com/course/courseList/id-48.html

構建基本的嵌入式Linux根檔案系統

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.