linux啟動啟動過程(基於MBR)
前言:
因為uefi的出現,bios分為legacy bios和uefi bios,下文中,我們不做這個劃分,統一叫做bios。
這篇文章先說基於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程式。
這裡的工作量就比較大了,掛載檔案系統,啟動核心模組,設定使用者資訊等等。
這裡不詳細討論。
參考1:https://baike.baidu.com/item/bios/91424?fr=aladdin
參考2:https://www.cnblogs.com/love3556/p/5908001.html
參考3:https://www.cnblogs.com/codecc/p/boot.html
參考4:https://blog.csdn.net/Apollon_krj/article/details/77869770