本文參考:《鳥哥的Linux私房菜》第二十章
Linux系統的啟動過程
- 加載BIOS的硬件信息與進行自我檢測,并依據設置取得第一可啟動的設備;
- 讀取并執行第一啟動設備內MBR的boot loader(grub,spfdisk等程序);
- 依據boot loader的設置加載kernel,kernel會自動檢測硬件與加載驅動程序;
- 在硬件驅動成功后,kernel會自動調用init進程,讀取/etc/inittab配置文件,init會取得run-level信息;
- init執行/etc/rc.d/rc.sysinit文件準備軟件執行的操作環境(如網絡、時區等);
- init執行run-level的各個服務的啟動(以script方式);
- init執行/etc/rc.d/rc.local文件;
- init執行終端模擬程序mingetty來啟動login進程,最后等待用戶登錄。
從上面的過程中可以看到,在系統啟動的過程中是需要讀取配置文件的。以下說明系統在啟動過程中讀取的文件及注意的地方:
Linux系統的啟動過程
- boot loader加載kernel的同時,也同時加載initrd(inital RAM disk虛擬文件系統);
- /etc/inittab是init進程第一個讀取的配置文件,從上到下分別定義了:系統默認的運行級別(id:N:initdefault,N為運行級別,下同)、系統軟件執行的環境的腳本執行文件(/etc/rc.d/rc.sysinit)、7個不同run level的script放置路徑(/etc/rc.d/rcN.d),啟動mingetty的6個終端機(tty1-tty6);
- /etc/rc.d/rc.local的讀取在/etc/rc.d/rcN.d最后一個進程S99local。S99local實際是一個符號鏈接,鏈接到/etc/rc.d/rc.local;
- 讀取配置文件或目錄的順序為:/etc/inittab,/etc/rc.d/rc.sysinit,/etc/rc.d/rcN.d,/etc/rc.d/rc.local。