前言:
作為一個合格的運維人員,系統的啟動過程我們需要牢記在心,此文不深入探討,只求大致理解CentOS6的啟動過程。
一張圖帶你了解CentOS6的啟動過程
注意:圖片放大查看效果更佳
上圖各階段詳解
POST:計算機開機時BIOS對其各硬件的簡單測試,測試各硬件的完整性
BootSqunce:加電自檢后根據用戶自己這次開機手動設置的接口或者BIOS默認設置依次檢查FirstBoot,SecondaryBoot…等定義的接口是否能引導系統啟動
MBR:Master Boot Record, 主引導記錄,是硬盤的第一個扇區,MBR中包含了Bootloader,分區表等重要信息。
Bootloader:引導程序,通過MBR中找到的Bootloader來引導系統,CentOS6中的Bootloader是Grub Legacy,其實這里的Bootloader只是整個Bootloader的Stage1,我們在后面進行說明
Kernel–>intramfs:通過Bootloader選擇內核,內核進行自解壓后,解壓initramfs加載額外驅動并將其以只讀的方式掛載為根分區。
/sbin/init:init程序是系統初始化程序,有著至關重要的作用,可以提供設置系統時間,檢測掛載文件系統等作用,我們會在后面進行詳細說明,系統初始化結束之后切換根分區
mingetty–>login:mingetty負責啟動虛擬終端,然后調用login程序供用戶登錄系統
CentOS6中的Bootloader
CentOS6默認使用Grub Legacy為Bootloader,一張圖帶你簡單了解Grub的啟動過程
注意:圖片放大查看效果更佳
上圖各階段詳解
stage1:MBR分區中的Bootloader只有256字節,這顯然并不能直接驅動我們的內核,其實MBR中的Bootloader只是Grub Legacy的stage1(第一階段),可以引導到存在Grub Legacy分區
stafe1_5:stage1并不知道Grub Legacy所在分區的驅動,所以在MBR后的扇區中有著一些常用的文件系統驅動可供stage1引導至stage2中
stage2:真正的Grub核心文件的存放位置,其中包含了Grub Legacy的配置文件,可通過stage2真正的加載內核
CentOS6中的init程序
其實在CentOS6中的init程序已經不是傳統的SysVinit(sysV系UNIX的init),采用了upstart代替SysV,但是CentOS6為了簡便管理員的操作,upstart的很多特性并沒有凸顯,例如:啟動服務在原生upstart系統中應該是initctl start JOB,但是CentOS6中并不支持,因為在CentOS6中的服務啟動腳本還是以原來SysV的形式提供的,所以我們采用SysV init的圖來講CentOS6的系統初始化過程。
注意:圖片放大查看效果更佳
上圖各階段詳解
/sbin/init:內核自解壓加載ramfs后啟動init開始初始化系統
/etc/rc.d/rc:通過讀取/etc/inittab和/etc/init.d/獲取相應運行級別和配置
/etc/rc.d/rc.sysinit:通過初始化腳本,完成系統初始化,例如:設置系統時間、檢測自動掛載文件系統、激活udev和SElinux….
/etc/rc.d/rc*.d/:在對應運行級別的目錄下,啟動S開頭的程序,關閉K開頭的程序
mingetty–>login:初始化完成后啟動虛擬終端,然后調用Login程序供用戶登錄
總結:
雖然寫的不是特別詳細,但是可以讓大家大致了解CentOS6的啟動過程,Grub legacy部分會抽空寫一篇相應博文來詳細敘述。
原創文章,作者:Net18-AnyISalIn,如若轉載,請注明出處:http://www.www58058.com/12765