從BIOS到bootloader

BIOS時期

通過指向ROM的指令,執行ROM中的初始化工作代碼,BIOS進行初始化工作;

首先檢查硬件配置,然後建立中斷向量表和中斷服務程序。

Bootloader 時期

 

 

Grud2 Grand Unified Bootloader Version2

通過 grub2-mkconfig -o /boot/grub2/grub.cfg 來配置系統啓動的選項

使用 grub2-install /dev/sda,可以將啓動程序安裝到相應的位置

grub2首先要安裝的是boot.img ;

BIOS 完成任務後,會將 boot.img 從硬盤加載到內存中的 0x7c00 來運行

boot.img 先加載的是 core.img 的第一個扇區。如果從硬盤啓動的話,這個扇區裏面是 diskboot.img,對應的代碼是 diskboot.S;

diskboot.img 的任務就是將 core.img 的其他部分加載進來,先是解壓縮程序 lzma_decompress.img,再往下是 kernel.img,最後是各個模塊 module 對應的映像。

lzma_decompress.img 做了一個重要的決定,就是調用 real_to_prot,切換到保護模式,這樣就能在更大的尋址空間裏面,加載更多的東西。

切換保護模式的函數 DATA32 call real_to_prot 會打開 Gate A20,也就是第 21 根地址線的控制線

然後對壓縮過的 kernel.img 進行解壓縮,跳轉到 kernel.img 開始運行。

grub_load_config() 開始解析grub.conf中的配置信息;

如果正常啓動grub_command_execute("normal",0,0),會調用grub_normal_execute()函數,在這個函數裏grub_show_menu()會顯示操作系統列表。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章