rhel6系統的啓動流程

在linux學習過程中, 我們絕大數時間都用來去學習命令的使用或則是服務的搭建, 因爲這些操作性的東西會讓我們有一種成就感, 而很少有同學去學習底層的一些東西, 比如說操作系統, 其實任何一門技術當你學到一定高度的時候,你就會發現,很難再往上爬, 其中一個很大的原因就是基礎知識的掌握不牢固。 寫這段話,告誡自己與他人, 你可能會用你的一生去學習一門技術,長路漫漫, 何不從一開始就把基礎打好。 

廢話就不多說了, 下面介紹rhel6系統的啓動流程.


下面是centos6系統的啓動流程圖:

wKioL1fQ3GXxXUdSAADwlAKeNLE608.png


下面具體分析每個步驟的過程:

1>.POST 加電自檢

加電自檢是BIOS 功能的一個主要部分 。負責完成對CPU 、主板、內存 、硬盤子系統、顯示子系統、 串並行接口、鍵盤、CD-ROM 光驅等硬件情況的檢測


2>.選擇啓動項

通過BIOS, 選擇系統引導的設備, 比如光盤、USB、磁盤。


3>.(MBR分區的磁盤引導爲例)MBR引導:

0磁盤0扇區的前446bytes, 存放的是bootloader引導程序。

446bytes顯然太小了, 要想利用這446bytes做一個啓動項顯然有點困難, 爲了解決這個問題, Linux將Boot Loader的程序運行與配置項加載分成三個階段來運行:

stage1: 運行Boot Loader主程序, 這個程序必須被安裝在啓動區, 即MBR中。因爲MBR空間有限, 因此在MBR當中僅安裝Boot Loader的最小主程序, 並沒有安裝Boot Loader的相關配置文件。

stage1.5: 在MBR隨後的扇區中存放,主要用於與stage2所在分區的文件系統進行交互。

stage2: 通過Boot Loader加載所有配置文件及相關的壞境參數信息, 這些配置文件及相關的壞境參數都存放於磁盤分區上的/boot目錄下。


4>. 經過bootloader引導程序只是將核心內核文件vmlinuz-2.6.32-642.el6.x86_64加載起來, 把系統控制權移交給內核。


5>. 加載/usr/modules下模塊驅動和掛載真正的/文件系統

想要加載/文件系統, 首先要加載/分區的驅動程序,而/分區的驅動程序卻在/lib/modules/中,而/lib/modules這個目錄卻在/下, 顯然無法去加載/lib/modules中的模塊程序, 這時就需要ramdisk這個虛擬的/文件系統, 這個虛擬的/文件系統是在你安裝操作系統內的時候, 系統會自動檢測出你的磁盤驅動,創建一個虛擬的/文件系統中去。內核啓動後, 首先會將虛擬的根文件系統加載起來, 通過虛擬根文件系統,去加載/lib/modules中的模塊程序。將這些模塊程序加載起來後, 真正的/系統就可以掛載起來了, 這時虛擬的/文件系統ramdisk退出系統了。


6>.啓動init進程讀取/etc/inittab文件和/etc/init/*.conf文件

a>. 使用/etc/rc.d/rc.sysinit初始化腳本

b>. 執行/etc/rc.d/rc腳本, 會自動加載/etc/rc#.d/下的所有腳本, #號爲默認級別。#號爲默認級別。

c>.執行/etc/rc.d/rc.local腳本

d>.執行/bin/login程序,進入登錄狀態。


rhel5的啓動其實和rhel6差不多。 原理上都是這個樣子的,但是還是有稍許的不同,比如在rhel5中,只去執行/etc/inittab的命令就OK了,而在rhel6中,將/etc/inittab分佈在/etc/inittab和/etc/init.d/目錄下。

rhel7的啓動和rhel5、6可以說是發生了很大的變化,但是整個啓動的思想還是可以參考rhel6的啓動過程。

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