飛凌課堂丨用busybox構建一個最小根文件系統
BusyBox是一個集成了三百多個最常用Linux命令和工具的軟件。
BusyBox包含了一些簡單的工具,例如ls、cat和echo等等,還包含了一些更大、更復雜的工具,例grep、find、mount以及telnet。有些人將BusyBox稱為Linux工具里的瑞士軍刀。
言歸正傳,我們直接進入正題!
busybox構建
首先我們需要下載busybox的源碼包,www.busybox.net官網可下載
1、busybox菜單的配置及其編譯
執行make menuconfig,出現busybox的配置界面,Busybox的編譯配置和Linux 內核編譯配置使用的命令是一樣的。
2、執行make編譯
Busybox的配置完成后,接下來我們開始編譯Busybox,執行make命令,開始編譯Busybox。由于使用的交叉編譯工具鏈的版本不同,有些版本可能會出現編譯錯誤。如果沒有提示錯誤,就可以進入下一步的安裝啦。
3、安裝make install
編譯完成后,接下來我們需要把編譯生成的“二進制文件”安裝到“../system”目錄里面,安裝二進制文件到“../system”目錄輸入命令“make install”進入“../system”目錄,可看到安裝的文件。
4、建立文件系統相關文件
進入ubuntu的根目錄,可以看到ubuntu的文件系統,執行ls可以看到:
實際上他們每個文件都有一些特殊性的用途,那么我們要制作一個文件系統也需要他們之中的必要文件夾或者文件,接下來我們將手動的去創建這些文件夾或者文件。
? 建立etc目錄
/etc放置的是一些配置文件,其不同的子文件夾下是對于不同功能的配置功能。
① 建立etc/inittab文件
文件系統初始的配置文件,每次進入文件系統時讀取該文件,執行該文件所規定的命令,這里只需要在win系統下打開busybox的源碼包里的example/inittab的文件復制出來修改一下就可以。
修改內容為可為:
# /etc/inittab
::sysinit:/etc/init.d/rcS
::askfirst:-/bin/sh
# Stuff to do before rebooting
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
② 建立etc/init.d/rcS文件
同樣的參考busybox的源碼包里的examples/bootfloppy/etc/init.d/rcS文件
內容定義為:
#!/bin/sh
mount –a
mkdir /dev/pts
mount -t devpts /dev/pts
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev -s
? 建立dev設備文件
使用 mdev 建立設備文件,medv 的使用方法在 doc/medv.txt 上有說明。
? 建立其他目錄
mkdir proc/ mnt/ tmp/ sys/ root/
5文件系統的掛載
① 為了確保文件系統可以正確的被掛載,必須設置允許服務器去掛載文件系統,為此,首先需要設置服務器的/etc/exports的內容,在exports文件里面加上:/work/root *(rw,sync,no_root_squash)。然后重啟一下nfs服務器
② 假設nand已經燒寫有文件系統平且已經進入文件系統主要在用mount命令掛載nfs就可以,在板子的文件系統下建立一個mnt的文件夾mkdir /mnt 然后mount –t nfs –o nolock 192.168.1.110:/work/root /mnt。然后save,設置完成后。
重啟開發板就可以了。