busybox的缺省init模式
當系統沒有/etc/inittab文件時,它有一套缺省的模式,按下面配置執行:
::sysinit:/etc/init.d/rcS
::askfirst:/bin/sh
::ctrlaltdel:/sbin/reboot
::shutdown:/sbin/swapoff -a
::shutdown:/bin/umount -a -r
::restart:/sbin/init
如果busybox檢測到/dev/console不是串口控制台,init還要執行下面的動作:
tty2::askfirst:/bin/sh
tty3::askfirst:/bin/sh
tty4::askfirst:/bin/sh
Busybox init啟動過程分析
它的init進程主要進行以下工作:
為init進程設置信號處理進程
對控制台進行初始化
解析/etc/inittab
在默認情況下,Busybox會運行初始化腳本 /etc/init.d/rcS
當init進程對控制台進行初始化完成之後,Busybox會去檢查/etc/inittab文件是否存在,如果存在,就會解析該文件並執行相應的運行級別.
Busybox支持的inittab格式如下所示:
id : runlevel : action : process
這裡需要注意的一點是,Busybox所認識的/etc/inittab的格式盡管與Sys V init非常相似,但其中的操作域id具有不同的含義.
Busybox中的id用來指定啟動的控制台,如果所啟動的進程不是可以交互的Shell,就可以空著id的操作域不用去填寫.
注意
不論Busybox是否能找到inittab文件, Busybox下的init進行執行的第一個腳本都是/etc/init.d/rcS, 而不是Sys V init結構下執行的腳本文件/etc/rc.d/rc.sysinit