1. 準(zhǔn)備工作
下載busybox工具 說明:用于制作可執(zhí)行命令工具集
2. 開發(fā)環(huán)境
1)主機(jī):RedHat 9
2) 交叉編譯工具路徑:/usr/local/arm/3.3.2/ (用于編譯busybox1.2.0)
把/usr/local/arm/3.3.2/bin路徑添加到/etc/profile文件中
3)開發(fā)板:友善之臂SBC2410
4)開發(fā)板分別使用的Linux2.4.18內(nèi)核和Linux2.6.14內(nèi)核驗(yàn)證文件系統(tǒng)
3. 建立目標(biāo)板空根目錄文件夾及根目錄下的文件夾
[root@190 friendly-arm]# mkdir myroots
[root@190 friendly-arm]#pwd
/friendly-arm/myroots
[root@190 friendly-arm]#cd myroots
[root@190 myroots]#
[root@190 myroots]# mkdir bin sbin usr lib dev mnt opt root etc home proc tmp var
[root@190 myroots]# mkdir etc/init.d
進(jìn)入etc/init.d目錄下,建立一個腳本文件,并命名為rcS,用gedit打開,添加如下內(nèi)容:
#! /bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
#
# Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP
[root@190 myroots]# cd ../lib
也就是進(jìn)入lib目錄,添加相應(yīng)的庫文件,具體操作略。
4. 移植Busybox
進(jìn)入到壓縮文件存放的目錄下,并解壓。然后進(jìn)入解壓后的busybox目錄文件夾,隨后配置busybox 。
[root@190 busybox-1.2.0]# make menuconfig
執(zhí)行之后,將出現(xiàn)如下圖所示的配置界面:
由于每個版本的配置選項(xiàng)組織有所不同。不管怎樣,我們注意以下選項(xiàng)就行了:
1) Support for devfs
2) Build BusyBox as a static binary ( no shared libs ) //將busybox編譯成靜態(tài)鏈接
3) Do you want to build busybox with a Cross Compile?
(/usr/local/arm/3.3.2/bin/arm-linux-) Cross Compile prefix //指定交叉編譯器
4) init
5) Support reading an inittab file //支持init讀取/etc/inittab 配置文件
6) (X) ash選中ash //建立的rcS腳本才能執(zhí)行
7)ash
8)cp cat ls mkdir mv //可執(zhí)行命令工具的選擇,自己看著辦吧,需要用到的就選上
9) mount
10) umount
11) Support loopback mounts
12) Support for the old /etc/mtab file
13) insmod
14) Support version 2.2.x to 2.4.x Linux kernels
15) Support version 2.6.x Linux kernels
16) vi
以上內(nèi)容必須選上,其他可按默認(rèn)值;如果要支持其他功能,如網(wǎng)絡(luò)支持等,可按需選擇,英語不是很爛的話,這些都沒有問題。
配置好之后,保存退出。然后對其編譯和安裝到剛才建立的根文件系統(tǒng)目錄下:
[root@190 busybox-1.2.0] make TARGET_ARCH=arm CROSS=arm-linux- \ PREFIX=/friendly-arm/myroots/ all install
安裝好之后,將相應(yīng)的二進(jìn)制文件拷貝到根文件系統(tǒng)相應(yīng)的目錄下。
5. 制作yaffs文件系統(tǒng)包
[root@190 friendly-arm]# mkyaffsimage myroots myroots.img
6.下載根文件系統(tǒng)包到開發(fā)板上,并運(yùn)行,其結(jié)果如圖所示
7.補(bǔ)充
首先,本文檔制作的根文件系統(tǒng),是用mkyaffsimage打包成了yaffs鏡像文件,也可以使用其他打包工具制作成其他形式的根文件系統(tǒng),但必須是內(nèi)核要有相應(yīng)文件系統(tǒng)的支持,否則,將無法掛上根文件系統(tǒng)。
其次,我們可以根據(jù)項(xiàng)目需要,在相應(yīng)的目錄下,添加相應(yīng)的文件,并配置相應(yīng)的服務(wù)。如內(nèi)核動態(tài)加載模塊可放在lib下,在啟動腳本里掛載相應(yīng)的模塊;在etc目錄下,可移植tinyligin 登錄界面應(yīng)用程序,等等