centos6系統啓動流程ios
啓動概要centos
關於centos6的系統啓動流程,咱們從通電開始大體探討網絡
首先咱們按下電源鍵,而後計算機硬件會讀取bios來加載硬件設備信息進行對計算機硬件的檢測這一過程就是計算機啓動的第一步,稱爲計算機的加電自檢(post),而後bios列出全部能夠啓動的裝置供用戶進行選擇,通常狀況下默認是硬盤啓動,選擇硬盤啓動後第一步加載mbr並啓動boot loader來識別並加載系統的核心文件,咱們系統的內核就是在這一步加載完成的,最後啓動init來準備軟件運行環境,其中包括網絡配置,文件系統格式等其餘服務,至此,咱們的系統基本啓動完畢。接下來咱們來按照順序分爲四大步來更深刻一步的探討centos6系統post
按下電源鍵後計算機的CMOS芯片開始通電,而後其上的BIOS程序根據CMOS上的配置信息讀取其餘硬件設備的信息並檢測是否能正常運行,檢測完畢後將這些硬件初始化ui
二.選擇啓動裝置,加載MBRthis
在硬件初始化後BIOS會根據啓動順序的設定,依次掃描各引導設備(多是光盤,硬盤,網絡等等),而後默認選則第一個具備引導程序的設備進行啓動不過咱們能夠在開機的加載界面(以下圖所示)按F2來進入BIOS選則咱們想要啓動的引導設備spa
這也是BIOS除了檢測硬件外的第二個功能,選則咱們要啓動的設備。在咱們選則設備後BIOS會讀取該設備上的MBR(存儲設備的前512字節,其中446位啓動信息,64位分區表和2位結束字符),爲下一步加載Boot Loader作準備操作系統
Boot Loader的主要功能就是去識別加載操做系統中的核心文件並提交到內存中運行,進而啓動操做系統。Boot Loader有不少種,而咱們的centos6中使用的是grub。grub分爲三個階段,其中第1階段的數據存在MBR的前446字節中,第1.5階段的數據位於/boot的磁盤分區中,第2階段的數據位於/boot/grub/grub.conf.code
如下是/boot/grub/grub.conf文件的內容blog
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-[generic-]version.img #boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title CentOS 6 (2.6.32-696.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-696.el6.x86_64 ro root=UUID=20d4ab9c-8374-4862-a3c3-ed650a224307 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet initrd /initramfs-2.6.32-696.el6.x86_64.img
第1階段BIOS讀取MBR,獲取grub的第一部分數據,這一階段用來引導後續的grub,並在這一階段依據當前磁盤的文件系統來判斷後續啓動過程當中應爲何文件系統。
第1.5階段根據第1階段判斷的文件系統類型來加載對應文件系統的驅動,爲第2階段加載核心文件作鋪墊。其中第1.5階段的驅動文件存與/boot/grub目錄下,每一個以「1_5」結尾的都是各種型文件系統對應的驅動,也所以稱爲1.5階段
因爲在這個階段爲止,計算機僅有文件系統的驅動程序,沒有磁盤的驅動,因此沒有辦法掛載,也就沒有辦法進一步的讀取磁盤中的數據,而咱們的許多配置文件,驅動都在磁盤上,所以計算機沒法啓動。而計算機的解決方法是經過int 13 中斷來啓用一個臨時的根文件系統。因此第2階段的第一步就是讀取配置文件/boot/grub/grub.conf,並依據該文件加載內核文件以及一個臨時的根文件系統。在這個階段計算機首先將內核文件解壓並讀入內存,再將一個臨時的根文件系統解壓並讀入內存這樣咱們在內存中就有了一個臨時的根文件系統,這樣咱們就能夠繼而加載磁盤等驅動程序。在加載完這些必要的文件後,內存釋放這個臨時的根文件系統,並以只讀的方式掛載咱們真正的根。到此爲止,grub的工做結束。
在掛載完根後執行/sbin/init文件,這個文件是全部進程的父進程,它會從grub接管系統的控制權,而後讀取/etc/inittab,/etc/init/*.conf,這些是它的配置文件,其中/etc/inittab告訴計算機要以哪個級別啓動系統(如下是系統運行的七個級別)
0-halt 關機
1-single user mode 單用戶維護模式
2-multi-user,without NFS 無網絡功能的文本模式
3-full-muliti-user mode 完整的文本模式
4-unused 系統保留,未使用
5-X11 啓動圖形界面
6-reboot 重啓
裝有圖形界面時通常默認級別爲5,未裝圖形界面默認爲3
以後讀取並執行/etc/rc.d/rc.sysinit來將系統初始化其中包括主機名,網絡配置,文件系統等,當/etc/rc.d/rc.sysinit執行完後計算機系統基本啓動完畢。