啟動流程
Linux系統主要通過以下步驟啟動:
1、讀取MBR的信息,啟動Boot Manager
Windows使用NTLDR作為Boot Manager,如果您的系統中安裝多個版本的Windows,您就需要在NTLDR中選擇您要進入的系統。
Linux通常使用功能強大,配置靈活的GRUB作為Boot Manager,我們將在啟動管理章節中向您介紹它的使用方式。
2、加載系統內核,啟動init進程
init進程是Linux的根進程,所有的系統進程都是它的子進程。
3、init進程讀取“/etc/inittab”文件中的信息,並進入預設的運行級別,按順序運行該運行級別對應文件夾下的腳本。腳本通常以“start”參數啟動,並指向一個系統中的程序。
通常情況下,“/etc/rcS.d/”目錄下的啟動腳本首先被執行,然後是“/etc/rcN.d/”目錄。例如您設定的運行級別為3,那麼它對應的啟動目錄為“/etc/rc3.d/”。
4、根據“/etc/rcS.d/”文件夾中對應的腳本啟動Xwindow服務器“xorg”,Xwindow為Linux下的圖形用戶界面系統。
5、啟動登錄管理器,等待用戶登錄
Ubuntu系統默認使用GDM作為登錄管理器,您在登錄管理器界面中輸入用戶名和密碼後,便可以登錄系統。(您可以在“/etc/rc3.d/”文件夾中找到一個名為“S13gdm”的鏈接)
更改運行級別
在“/etc/inittab”文件中找到如下內容:
# The default runlevel.
id:2:initdefault:
這一行中的數字2,為系統的運行級別,默認的運行級別涵義如下:
0 關機
1 單用戶維護模式
2~5 多用戶模式
6 重啟
服務管理
a、更改啟動服務
在運行級別對應的文件夾中,您可以看到許多文件名以“S##”和“K##”起始的啟動腳本鏈接。
例如:
/etc/rcS.d/S35mountall.sh 掛載文件系統
/etc/rcS.d/S40networking 啟用網絡支持
/etc/rc2.d/S13gdm 啟動登錄管理器
/etc/rc2.d/S20makedev 創建設備文件
/etc/rc2.d/S23xinetd 啟動超級進程
init進程將以“start”為參數,按文件名順序執行所有以“S##”起始的腳本。腳本名稱中的數字越小,它將被越早執行。例如在“/etc/rc2.d/”文件夾中,“S13gdm”文件名中的數字小於 “S23xinetd”,“S13gdm”將比“S23xinetd”先執行。
如果一個腳本鏈接,以“K##”起始,表示它將以“stop”參數被執行。如果相應服務沒有啟動,則不執行該腳本。
例如:
/etc/rc2.d/K20powernowd 針對某種硬件的電源管理支持
如果您想禁止某一服務在啟動時自動運行,您可以將相應運行級別中的腳本由“S##xxx”重命名為“K##xxx”。