CentOS 6 系統啓動流程

CentOS 6中所採用的Bootloader程序爲grubinitupstart。開機啓動的大致流程圖如下:


wKiom1XpkKLCXmIQAACFSvUYM98739.jpg 

步驟圖分解如下:

1、加電自檢,當按下電源時,計算機通過BIOS去加載CMOS的信息,取得主機的各項硬件配置,並會進行硬件檢測和硬件初始化。

 

2BIOS根據Boot Sequence(設備啓動次序)取得第一個可啓動設備。按次序查找,如果當前設備沒有MBR時,跳過當前設備查找下一個設備,直到找到含有MBR的設備。如果MBR出現損壞等故障,啓動則會失敗,且不會繼續往下查找可引導的設備。否則,進行下一步操作。

 

3BIOS會讀取選定設備的MBR中的信息,並加載Bootloader。只要BIOS能識別硬盤,就可以通過硬件的INIT 13中斷功能讀取硬盤設備的第一個扇區內的MBR

       由於根據MBR的結構Bootloader佔據了446字節,而存儲在MBR中的bootloader代碼因此受到了限制,爲了解決這個問題,bootloader將功能切割成幾個部分,因此MBR中只存儲了bootloader的主程序,配置相關文件則存儲在文件系統中。

       grup的功能由三個模塊完成:Stage1Stage1_5Stage2Stage1即存儲在MBR中的BootloaderStage1_5存儲在MBR後面的扇區中,而Stage2則一般存儲於文件系統中,/boot目錄下。Stage1Stage1_5所要完成的任務是去加載Stage2Stage2纔是功能實現的模塊。Stage1並不能識別文件系統,因此需要加載Stage1_5,而Stage1_5具備識別文件系統的功能,因此可以到文件系統中加載Stage2模塊。注意:當Stage1可以識別Stage2固定存儲的物理空間時,不需要通過Stage1_5就可以直接加載Stage2

Stage2加載相關的配置文件後,實現的功能如下:

  • 提供選擇菜單,並提供交互式接口。

用戶可以選擇不同的啓動選項,可實現多重引導功能;碼。

  • 加載內核文件(或initramfs

直接指向內核文件所在的位置來開始啓動操作系統。

  • 轉交其他loader

將引導功能移交給其他的loader負責。

 

4kernel被加載到內存後開始進行自身初始化,主要操作爲:探測可識別到的所有硬件設備並加載相應的硬件驅動;安全起見,以只讀方式掛載根文件系統, (等到啓動完成,各項功能正常,再重新以讀寫方式掛載);調用用戶空間的第一個應用程序/sbin/init 。

   因爲kernel無法識別磁盤,所以要藉助initramfs的獲取磁盤的驅動程序。 initramfs類似一個精簡的內核,裏面包含了啓動過程中所需要的模塊(在安裝系統的時候確定了需要哪種硬盤驅動,也一併集成到initramfs中)。initramfs需不需要被加載取決於kernel能否識別磁盤,一般來說需要init的時刻爲:

  •   根目錄所在磁盤爲SATASCSISASUSB等接口,IDE除外

  •   根目錄所在文件系統爲LVMRAID等格式

  •   其他必須在內核加載時就提供的模塊

   

5init最主要的功能是準備軟件執行的環境,調用執行相關腳本文件來實現,

      如/etc/inittab、/etc/init/*.conf等

  •  獲取默認運行級別,/etc/inittab

  •  系統初始化,/etc/rc.d/rc.systinit

  •  關閉或啓動對應級別下的服務,並啓動啓動終端等,/etc/init/*.conf與/etc /rc.d/rc#.d


/etc/rc.d/rc.sysinit初始化時所進行的操作

(1) 設置主機名

(2) 設置歡迎信息

(3) 激活udev和selinux

(4) 掛載/etc/fstab文件中定義的文件系統

(5) 檢測根文件系統,並以讀寫方式重新掛載根文件系統

(6) 設置系統時鐘

(7) 激活swap設備

(8) 根據/etc/sysctl.conf文件設置內核參數

(9) 激活lvm及software raid設備

(10) 加載額外設備的驅動程序

(11) 清理操作

 

 

 

 

 

 

 

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章