1. 程式人生 > >嵌入式系統移植筆記(八) --製作rootfs

嵌入式系統移植筆記(八) --製作rootfs

Linux核心啟動後,需要掛載根檔案系統。本章介紹檔案系統的製作過程,並且讓開發板通過網路遠端掛載nfs系統來驗證製作的rootfs。。

 

檔案系統格式

上面不同的檔案系統格式,有適合不同的應用場合。nfs rootfs,實際nfs是將伺服器端的目錄通過網路的形式共享出去,是把服務端檔案系統的一部分共享給了客戶端。在服務端,我們將rootfs製作好,放在這個目錄中,客戶端就可以獲取到rootfs。沒有必要將檔案系統格式化成某一種型別,極大地方便了開發除錯。

 

BusyBox

http://www.busybox.net/

BusyBox 是在

GNU GPL 許可協議下發行的開源軟體

享有嵌入式Linux的瑞士軍刀美譽,Erik Andersen先生維護;Busybox是一個UNIX系統工具集,它將很多普通的UNIX工具整合到一個很小的可執行檔案中,為普通使用者提供大多數常用的命令;

BusyBox常用於製作linux命令

 

 

製作方法

參考華清遠見提供的資料

 

$ tar  xvf  busybox-1.22.1.tar.bz2

$ cd  busybox-1.22.1

$ make menuconfig

    Busybox Settings --->

  Build Options --->

  [*] Build BusyBox as a static binary (no shared libs)

  (arm-none-linux-gnueabi-) Cross Compiler prefix   注意 一定要指定交叉編譯工具

$ make

$ file busybox   確認編譯生成的是 ARM 平臺的(顯示為ELF 32-bit LSB executable, ARM)

$ make  install   安裝(預設安裝路徑為_install)

$ cd _install

$  ls

      bin  linuxrc  sbin  usr

$ mkdir  dev  etc  mnt  proc  var  tmp  sys  root       建立需要的目錄

$ cp -a ~/store/gcc-4.6.4/arm-arm1176jzfssf-linux-gnueabi/lib/ .   

$ du -mh lib     檢視lib庫的大小

$ rm  lib/*.a     裁剪,刪除掉靜態庫檔案 

$ arm-none-linux-gnueabi-strip  lib   裁剪掉除錯資訊   not recognized  有些庫是不能strip的 忽略掉

$ sudo rm  lib/libstdc++*   刪除不需要的庫,確保所有庫大小不超過4M 

$ du -mh lib    檢視lib庫的大小  可能 顯示3.4M lib   (這裡確保小於 8M)  

$ cp /nfs/rootfs/etc   -rf   .      拷入成熟的參考配置

$sudo mknod   dev/console  c  5  1      必須要有  console裝置節點

 

$ cd /nfs

$ mkdir rootfs

$ cp  _install/*   /nfs/rootfs   –a                       

$ chmod 777 /nfs/rootfs/          

 

板子上電啟動,觀察串列埠輸出。NFS能掛載成功表示根檔案系統 內容基本正確