BIOS到Linux Boot的原理

2021-07-03 20:04:46 字數 638 閱讀 3597

bios啟動的原理:所有x86的cpu都設計成為加電進入16位實模式狀態, cs=0xffff,ip=0x0000。這樣啟動時的第一條指標所在的位址就是0xffff0.

建立中斷向量表(0x00000 - 0x003ff)

建立中斷服務程式

bios執行int 19h, 載入磁碟的第乙個扇區(512 b)到0x7c00處.

第乙個扇區的程式為引導程式,它接下來會負責第二步和第三步的程式載入

bootsect會先把自己載入到0x90000, 然後呼叫int 13h載入setup.s對應的程式到0x90200(setupseg)處。最後再次呼叫int 13h將kernel載入到0x10000處。

載入完成後, setup開始執行,它呼叫int 41h和int 46h獲取硬碟參數列1和硬碟參數列2.

關中斷,eflags的if位置0,然後將system kernel(0x10000)拷貝到0x0000處。

此時,bios所留下的中斷向量表和資料全部被覆蓋,在作業系統設好idt之前,不能再響應中斷。

設定好gdt和idt, 開啟a20, 進入保護模式(cr0, pe置1),實現32位定址。

linux boot區空間滿的處理

因boot中儲存了多個linux核心,導致爆滿,無法執行安裝。1 輸入 uname a 獲取當前正在使用核心 linux mlcmssap02 4.4.0 134 generic 160 ubuntu smp wed aug 15 14 58 00 utc 2018 x86 64 x86 64 x8...

BIOS 編譯過程 C檔案到EFI檔案

include efi status efiapi main in efi handle imagehandle,in efi system table systemtable 這個過程就是efi編譯的過程,我們來分析每一步的意義,每乙個命令接收了什麼東西,產出了什麼東西,都要搞清楚。第二步 命令 ...

BIOS介面常見的BIOS短句的解釋

開機bios語言開機自檢時出現問題後會出現各種各樣的英文短句,短句中包含了非常重要的資訊 1.cmos battery failed 中文 cmos電池失效。解釋 這說明cmos電池已經快沒電了,只要更換新的電池即可。2.cmos check sum error defaults loaded 中文...