1. 程式人生 > >Linux系統的啟動過程

Linux系統的啟動過程

系統啟動過程?

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