今天试了下最小文件系统的制作,并成功通过nfs将文件系统挂载到开发板上,建立最小文件系统以下5点东西必不可少,
1、init 2、/dev/null 3、/dev/console 4、/etc/inittab 5、C库
1、编译busybox -》init
首先下载busybox工具,将其解压,修改MAKEFILE文件中的CROSS_COMPILE与ARCH
CROSS_COMPILE = arm-linux-
ARCH = arm
当然交叉编译环境要提前配好,安装方法请看busybox根目录中的INSTALL文件,如下
make menuconfig # This creates a file called ".config"
make # This creates the "busybox" executable
make install # or make CONFIG_PREFIX=/path/from/root install
第三条安装时注意要安装的目录为你的文件系统目录,例如我建立的最小文件系统目录为/mywork/rootfs/mini_fs
则使用命令:make CONFIG_PREFIX=/mywork/rootfs/mini_fsinstall
2、在经过第一步后在mini_fs得到以下文件和目录
/bin /sbin /usr linuxrc
进入mini_fs根目录,mkdir dev
mknod dev/console c 5 1
mknod dev/null c 1 3
3、mkdir etc
建立inittab文件写入,这是启动系统后会自动执行的脚本文件
:;sysinit:/etc/init.d/rcS
console::askfirst:-/bin/sh 这是用于终端打印的,必不可少的
启动系统后要执行的应用程序可在etc/init.d/rcS文件中配置,这是要执行的命令,写入
echo "----------mount all--------------"
mount -a #此命令依赖于fstab文件
ifconfig eth0 192.168.1.10
mdev -s #此命令依赖于fstab文件
echo "------------welcome--------------"
最后改成可执行文件chmod a+x rcS
建立/etc/fstab文件,这是要挂载的文件系统类型,内容如下
#device mount-point type options dump fsck order
proc /proc proc defaults 0 0
tmpfs /dev tmpfs defaults 0 0
sysfs /sys sysfs defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
4、拷贝C库
建立lib目录,将交叉工具链中的C库拷贝到文件系统中
cp ...../arm-none-linux-gnueabi/lib/*so* ...../mini_fs/lib -d
cp ..../arm-none-linux-gnueabi/sys-root/lib ...../mini_fs/lib -d
cp ..../arm-none-linux-gnueabi/sys-root/usr/lib ...../mini_fs/usr/lib -d
5、挂载文件系统
改变mini_fs的权限 chmod 777 -R mini_fs
修改/etc/exports 加上nfs服务器的导出目录mini_fs
重启nfs服务
修改开发板的bootargs,例如我的如下:
bootargs noinitrd init=/linuxrc console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.147:/mywork/rootfs/mini_fs ip=192.168.1.10:192.168.1.147:192.168.1.1:255.255.255.0::eth0:off
6、enjoy ^_^