簡述linux操作系統(tǒng)啟動流程

1、POST : 加電自檢

? ? ? ? 當給計算機上電,主板上的CMOS芯片獲得電源,會執(zhí)行其上的BIOS(基本輸入輸出系統(tǒng)Basic I/O System)程序 。BIOS程序會根據(jù)CMOS上的硬件配置信息,去檢查硬件是否存在及是否能正常工作,最后進行硬件初始化。

2、加載bootloader

? ? ? ? 根據(jù)啟動順序找到第一個可以啟動的磁盤,加載其MBR中的BootLoader ; BootLoader就是將內核加載至內存中、解壓展開。

? ? ? ? 由于MBR只有512byte,Bootloader占用前446bytes,這么小的空間不可能放置很多的程序,所以Bootloader(grub)就分為3個階段(stage)完成:

? ? ? ? stage1: 加載Bootloader的主程序(位于MBR中)用于加載stage 1.5的代碼;

? ? ? ? stage1.5: 位于MBR之后的扇區(qū),讓statge1中的bootloader能夠識別stage2所在的分區(qū)文件系統(tǒng);

? ? ? ? stage2:通過Bootloader加載所有的配置文件及相關參數(shù),這些參數(shù)都位于磁盤/boot/grub中;

3、內核初始化

? ? ? ?此時BootLoader需要將內核程序加載至內存,并進行解壓,展開,控制權也移交給內核;內核需要檢測硬件設備,并加載硬件驅動;但是內核程序本身也是放在硬盤的/boot分區(qū)上,這就需要先加載硬盤驅動;

? ? ? ?此時就需要一個臨時根文件系統(tǒng)代替一個真正的文件系統(tǒng)行使權力,即initrd.? ?Bootloader會將initrd程序加載至內存,initrd會模擬出一個虛擬的根文件系統(tǒng),這樣就可以加載硬件驅動等啟動過程中需要的程序,加載完成后,并完成根切換;然后內核運行用戶空間第一個程序/sbin/init ,至此,系統(tǒng)將交由init進行管理;

4、init 初始化

? ? ? ? init 主要是進行軟件環(huán)境初始化,它會讀取配置文件/init/inittab(cent5/6)或systemd(centos7),讀取默認運行級別;運行 /etc/rc.d/rc.sysinit 進行系統(tǒng)初始化;關閉相應級別的需要停止的服務,啟動對應級別下需要開啟的服務--->設置登錄終端;至此,系統(tǒng)啟動完畢。。。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容