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能挂載成功表示根檔案系統 内容基本正确