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 ...