BusyBox Init启动过程

来源:互联网 发布:12369网络举报管理平台 编辑:程序博客网 时间:2024/05/29 11:19

使用busybox制作的文件系统,内核启动后,就会开始执行busybox init进程,这个和一般的sys v init一样。

busybox要完成以下工作:

init进程设置信号处理进程

②对控制台进行初始化

③解析inittab文件,即/etc/inittab

④在默认情况下会运行系统初始化脚本,/etc/init.d/rcS

⑤运行导致init暂停的inittab命令(动作类型wait)

⑥运行仅执行一次的inittab命令(动作类型once)

busybox源码目录下的/example/inittab文件中可以看到inittab的格式:

Format for each entry: <id>:<runlevels>:<action>:<process>

但是busybox不支持runlevels,所以该域会被忽略掉

<id>运行程序的控制台

<runlevels>运行级别,被忽略了

<action>动作类型

<process>程序名

其中动作类型包括:sysinit, respawn, askfirst, wait, once,restart, ctrlaltdel, shutdown,其作用如下:

sysinit:指定系统初始化脚本

respawn:在对应进程结束后马上启动此程序

askfirst:类似于respawn,但会在终端上显示”Please Enter to active this console”,用户回车后程序启动。

wait:指示init进程在执行完此命令行对应程序后才能再处理其他动作。

once:只执行一次,且不会等待完成

restart:init进程重新启动的时候执行的进程,实际上就是init本身。

ctrlaltdel:按下三个组合键后执行的程序

shutdown:关机时执行的程序

如果busybox没有找到inittab,那么它会使用默认配置,配置如下:

::sysinit:/etc/init.d/rcS

::askfirst:/bin/sh

::ctrlaltdel:/sbin/reboot

::shutdown:/sbin/swapoff -a

::shutdown:/bin/umount -a -r

::restart:/sbin/init

默认的终端是/dev/console,如果/dev/console不是实际终端,那么它就会去尝试tty2,tty3等。

::askfirst:-/bin/sh,加上一个-,不知道有什么用。

原创粉丝点击