Linux系統主要通過以下步驟啟動:(參考版本:11.10)
1、讀取MBR的資訊,啟動Boot Manager
2、載入系統核心,啟動/sbin/init進程
init進程是Linux的根進程,所有的系統進程都是它的子進程。
3、init進程讀取“/etc/inittab”(註:新版本找不到此檔案)檔案中的資訊,並進入預設的運行層級,按順序運行該運行層級對應檔案夾下的指令碼:
/etc/init.d中儲存著可執行指令檔。/etc/rcS.d和/etc/rcN(0-9)中儲存有指令碼的連結檔案。
通常情況下,“/etc/rcS.d/”目錄下的連結檔案首先被執行,然後根據運行層級選擇N,執行“/etc/rcN.d/”目錄下的連結檔案。例如您設定的運行層級為3,那麼它對應的啟動目錄為“/etc/rc3.d/”。
連結檔案以K/S+兩位元字+指令碼名字方式命名,S/K代表指令碼啟動並執行參數為start/stop,兩位元字代錶鏈接檔案執行的優先順序。
註:此時執行的指令碼處於root使用者權限下。
註:如需增加自訂開機啟動指令碼,需要建立指令碼,拷貝到/etc/init.d目錄下,增加可執行屬性,並在對應的運行層級/etc/rcN.d目錄下按SXXScript的方式建立指令碼的連結檔案。系統還提供了對應的指令碼工具update-rc.d協助快速的建立和刪除連結檔案。(見附錄)
4、根據“/etc/rcS.d/”檔案夾中對應的指令碼啟動Xwindow伺服器“xorg”,Xwindow為Linux下的圖形化使用者介面系統。
5、啟動登入管理器,等待使用者登入
Ubuntu系統預設使用GDM作為登入管理器,您在登入管理器介面中輸入使用者名稱和密碼後,便可以登入系統。(您可以在“/etc/rc3.d/”檔案夾中找到一個名為“S13gdm”的連結)
此時將進入使用者權限。
附錄:update-rc.d用法
1) 將你的啟動指令碼複製到/etc/init.d目錄下
以下假設你的指令檔名為test。
2) 設定指令檔的許可權
$ sudo chmod 755 /etc/init.d/test
3) 執行如下命令將指令碼放到啟動指令碼中去:
$ cd /etc/init.d
$ sudo update-rc.d test defaults 95
註:其中數字95是指令碼啟動的順序號,按照自己的需要相應修改即可。在你有多個啟動指令碼,而它們之間又有先後啟動的依賴關係時你就知道這個數位具體作用了。該命令的輸出資訊參考如下:
update-rc.d: warning: /etc/init.d/test missing LSB informationupdate-rc.d: see
卸載啟動指令碼的方法:
$ cd /etc/init.d
$ sudo update-rc.d -f test remove
命令輸出的資訊參考如下:
Removing any system startup links for /etc/init.d/test … /etc/rc0.d/K95test /etc/rc1.d/K95test /etc/rc2.d/S95test /etc/rc3.d/S95test /etc/rc4.d/S95test /etc/rc5.d/S95test /etc/rc6.d/K95test