System V init啟動(dòng)過程
概括地講,Linux/Unix系統(tǒng)一般有兩種不同的初始化啟動(dòng)方式.
1) BSD system init
2) System V init
大多數(shù)發(fā)行套件的Linux使用了與System V init相仿的init也就是Sys V init,它比傳統(tǒng)的BSD systeminit更容易且更加靈活, System V init的主要思想是定義了不同的"運(yùn)行級(jí)別(runlevel)".通過配置文件/etc/inittab定義了系統(tǒng)引導(dǎo)時(shí)的運(yùn)行級(jí)別, 進(jìn)入或者切換到一個(gè)運(yùn)行級(jí)別時(shí)做什么.每個(gè)運(yùn)行級(jí)別對(duì)應(yīng)于一個(gè)子目錄/etc/rc.d/rc n.d.
以下是一個(gè)大致的System V init過程:
(1)init 過程執(zhí)行的第一個(gè)腳本是 /etc/rc.d/rc.sysinit , 它主要做在各個(gè)運(yùn)行級(jí)別中進(jìn)行初始化工作,包括: 啟動(dòng)交換分區(qū);檢查磁盤;設(shè)置主機(jī)名;檢查并掛載文件系統(tǒng);加載并初始化硬件模塊.
(2)執(zhí)行缺省的運(yùn)行級(jí)別模式
這一步的內(nèi)容主要在/etc/inittab中體現(xiàn), inittab文件會(huì)告訴init進(jìn)程要進(jìn)入什么運(yùn)行級(jí)別,以及在哪里可以找到該運(yùn)行級(jí)別的配置文件.
(3)執(zhí)行/etc/rc.d/rc.local腳本文件
這也是init過程中執(zhí)行的最后一個(gè)腳本文件,所以用戶可以在這個(gè)文件中添加一些需要在登錄之前執(zhí)行的命令.
(4)執(zhí)行/bin/login程序
Busybox init啟動(dòng)過程分析
它的init進(jìn)程主要進(jìn)行以下工作:
<*> 為init進(jìn)程設(shè)置信號(hào)處理進(jìn)程
<*>對(duì)控制臺(tái)進(jìn)行初始化
<*>解析/etc/inittab
<*>在默認(rèn)情況下,Busybox會(huì)運(yùn)行初始化腳本 /etc/init.d/rcS
當(dāng)init進(jìn)程對(duì)控制臺(tái)進(jìn)行初始化完成之后,Busybox會(huì)去檢查/etc/inittab文件是否存在,如果存在,就會(huì)解析該文件并執(zhí)行相應(yīng)的運(yùn)行級(jí)別.
Busybox支持的inittab格式如下所示:
id : runlevel : action : process
這里需要注意的一點(diǎn)是,Busybox所認(rèn)識(shí)的/etc/inittab的格式盡管與Sys Vinit非常相似,但其中的操作域id具有不同的含義.Busybox中的id用來指定啟動(dòng)的控制臺(tái),如果所啟動(dòng)的進(jìn)程不是可以交互的Shell,就可以空著id的操作域不用去填寫.
[需要注意]不論Busybox是否能找到inittab文件, Busybox下的init進(jìn)行執(zhí)行的第一個(gè)腳本都是/etc/init.d/rcS, 而不是Sys V init結(jié)構(gòu)下執(zhí)行的腳本文件/etc/rc.d/rc.sysinit.
聯(lián)系客服