分析根文件系统中的/etc/inittab文件
以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。
inittab文件在/etc目录下,属于运行时配置文件,是文本格式的(内容由一系列遵照某格式的字符组成)。/linuxrc执行时会解析inittab文件,根据解析到的内容来决定怎样工作。
一个简单的inittab文件的内容如下。
#first:run the system script file ::sysinit:/etc/init.d/rcS //sysinit表示控制台启动(命令行)之前执行,所以视频中会打印不能运行rcS,因为刚开始没有配置该文件 ::askfirst:-/bin/sh //askfirst促使按回车键 ::ctrlaltdel:-/sbin/reboot //ctrlaltdel表示按下ctrl和delet键,但在scrt中体现不了效果。 #umount all filesystem ::shutdown:/bin/umount -a -r #restart init process ::restart:/sbin/init
inittab内容是以行为单位的,行与行之间没有关联,每行都是一个独立的配置项。每行的配置项都是由3个冒号分隔开的4个配置值共同确定的,这四个配置值是id:runlevels:action:process。其中action是一个条件或者状态,process是一个指明路径的可执行程序,当满足action的条件时就会执行process这个程序。
由busybox的源代码可知,busybox最终进入一个死循环。在这个死循环中去反复检查是否满足各个action的条件,如果某个action的条件满足就会去执行对应的process。
当我们把使用busybox生成的sbin/、bin/目录拷贝到根文件系统文件夹里,然后创建etc目录,再在etc/ 目录下添加linuxrc文件,一个最小的根文件系统就完成了。这时候我们可以进入命令行,但可能提示找不到inittab文件里配置项提及的文件或者命令,这意味着还没有添加某些必需的文件。比如可能会提示缺失rcS文件。