分析根文件系统中的/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文件。

经验分享 程序员 微信小程序 职场和发展