一. 编译安装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
手动创建这些目录。这样一个小的根文件系统就创建完成了。