天天看點

linux啟動啟動過程(基于MBR)

前言:

因為uefi的出現,bios分為legacy bios和uefi bios,下文中,我用的是legacy bios,因為legacy bios一般配合MBR使用。

這篇文章先說基于MBR的啟動過程,然後再說基于比較新的GPT的啟動過程,​​linux啟動啟動過程(基于GPT)​​。

第一步:電腦上電,執行bios程式(這段程式是在rom上運作的,不是在ram記憶體上)

bios程式的功能:

a,上電自檢,看看硬體是不是有什麼問題,有則,顯示有問題;

b,bios的初始化,會影響系統啟動;

c,引導程式,bios程式從磁盤的開始扇區部分尋找主營到記錄MBR。

順便提一下:
U盤安裝系統時,bios自檢和初始化沒問題之後,不是要将U盤上的(U盤安裝的話)
的MBR裡的bootloader加載到記憶體中運作,這個bootloader就是引導器,根據這個
引導器去安裝系統,在安裝的過程中有個grub-install的步驟,這個時候就是将電
腦硬碟上MBR裡的bootloader改寫成了grub。安裝完系統開機之後,就會有grub引
導器選項。      

第二步:将MBR裡面的bootloader加載到記憶體運作

開始扇區讀取引導記錄,将電腦的控制權交給引導器(linux多用grub)。

引導器再找到核心,grub有一個叫grub.conf檔案裡有核心存儲資訊。

第三步:将核心加載到記憶體運作

将記憶體加載到記憶體之後,控制權就交給核心了。核心記憶體中自解壓之後就将控制權交給一個叫systemd的程序。

至此,引導過程結束。(詳細過程在此不讨論)

第四步:引導過程結束,啟動過程開始

systemd是所有程序的父程序,控制權交給systemd程序之後,系統就可以操作了。

注意:
   systemd即為system daemon,是linux下的一種init軟體,由
Lennart Poettering帶頭開發,并在LGPL 2.1及其後續版本許可
證下開源釋出,開發目标是提供更優秀的架構以表示系統服務間的依
賴關系,并依此實作系統初始化時服務的并行啟動,同時達到降低
Shell的系統開銷的效果,最終代替現在常用的System V與BSD風
格init程式。       

這裡的工作量就比較大了,挂載檔案系統,啟動核心子產品,設定使用者資訊等等。

這裡不詳細讨論。

繼續閱讀