一. 編譯安裝busybox
在busybox代碼安裝文檔裡有說明:
make menuconfig # This creates a file called ".config"
make # This creates the "busybox" executable
make install # or make CONFIG_PREFIX=/path/from/root install
1. 編譯busybox要注意,先要配置交叉編譯環境。
如果在make menuconfig裡沒有地方設定的話,可以修改Makefile原檔案, 加上arm-linux-字首。
CROSS_COMPILE ?= arm-linux-
2. 最後一步安裝時,注意要加上你要安裝的路徑,如果不加就會被安裝到系統裡去。
make CONFIG_PREFIX=/workspace/nfs_root install
安裝完後會生成以下一些東西:
/bin
/sbin
/usr
linuxrc
二. 安裝glibc庫
因為在交叉編譯器裡已經包含glibc庫了,我們直接把它全部拷貝進來。
cd ../gcc-3.4.5-glibc-2.3.6/arm-linux/lib$
cp *.so /home/s3c/workspace/nfs_root/lib -d
三. 建構根檔案系統
1. 先建立終端
mkdir dev
cd dev/
mknod console c 5 1 //建立終端裝置,c 為字元裝置,主裝置号為5,次裝置号為1
mknod null c 1 3
這樣就建立了dev/console 和 dev/null。
2. 建構 etc目錄
2.1 建立 etc/inittab 檔案
inittab格式如下:
# ::sysinit:/etc/init.d/rcS
# ::askfirst:/bin/sh
# ::ctrlaltdel:/sbin/reboot
# ::shutdown:/sbin/swapoff -a
# ::shutdown:/bin/umount -a -r
# ::restart:/sbin/init
22 建立 etc/init.d/rcS 檔案
在rcS裡可以加上自己想要啟動的腳本。
2.3 建立 etc/fstab 檔案
fstab格式如下:
proc /proc proc defaults 0 0
一般 mount -a 會讀取fstab檔案。
3. 建構dev目錄
3.1 使用 mdev 建立裝置檔案
mdev 是 udev 的簡化版,在 busybox 裡有說明和使用:
# Here's a typical code snippet from the init script:
#[1] mount -t sysfs sysfs /sys
#[2] echo /bin/mdev > /proc/sys/kernel/hotplug
#[3] mdev -s
# Of course, a more "full" setup would entail executing this before the previous
# code snippet:
#[4] mount -t tmpfs mdev /dev
#[5] mkdir /dev/pts
#[6] mount -t devpts devpts /dev/pts
3.2 靜态建立調備檔案
也就是手動建立。當然也可以從其它系統中拷貝過來,因為linux下都差不多。
4. 建構其它目錄
mkdir proc mnt tmp sys root
手動建立這些目錄。這樣一個小的根檔案系統就建立完成了。