Linux系統的啟動過程
阿新 • • 發佈:2018-11-28
系統啟動過程?
POST->BIOS(boot sequence)->GRUB Stage1(MBR-bootloader)->GRUB Stage2(/boot/grub/grub.conf)->kernel, initramfs->/sbin/init->/etc/inittab->/etc/rc.d/rc.sysinit->/etc/rc.d/rc(/etc/rc.d/rcN.d/{K* S*})
1. 第一步 加電自檢,檢查硬體是否正常工作,如果正常,就會根據預先定義好的啟動次序去指定的裝置上依次查詢MBR 2. 第二步 通過裝置中的MBR中的前446位元組可以獲取到bootloader程式 bootloader有兩種型別 早期LILO 流行GRUB 0.X 1.X 這裡找到並執行bootloader,其實執行grub的第一階段,通過grub state1可以找到磁碟上的一個特定分割槽中的grub stage2,在stage2的配置檔案中就指定了核心和臨時檔案系統的位置,這樣就通過bootloader找到了核心 3. 第三步 將找到的核心裝載入記憶體中,並執行,同時將臨時檔案系統在記憶體中展開,將一部分記憶體空間臨時作為磁碟來使用,這樣在記憶體中就有一個完整的、臨時的檔案系統,核心可從這個臨時檔案系統中獲取到所需要的驅動程式,那麼核心就可以嘗試執行/sbin/init發起第一個使用者空間程序 4. 第四步 通過init生成第一個使用者空間程序,同時會去讀取配置檔案/etc/inittab 以及 /etc/rc.d/rc.sysinit 來完成設定系統執行級別,以及其他的系統初始化功能 執行級別有
C5\C6:執行級別
0:關機
1:單使用者模式級別:通常用於進行系統的修復
2:不帶網路的字元級別
3:字元級別
4:保留級別
5:圖形級別
6:重啟
檢視級別:
runlevel
who -r
臨時切換級別
init NUM
1. 關機 init 0
2. 重啟 init 6
3. 切換到圖形介面 init 5
4. 切換到字元介面 init 3
修改系統的預設級別
修改init的配置檔案/etc/inittab
init–/etc/inittab
1. 定義系統的預設執行級別 2. 定義系統初始化指令碼(rc.sysinit) 3. 實現程式的開機自動啟動
rc.sysinit的功能
設定主機名
設定系統時鐘
設定鍵盤對映
啟用swap
啟用selinux/iptables
掛載 /etc/fstab中所定義的外部裝置
啟用raid、lvm