歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

System V init啟動與Busybox init啟動對比

System V init啟動過程

概括地講,Linux/Unix系統一般有兩種不同的初始化啟動方式.

1) BSD system init

2) System V init

大多數發行套件的Linux使用了與System V init相仿的init也就是Sys V init,它比傳統的BSD system init更容易且更加靈活, System V init的主要思想是定義了不同的"運行級別(runlevel)". 通過配置文件/etc/inittab定義了系統引導時的運行級別, 進入或者切換到一個運行級別時做什麼. 每個運行級別對應於一個子目錄/etc/rc.d/rc n.d.

以下是一個大致的System V init過程:

(1)init 過程執行的第一個腳本是/etc/rc.d/rc.sysinit , 它主要做在各個運行級別中進行初始化工作,包括: 啟動交換分區;檢查磁盤;設置主機名;檢查並掛載文件系統;加載並初始化硬件模塊.

(2)執行缺省的運行級別模式

這一步的內容主要在/etc/inittab中體現, inittab文件會告訴init進程要進入什麼運行級別,以及在哪裡可以找到該運行級別的配置文件.

(3)執行/etc/rc.d/rc.local腳本文件

這也是init過程中執行的最後一個腳本文件,所以用戶可以在這個文件中添加一些需要在登錄之前執行的命令.

(4)執行/bin/login程序

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.

BusyBox各版本下載 http://www.linuxidc.com/Linux/2011-08/40704.htm

Copyright © Linux教程網 All Rights Reserved