一. 编译安装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-
- 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
也就是手动创建。当然也可以从其它系统中拷贝过来,因为linux下都差不多。
4. 构建其它目录
- mkdir proc mnt tmp sys root