构造根文件系统三之构建etc、dev等剩余目录

时间:2021-04-27 16:33:05

   前面两节介绍了如何安装Busybox、C库,建立了 bin/、sbin/、usr/sbin、usr/bin、lib/等目录,最小根文件系统的大部分目录、文件已经建好。本节介绍剩下的部分,假设开发板的根文件系统在主机上的目录为/home/song/nfs_root/fs_mini。

一、构建 etc 目录

1、进入你的根文件系统在主机上的目录,创建一个 etc目录,如下

  构造根文件系统三之构建etc、dev等剩余目录

   init 进程根据/etc/inittab 文件来创建其他子进程,比如调用脚本文件配置IP地址、挂接其他文件系统,最后启动shell等。

   etc 目录下的内容取决于要运行的程序,本部分只需要创建3个文件:etc/inittab、etc/init.d/rcS、etc/fstab。

1、创建  etc/inittab 文件

   执行命令:cd etc,进入你刚才创建的etc目录

   执行命令:vim inittab,创建一个inittab文件

  构造根文件系统三之构建etc、dev等剩余目录

   创建inittab文件,可以仿照BusyBox的examples/inittab文件,本节创建的内容如下

  构造根文件系统三之构建etc、dev等剩余目录

2、创建 etc/init.d/rcS 文件

  执行命令:mkdir init.d,在当前etc目录下再创建一个init.d文件夹

  执行命令:cd  init.d,进入init.d文件夹

  执行命令:vim rcS,创建一个rcS文件

  构造根文件系统三之构建etc、dev等剩余目录

 这是一个脚本文件,可以在里面添加想自动执行的命令。以下命令配置IP地址、挂接/etc/fstab指定的文件系统。

  构造根文件系统三之构建etc、dev等剩余目录

 第一行表示这是一个脚本文件,运行时使用 /bin/sh解析。

 第二行用来配置IP地址。

 第三行用来挂接/etc/fstab指定的所有文件系统。

 最后,执行命令:chmod +x rcS,改变它的属性,使它能够执行。

 构造根文件系统三之构建etc、dev等剩余目录

3、创建 /etc/fstab 文件 

  执行命令:cd .. 返回上一级目录

  执行命令:vim fstabz,创建fstab文件,该文件内容如下,表示执行“mount -a”命令后将挂接proc、tmpfs文件系统。

  构造根文件系统三之构建etc、dev等剩余目录

  构造根文件系统三之构建etc、dev等剩余目录

  /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目录

  构造根文件系统三之构建etc、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

  构造根文件系统三之构建etc、dev等剩余目录

  从系统启动过程可知,设计的设备有:/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  创建其他目录

  构造根文件系统三之构建etc、dev等剩余目录

  现在,咱们这个/..../nfs_root/fs_mini 目录下就是一个非常小的根文件系统。开发板可以将它作为网络根文件系统直接启动。

  如果要烧入开发板,还要将它制作为一个文件,称为映像文件。下一节将介绍制作使用 yaffs文件系统映像文件,未完,正在写..........