Linux0 12引導啟動程式

2021-07-22 10:01:01 字數 1257 閱讀 7741

1.從系統加電起所執行程式的順序

rom bios -----> bootsect.s -----> setup.s -----> head.s -----> main.c

其中,head.s和main.c都屬於system模組

main屬於初始化程式,這裡不講

2.幾個程式的比較

程式名位置語言

rom bios

rombootsect.s

boot/bootsect.s

as86組合語言

setup.s

boot/setup.s

as86組合語言

head.s

boot/head.s

gnu組合語言

main.c

init/main.c

c語言

3.rom bios的功能

(1)執行某些系統檢測

(2)在實體地址0處開始初始化中斷向量

(3)將啟動裝置的第乙個扇區讀入到絕對位址0x7c00處

(4)跳轉到絕對位址0x7c00處

4.bootsect.s的功能

(1)把自己移到0x90000處(本來在0x7c00)

(2)從磁碟把第2-4個扇區的setup模組讀入到0x90200處(緊接著bootsect)

(3)取磁碟參數列中當前啟動引導磁碟的引數

(4)顯示「loading system」字串

(5)system模組載入到0x10000處

(6)確定要檔案系統的裝置號

(7)跳轉到setup程式開始處(0x90200)

5. setup.s的功能

(1)讀取機器系統資料,並儲存到0x90000開始的位置

(2)將system模組從0x10000-0x8ffff移到0x00000-0x7ffff處

(3)載入idtr和gdtr

(4)開啟a20,重新設定兩個中斷控制晶元8259a,將硬體中斷號重新設定為0x20-0x2f

(5)設定cr0(從而進入保護模式)

(6)跳轉到system模組最前面部分的head.s(0x0000)

6.head.s的功能

(1)載入各個資料段的暫存器

(2)重新設定idt

(3)重新設定gdt

(4)檢測a20是否已真的開啟

(5)測試pc是否含有數學協處理器晶元

(6)設定管理記憶體的分布處理機制

(7)將預先入圍在堆疊中的/init/main.c程式的入口位址彈出,執行maina()

Linux0 12引導啟動程式

1.從系統加電起所執行程式的順序 rom bios bootsect.s setup.s head.s main.c 其中,head.s和main.c都屬於system模組 main屬於初始化程式,這裡不講 2.幾個程式的比較 程式名位置 語言rom bios rombootsect.s boot ...

linux0 11 引導啟動程式目錄boot 分析

boot 包含三個彙編檔案 bootsect.s,setup.s,head.s。bootsect.s程式是磁碟引導塊程式,編譯後會駐留在磁碟的第乙個扇區中 引導扇區,0磁軌,0磁頭,第乙個扇區 在pc加電rom bios自檢後,將被bios載入到記憶體0x7c00處執行。setup.s程式主要用於讀...

Linux0 12初始化程式

1.main 1 設定系統的根檔案裝置號以及一些記憶體全域性變數 2 所有方面的硬體初始化工作 陷阱門 塊裝置 字元裝置 tty 開機啟動時間 排程程式 硬碟 軟碟機 3 開中斷,切換到任務0中執行 4 切換到使用者模式 5 建立乙個用於init 的子程序 6 迴圈執行pause 2.init 1 ...