CentoOS 系統的啓動流程

簡介:

   作爲一個Linux運維工程師,必須要熟悉Linux系統的啓動流程,才能在Linux系統出現故障時及時地發現問題,解決問題;下面將爲大家介紹一下CentOS系統的系統啓動流程。

CentOS啓動流程

CentoOS 系統的啓動流程

  根據上圖所示,centos系統總體可分爲5個階段:POST加電自檢—BOOT啓動引導階段—Grub啓動引導階段—Kernel初始化階段—進程引導階段(init)。

一. POST加電自檢
此階段是所有操作系統都必須的階段,就是設備開機,主板硬件檢測的階段,

二. BOOT啓動引導階段
當硬件自檢沒有問題之後,BIOS會按照次序查找各個引導設備,第一次有引導程序的設備,即爲本次啓動要用到的設備,一般爲磁盤的第一個扇區,上面有MBR的系統引導加載器,MBR爲用戶提供了一個菜單,允許用戶選擇要啓動的系統或不同的內核版本,把用戶選定的內核裝載到RAM中的特定空間中,進行解壓、展開,而後把系統控制權移交給內核。
而MBR的引導程序可分爲三個部分,前446個字節爲BootLoader的引導程序,複製引導啓動操作系統;中間的64個字節爲分區表,每16自己標識一個分區,一共只能有4個分區,分別爲3個主分區和1個拓展分區;最後的2個自己爲MBR區域的有效性標識,一般標識爲55AA即有效

三. Grub啓動引導階段
GRUB(GRand Unified Bootloader簡稱“GRUB”)是一個來自GNU項目的多操作系統 啓動程序。GRUB是多啓動規範的實現,它允許用戶可以在計算機內同時擁有多個操作系統,並在計算機啓動時選擇希望運行的操作系統。GRUB可用於選擇操作系統分區上的不同內核,也可用於向這些內核傳遞啓動參數。
GRUB可分爲兩個版本,grub 0.x稱爲grub legacy;grub 1.x稱爲grub2。CentOS 6之前的系統一般爲grub legacy,配置文件的路徑爲/boot/grub/grub.conf或/etc/grub.conf,CentOS 7 爲grub2,配置文件的路徑爲/boot/grub2/gurb2.cfg或者/etc/grub2.cfg

 Grub的引導可以分爲三步:
    Stage 1:mbr引導
    Stage 1_5:mbr之後的扇區,讓stage1中BootLoader能識別stage2所在分區上的文件系統
    Stage 2:將主引導程序載入磁盤分區中(CentOS 6 /boot/grub/,CentOS 7 /boot/grub2)

四. Kernel初始化階段
當系統讀取到grub.conf文件中的內核啓動參數後,內核隨即進入內核初始化啓動階段。內核初始化進程分爲四個步驟進行,首先內核會探測可識別到的所有硬件設備;接着爲硬件設備加載硬件驅動程序,加載硬件驅動時,內核需要藉助僞文件系統ramdisk進行加載驅動;當硬件驅動加載完成後,內核會以只讀的方式掛載一個根文件系統,並且移交根文件系統給正常的系統;然後運行用戶空間的第一個程序:/sbin/init,至此,內核的初始化階段就完成了。

五. 進程引導階段
在內核啓動用戶空間的第一個程序/sbin/init之後,init將全面接管centos系統,init也是所有其他進程的父進程;
Init程序在centos系統的不同版本中各不一樣,在centos 5中,init程序是SysV init,其配置文件爲/etc/inittab;在centos 6中,init程序是upstart,其配置文件爲/etc/init/&.conf,而/etc/inittab文件僅用於定義默認運行級別;在centos 7中,init程序是systemctl,其配置文件爲/usr/lib/system/或/etc/system/system/

Init引導階段可分爲四個部分,1.設置默認運行級別;2.運行系統初始化腳本,完成系統初始化;3.關閉對應級別下需要停止的服務,啓動對應級別下需要啓動的服務;4.設置登錄終端(如需啓動圖形界面,則啓動圖形界面)

1.設置默認運行級別
Centos系統的運行級別是爲了系統運行或維護等目的設定的運行機制,分爲7個級別,分別是
0:關機,shutdown
1:單用戶模式(single user),登錄用戶爲root用戶,無須認證,爲維護模式
2:多用戶模式(multi user),會啓動網絡功能,但不會啓動NFS,爲維護模式
3:多用戶模式(multi user),完全功能模式,文件界面
4:預留級別,目前無特別適用目的,但習慣以同3級別功能使用
5:多用戶模式(multi user),完全功能模式,圖形界面
6:重啓,reboot
級別3和5是centos系統的默認級別,如需要進行級別切換,可以使用init+#,進行級別切 換,如需查看當前所在的運行級別可以使用who -r或runlevel命令查看

2.運行系統初始化腳本
系統初始化的腳本爲/etc/rc.d/rc.sysinit腳本,腳本執行後會設置下列信息
(1)設置主機名
(2)設置歡迎信息
(3)激活udev和selinux
(4)掛載/etc/fstab文件中定義的所有文件系統
(5)檢測根文件系統,並以讀寫方式重新掛載根文件系統
(6)設置系統時鐘
(7)根據/etc/sysctl.conf文件來設置內核參數
(8)激活lvm及軟raid設備
(9)激活swap設備
(10)加載額外設備的驅動程序
(11)清理操作

  1. 關閉對應級別下需要停止的服務,啓動對應級別下需要啓動的服務
    當系統選擇了啓動的運行級別#後,init進程會在/etc/rc.d/rc#.d/運行對應的服務腳本,關閉對應級別下需要停止的服務,啓動對應級別下需要啓動的服務。
    K:要停止的服務,K##,優先級,數字越小,越是優先關閉,依賴的服務先關閉,而後關閉被依賴的
    S:要啓動的服務,S##,優先級,數字越小,越是優先啓動,被依賴的服務先啓動,而依賴的服務後啓動

4.設置登錄終端(如需啓動圖形界面,則啓動圖形界面)
當init進程啓動完對應級別下需要啓動的服務後,將進入系統啓動進程的最後一步,就是設置登錄終端,如需要啓動圖形界面的,則啓動圖形界面,當登錄終端啓動完成後,centos系統的啓動流程就完成了,輸入正確的用戶名跟密碼後將可以正常使用centos系統。

以上爲本人對於Centos系統啓動流程的一些總結理解,如有不當之處,希望各位大神多多指導,感謝每位朋友的閱讀。

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