CentOS6 X系統啟動流程

2022-08-18 07:09:11 字數 2556 閱讀 2385

1.硬體啟動階段

bios自檢

bios的功能由兩部分組成,

分別是post碼和runtime服務

。post階段完成後它將從儲存器中被清除,而runtime服務會被一直保留,用於目標作業系統的啟動。bios兩個階段所做的詳細工作如下:

步驟1:

上電自檢post(power-on self test),

主要負責檢測系統外圍關鍵裝置(如:cpu、記憶體、顯示卡、i/o、鍵盤滑鼠等)是否正常

。例如,最常見的是記憶體鬆動的情況,bios自檢階段會報錯,系統就無法啟動起來;

步驟2:

步驟1成功後,便會執行一段小程式用來列舉本地裝置並對其初始化。這一步

主要是根據我們在bios中設定的系統啟動順序來搜尋用於啟動系統的驅動器,如硬碟、光碟、u盤、軟盤和網路等

。我們以硬碟啟動為例,bios此時去讀取硬碟驅動器的第乙個扇區(mbr,512位元組),然後執行裡面的**。實際上這裡bios並不關心啟動裝置第乙個扇區中是什麼內容,它只是負責讀取該扇區內容、並執行。

至此,bios的任務就完成了,此後將系統啟動的控制權移交到mbr部分的**。

mbr引導

自檢硬體沒有問題時候,這裡以bios為例,bios將會直接去找硬碟是硬碟的0柱面,0磁軌、1扇區(第乙個扇區),稱為主引導扇區,也稱為主引導記錄,它由三部分組成:主引導程式(bootloader)、硬碟分割槽表dpt(disk partition table)和硬碟有效標誌(55aa)。

注:硬碟預設乙個扇區大小為512位元組。

第一部分,主引導程式(bootloader)佔446個位元組,負責從活動分割槽中裝載,並執行系統引導程式。

第二部分,硬碟分割槽表dpt佔64個位元組,有4個分割槽表項,每個分割槽表項佔16個位元組,硬碟中分割槽有多少以及每乙個分割槽的大小都記錄在其中。

第三部分,硬碟有效標誌,佔2個位元組,固定為55aa。如果這個標誌位0xaa55,就認為這個是mbr。

找到前446位元組,

將mbr載入到記憶體中

,mbr將告訴程式下一階段去**找系統grub引導。此階段屬於grub的第一階段。grub還有1.5階段和2階段。

2.grub啟動引導階段

grub的

主要作用是提供乙個選單,允許使用者選擇要啟動系統或不同的核心版本

,把使用者選定的核心裝載到記憶體的特定空間中,解壓展開,並把系統控制權移交給核心,

3.核心引導階段

簡單說一下這一步的流程:通過記憶體中的虛擬根檔案系統,載入驅動,然後切換到真正的根檔案系統,並執行/sbin/init程式。

由於init是第乙個執行的程式,

它的程序編號(pid)就是1。

其他所有程序都從它衍生,都是它的子程序。

4.系統初始化階段

簡單說一下這一步的流程:/sbin/init程式會讀取/etc/inittab檔案確認執行級別,然後執行/etc/rc.d/rc指令碼,根據確認的執行級別啟動對應/etc/rc.d/rc#.d/目錄下的服務(#為0~6),與此同時執行系統初始化指令碼/etc/rc.sysinit(軟鏈結,指向/etc/rc.d/rc.sysinit),還會載入/etc/rc.local(軟鏈結,指向/etc/rc.d/rc.local檔案)使用者自定義服務(指令碼)。

1、讀取/etc/inittab檔案

inittab檔案裡面定義了系統預設執行級別,這一步做了一些工作如下:

a)初始執行級別(run level)

b)系統初始化指令碼

c)對應執行級別的指令碼目錄

d)定義ups電源終端/恢復指令碼

e)在虛擬控制台生成getty,以生成終端

f)在執行級別5初始化x

2、執行/etc/rc.d/rc.sysinit程式

系統初始化一些指令碼,主要完成以下工作

a)設定主機名

b)設定歡迎資訊

c)啟用udev和selinux可以在grub.conf中,kernel行新增selinux=0以關閉selinux

d)掛載/etc/fstab檔案中定義的檔案系統

e)檢測根檔案系統,並以讀寫方式重新掛載根檔案系統

f)設定系統時鐘

g)啟用swap裝置

h)根據/etc/sysctl.conf檔案設定核心引數

i)啟用lvm及software raid裝置

j)載入額外裝置的驅動程式

k)清理操作

3、/etc/rc#.d/檔案(各種服務)

在不同的執行級別下,/etc/rc.d/rc這個指令碼會分別執行不同目錄下的指令碼

乙個數字代表乙個執行級別,共7個執行級別

裡面定義的是各種服務的啟動指令碼,可以ls檢視,

這些檔案其實都是軟鏈結,指向的都是/etc/rc.d/init.d/目錄下的檔案

4、/etc/rc.d/rc.local檔案

這裡面可以自定義開機啟動的命令。

5.啟動終端

完成了系統所有的啟動任務後,

linux會啟動終端或x-window來等待使用者登入

。tty1,tty2,tty3...這表示在執行等級1,2,3,4的時候,都會執行"/sbin/mingetty",而且執行了6個,所以linux會有6個純文字終端,mingetty就是啟動終端的命令。

CentOS6 X啟動流程

boot分割槽 啟動引導程式是預設可以識別boot分割槽的.因此在系統還無法載入硬碟的時候,boot分割槽是可以識別的 centos 6.x中使用initramfs記憶體檔案系統取代了centos 5.x中的initrd ram disk。他們的作用類似,可以通過啟動引導程式載入到記憶體中,然後載入...

CentOS 6 X啟動流程

boot分割槽 啟動引導程式是預設可以識別boot分割槽的.因此在系統還無法載入硬碟的時候,boot分割槽是可以識別的 centos 6.x中使用initramfs記憶體檔案系統取代了centos 5.x中的initrd ram disk。他們的作用類似,可以通過啟動引導程式載入到記憶體中,然後載入...

CentOS系統啟動流程

centos 6啟動流程 post boot sequence bios boot loader mbr kernel ramdisk rootfs readonly switchroot sbin init etc inittab,etc init conf 設定預設執行級別 執行系統初始化指令碼...