嵌入式系統移植筆記(八) --製作rootfs
Linux核心啟動後,需要掛載根檔案系統。本章介紹檔案系統的製作過程,並且讓開發板通過網路遠端掛載nfs系統來驗證製作的rootfs。。
檔案系統格式
上面不同的檔案系統格式,有適合不同的應用場合。nfs rootfs,實際nfs是將伺服器端的目錄通過網路的形式共享出去,是把服務端檔案系統的一部分共享給了客戶端。在服務端,我們將rootfs製作好,放在這個目錄中,客戶端就可以獲取到rootfs。沒有必要將檔案系統格式化成某一種型別,極大地方便了開發除錯。
BusyBox
BusyBox 是在
享有“嵌入式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能掛載成功表示根檔案系統 內容基本正確