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

2021-09-05 08:54:28 字數 1278 閱讀 9520

前言:

因為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程式。

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

這裡不詳細討論。

參考1:

參考2:

參考3:

參考4:

參考5:

Linux啟動過程

1 開啟 pc電源 pc加電後,乙個特殊的硬體電路會觸發 cpu 的 reset 腳的邏輯值,然後一些 cpu 暫存器,如 cs eip 等被給定乙個值,接著 cpu 跳轉到乙個固定位址開始執行 bios 2 bios 自檢,按設定的裝置啟動 bios 對硬體進行一系列徹底的檢查,如 cpu 型別 ...

Linux 啟動過程

fae 將porting 好的linux 提供,幾乎都在寫應用 空閒時間整理一下 b1202 系統啟動的過程 通過 boot vm 進行啟動 vmlinuz init 程序會讀取 etc inittab etc inittab 先 etc rc.d rc.sysinit 再 etc rc.d rc3...

Linux啟動過程

1.加電時由硬體將bios載入到記憶體末尾.這時是實模式,定址空間為1m.2.由硬體將cs段暫存器強制設定為0xffff,ip指令暫存器設定為0x0000.這樣cs ip指向了oxffff0的位址位置.這個位置就是bios程式的入口位址.3.執行bios程式.在記憶體起始位址0x00000設定1k大...