CentOS6啟動流程
CentOS6啟動流程
1.加載BIOS的硬件信息,獲取第一個啟動設備
在通電之後,CentOS6會進行加電自檢(Power On Self Test),這個過程主要是由BIOS完成的。在自檢完畢,會檢查啟動設備。
2.讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息
在檢測到啟動設置之後,會讀取第一個可啟動設備MBR(Main Boot Record)中grub的啟動信息。 主引導扇區,由MBR(主引導記錄,占446byte)、磁盤分區表(DPT,占64Byte)和結束標誌(占2Byte)三部分構成。在這一過程中就是讀取grub中的啟動信息。
3.加載核心操作系統的核心信息,核心開始解壓縮,並嘗試驅動所有的硬件設備
加載grub程序,從而初始化硬件設備、建立內存空間的映射圖。為最終調用操作系統內核做好一切準備。
grub屬於Boot Loader中的一種, 其他的loader還有Lilo和spfdisk等。
4.核心執行init程序,並獲取默認的運行信息
根據grub設定的內核映像所在路徑,系統讀取內存映像,並進行解壓縮操作。
系統將解壓後的內核放置在內存之中,並調用start_kernel()函數來啟動一系列的初始化函數並初始化各種設備,完成Linux核心環境的建立。至此,Linux內核已經建立起來了,基於Linux的程序應該可以正常運行了。
5.init程序執行/etc/rc.d/rc.sysinit文件
內核被加載後,第一個運行的程序便是/sbin/init,該文件會讀取/etc/inittab文件,並依據此文件來進行初始化工作。
其實/etc/inittab文件最主要的作用就是設定Linux的運行等級,其設定形式是“:id:5:initdefault:”,這就表明Linux需要運行在等級5上。Linux的運行等級設定如下:
0:關機
1:單用戶模式
2:默認不支持NFS的多用戶模式
3:多用戶模式
4:保留,未使用
5:有網絡支持有X-Window支持的多用戶模式
6:重新引導系統,即重啟
除了設置運行等級之外,在該腳本中,還做了一下操作:
(1) 設置主機名
(2) 設置歡迎信息
(3) 激活udev和selinux
(4) 掛載/etc/fstab文件中定義的文件系統
(5) 檢測根文件系統,並以讀寫方式重新掛載根文件系統
(6) 設置系統時鐘
(7) 激活swap設備
(8) 根據/etc/sysctl.conf文件設置內核參數
(9) 激活lvm及software raid設備
(10) 加載額外設備的驅動程序
(11) 清理操作
6.啟動核心的外掛模塊
依據/etc/modules.conf文件或/etc/modules.d目錄下的文件來裝載內核模塊
7.init執行運行的各個批處理文件(scripts)
根據運行級別的不同,系統會運行rc0.d到rc6.d中的相應的腳本程序,來完成相應的初始化工作和啟動相應的
8.init執行/etc/rc.d/rc.local
在一切初始化工作後,執行該腳本。Linux留給用戶進行個性化的地方,需要進行初始化的文件可以放在此處。
9.執行/bin/login程序,等待用戶登錄
在該階段,用戶可以使用用戶名和密碼登錄。
10.登錄之後開始以Shell控制主機
CentOS6啟動流程