UEFI和BIOS啓動流程

簡介

之前一直是大概知道UEFI和BIOS的區別,沒對它們的具體啓動流程做對比,別人問起來也說不出個所以然,下面粗線條地介紹這兩個的啓動流程。

BIOS是Basic Input/Output System的縮寫,即基本輸入輸出系統;UEFI是Unified Extensible Firmware Interface的縮寫,即可擴展固件接口

BIOS

通電之後BIOS初始化,然後是開機自檢(POST),這些都是固件相關,感覺和我關係不大,略去不講。然後BIOS就開始把bootloader載入內存,具體過程如下:

按照設定的啓動順序,依次嘗試從各個磁盤啓動,具體地說,把磁盤的起始扇區(512K)整個載入到內存地址0x7c00處,然後從0x7c00處開始執行。

BIOS只能和MBR格式的分區表結構一起使用,由於MBR佔一個扇區,在MBR中四個分區表項又佔去4x16=64B,可啓動標誌0x55 0xAA標誌又佔去2B,所以在MBR中可以存放的代碼最多隻有512B-64B-2B=446B

這446B大小的代碼就是bootloader了,或者說bootloader的一部分。

之所以說是一部分,是因爲446B實在是小得可憐,可能連bootloader都放不下,又怎麼指望它把操作系統給拉起來?於是就可以把bootloader分成兩部分,一部分放在MBR中,一部分放在磁盤的其它位置,MBR中的部分負責把bootloader載入內存運行,然後bootloader把OS拉起來。

往後就是操作系統的具體啓動流程了。

UEFI

對於UEFI,大概流程:
通電->UEFI初始化->加載bootloader

可以看出UEFI沒有開機自檢的過程,開機過程就能加快一些。不過其實並不是真的什麼都檢查,只是是弱化了檢查這個過程。試想,你買了一臺新電腦,大概率一年之內不會出故障,但是使用BIOS方式的話,你電腦每次開機都要檢查,如果檢查耗時1s,每天開機,那就是365s啊,生命中寶貴的6分鐘啊!

不過具體是怎麼個弱化法,很遺憾我沒有搜到相關資料,也沒有興趣深入研究固件。

往下說,由於UEFI的啓動方式使用的是GPT的分區表,啓動時並不是簡單地把MBR往內存中一裝,這裏有必要說明一下它加載bootloader的具體過程。

使用UEFI方式啓動時,固件先會找到EFI分區,然後執行分區下面對應的.efi文件,這個efi文件的功能就是把bootloader加載進內存,然後bootloader再把OS拉起來。


參考資料

Understanding the Boot process — BIOS vs UEFI
MBR
UEFI和Legacy及UEFI+Legacy啓動的區別
(譯)UEFI 啓動:實際工作原理

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