centos6啓動流程

系統啓動流程linux

 

 

     系統的啓動時一項很是複雜的過程,內核須要檢測硬件並加載驅動程序,接着調用相關程序爲系統運行準備好環境。下面以centos6爲例,說明系統的啓動過程。centos

1   post網絡

當咱們按下開機的電源後,主板上的芯片組會首先向CPU發出一個指令,CPU就會跳轉到BIOS中的啓動代碼位置; BIOS首先要檢測關鍵設備(如內存、顯卡等)是否正常,這個過程就稱爲POST(加電後自檢)。ide

2   boot sequence(BIOS)post

引導次序:按次序找引導設備,第一個有引導程序的設備,即爲啓動所用到的設備。spa

3  MBR(Bootloader)orm

MBRMater Boot Record),即主引導記錄,其位置在硬盤第一個扇區的前512字節。。它由三個部分組成,主引導程序(Bootloader)硬盤分區表DPTDisk Partition table)和硬盤有效標誌(55AA),其結構圖以下所示:blog

 

如今經常使用的Bootloader程序爲GRUBGRUBGrand Unified Bootloader)是由GNU組織所推行的;CentOS 5CentOS 6上使用的版本爲Grub 0.97進程

GRUB是位於/boot下的一個目錄,其裏面的內容以下圖:圖片

 

wKiom1YNIEDxl4dyAAFD74n6hcg187.jpg

從上圖中能夠看到stage1 *_stage1_5stage2這三類文件,它們分別表示GRUB引導時的三個階段。stage1執行Bootloadergrub目錄中存在許多以stage1_5結尾的文件,這些文件都是stage1_5階段功能的文件,裏面存放着文件系統的格式,其做用是鏈接stage1stage2的一個通道。stage2階段會讀取grub.conf配置文件中設置信息來完成系統的引導,加載內核

4  加載內核及initrd

   stage2被載入內存執行時,它首先會去解析grub的配置文件/boot/grub/grub.conf,而後加載內核鏡像到內存中,並將控制權轉交給內核,而內核會當即初始化系統中各設備並作相關的配置工做。

關於Linux的設備驅動程序的加載,有一部分驅動程序直接被編譯進內核鏡像中,另外一部分驅動程序則是以模塊的形式放在initrd(ramdisk)中。Initrd稱爲虛擬文件系統,它是激活系統所必須加載的文件系統。當kernel被載入到內存後,須要加載相應驅動程來識別文件系統,這時initrd就充當了臨時的系統被掛載到rootfs上,其做用就是協助kernel來加載驅動程序。initrd加載各類存儲介質相關的設備驅動程序。當所需的驅動程序加載完後,會建立一個根設備,而後將根文件系統rootfs以只讀的方式掛載。這一步結束後,釋放未使用的內存,轉換到真正的根文件系統上面去,同時運行/sbin/init程序,執行系統的1號進程。此後系統的控制權就全權交給/sbin/init進程了。

5  init進程

/sbin/init進程是系統其餘全部進程的父進程,當它接管了系統的控制權先以後,它首先會去讀取/etc/inittab文件來執行相應的腳本進行系統初始化, inittab內有個重要的選項就是運行級別runlevelinit進程會讀取/etc/inittab中定義的運行級別,作相應的配置。runlevel0-67個級別,分別是:

 0-halt關機

1-single user mode      單用戶維護模式

2-multi-userwithout NFS        無網絡功能的文本模式

3-full-muliti-user mode        完整的文本模式

4-unused            系統保留,未使用

5-X11                   啓動圖形界面

6-reboot            重啓

裝有圖形界面時通常默認級別爲5,未裝圖形界面默認爲3

利用/etc/rc.d/rc.sysint初始化

1、設定主機名:讀取/etc/sysconfig/network文件中的HOSTNAME參數,並以之設定主機名;

    2、打印文本歡迎信息;    

    3、激活SElinuxudev;

    4、掛載/etc/fstab文件中定義的文件系統;

    5、激活swap;

    6、檢測根文件系統,並以讀寫方式從新掛載;

    7、設置系統時鐘;

    8、根據/etc/sysctl.conf的文件設置設置內核參數;

    9、激活LVMRAID設備;

10、加載額外設備的驅動程序;

11、清理工做。

7 init執行選定的runlevel級別的相關服務的啓動

/etc/rc.d/rc.sysinit執行完後,系統就能夠順利工做了,只是還須要啓動系統所須要的各類服務,這樣主機才能夠提供相關的網絡和主機功能,完成了系統全部的啓動任務後,linux會啓動終端或X-Window來等待用戶登陸,至此,系統就啓動完畢了。

相關文章
相關標籤/搜索