转自:http://blog.csdn.net/mybelief321/article/details/9896613
前面两节介绍了如何安装Busybox、C库,建立了 bin/、sbin/、usr/sbin、usr/bin、lib/等目录,最小根文件系统的大部分目录、文件已经建好。本节介绍剩下的部分,假设开发板的根文件系统在主机上的目录为/home/song/nfs_root/fs_mini。
一、构建 etc 目录
1、进入你的根文件系统在主机上的目录,创建一个 etc目录,如下
init 进程根据/etc/inittab 文件来创建其他子进程,比如调用脚本文件配置IP地址、挂接其他文件系统,最后启动shell等。
etc 目录下的内容取决于要运行的程序,本部分只需要创建3个文件:etc/inittab、etc/init.d/rcS、etc/fstab。
1、创建 etc/inittab 文件
执行命令:cd etc,进入你刚才创建的etc目录
执行命令:vim inittab,创建一个inittab文件
创建inittab文件,可以仿照BusyBox的examples/inittab文件,本节创建的内容如下
2、创建 etc/init.d/rcS 文件
执行命令:mkdir init.d,在当前etc目录下再创建一个init.d文件夹
执行命令:cd init.d,进入init.d文件夹
执行命令:vim rcS,创建一个rcS文件
这是一个脚本文件,可以在里面添加想自动执行的命令。以下命令配置IP地址、挂接/etc/fstab指定的文件系统。
第一行表示这是一个脚本文件,运行时使用 /bin/sh解析。
第二行用来配置IP地址。
第三行用来挂接/etc/fstab指定的所有文件系统。
最后,执行命令:chmod +x rcS,改变它的属性,使它能够执行。
3、创建 /etc/fstab 文件
执行命令:cd .. 返回上一级目录
执行命令:vim fstabz,创建fstab文件,该文件内容如下,表示执行“mount -a”命令后将挂接proc、tmpfs文件系统。
/etc/fstab 文件被用来定义文件系统的“静态信息”,这些信息被用来控制mount命令的行为。文件中各子段的意义如下。
① device:要挂接的设备。
比如/dev/hda2、/dev/mtdblock1等设备文件;也可以是其它格式,比如对于 proc 文件系统这个字段没有意义,可以是任意值;对于NFS文件系统,这个<host>:<dir>。
② mount-point:挂接点。
③ type:文件系统类型。
比如 proc、jffs2、yaffs、ext2、nfs等,也可以是auto,表示自动检测文件系统类型。
④ options:挂接参数,以逗号隔开。
/etc/fstab的作用不仅仅是用来控制“mount -a”的行为,即使是一般的mount命令也受它控制。
⑤ dump和fsck order:用来决定控制dump、fsck程序的行为。
dump是一个用来备份文件的程序。dump程序根据 dump 字段的值来决定这个文件系统是否需要备份,如果没有这个字段或其值为0,则dump程序忽略这个文件系统。
fsck是一个用来检查磁盘的程序。fsck程序根据fsck order字段来决定磁盘的检查顺序,一般来说对于根文件系统这个字段设为1,其他文件系统设为2。如果设为0,则fsck程序忽略这个文件系统。
二、构建 dev 目录
为了简单起见,本节使用最原始的方法处理设备:在 /dev 目录下创建各种节点(即设备文件)。当然还可以用 mdev 创建设备文件,这是韦老师书上的,我还不会哈!
4、执行命令:cd .. 返回上一级目录
5、执行命令:mkdir -p /home/song/nfs_root/fs_mini/dev ,创建dev目录
6、执行命令:cd dev,进入dev目录
7、在dev目录下先后执行以下命令
sudo mknod console c 5 1
sudo mknod null c 1 3
sudo mknod ttySAC0 c 204 64
sudo mknod mtdblock0 b 31 0
sudo mknod mtdblock1 b 31 1
sudo mknod mtdblock2 b 31 2
从系统启动过程可知,设计的设备有:/dev/mtdblock*(MTD块设备)、/dev/ttySAC*(串口设备)、/dev/console、/dev/null,只需要建立以上设备就可以启动系统。
注意:在一般系统中,ttySAC0的主设备号为4,但是在S3C2440、S3C2410所用的linux 2.6.22.6上,它们的串口号设备为204。
其他设备文件可以当系统启动后,使用 “cat /proc/devices” 命令查看内核中注册了哪些设备,然后一一创建相应的设备文件。
三、构建其他目录
其他目录可以是空目录,比如 proc、mnt、tmp、sys、root等。
8、执行命令:cd ..,进入上一级目录
9、执行命令: mkdir proc mnt tmp sys root 创建其他目录
现在,咱们这个/..../nfs_root/fs_mini 目录下就是一个非常小的根文件系统。开发板可以将它作为网络根文件系统直接启动。
如果要烧入开发板,还要将它制作为一个文件,称为映像文件。