嵌入式linux inittab解读

2019-07-12 20:06发布

文章转载自:http://bbs.chinaunix.net/thread-3637244-1-1.html BusyBox会检查/etc/inittab文件是否存在, 如果此文件不存在, BusyBox会使用缺省的inittab的配置。它主要会为系统重引
导,系统挂起以及init重启动设置缺省的动作。此外, 它还会为头四个虚拟控制台(/dev/tty1到/dev/tty4)设置启动shell的动作。
如果并未建立这些设备文件, BusyBox将会报错。
如果存在/etc/inittab文件, BusyBox会予以剖析, 并将其中的命令记录在内部的数据结构中, 以便适时执行。 BusyBox能
够识别的inittab文件格式, 在BusyBox套件附带的文档中有很好的说明。

inittab文件中的每一行的格式如下所示:
    id:runlevel:action:process
尽管此格式与传统的System V init类似, 但请注意,id在BusyBox的init中具有不同的意义。 对BusyBox而言, id用来指定
所启动进程的控制tty。如果所启动的进程并不是个可以交互的shell, 大可以将此字段空着不填。可以交互的shell, 例
如BusyBox的sh, 应该会有个控制tty。 如果控制tty不存在, BusyBox的sh将会报错。BusyBox将会完全忽略runlevel字段,
所以你可以将它空着不填。process字段用来指定执行程序的路径。包括命令行选项。action字段用来指定表6-6所列八个可应用到process的动作之一。

表6-6: BusyBox init能够识别的inittab动作类型
动作 结果
sysinit 为init提供初始化命令行的路径
respawn 每当相应的进程终止执行便重新启动
askfirst 类似respawn. 不过它的主要用途是减少系统上执行的终端应用程序的数量。它将会促使init在
控制台上显示:"Please press Enter to active this console."的信息, 并在重新启动进程之
前等待用户按下Enter键。
wait 告诉init必须等到相应的进程完成后才能继续执行
once 仅执行相应的进程一次,而且不会等待它完成。
ctrlaltdel 当按下Ctrl-Alt-Delete组合键时, 执行相应的进程。
shutdown 当系统关机时, 执行相应的进程
restart 当init重新启动时, 执行相应的进程。通常此处所执行的进程就是init本身。