核心內部與作業系統建構

統一可延伸韌體介面(UEFI)

/ YOO-eff-eye /

在任何作業系統能執行之前,必須已經有某個程式在 CPU 甦醒的那一瞬間就掌權——這個程式就是韌體(firmware),它是永久存放在主機板晶片裡的軟體。UEFI(Unified Extensible Firmware Interface,統一可延伸韌體介面)是這種韌體的現代標準,是 PC 沿用數十年的舊式 BIOS(Basic Input/Output System)的後繼者。把韌體想成永遠比所有人早到的大樓管理員:他握有鑰匙、知道配電箱在哪、並讓當天第一位員工進門。UEFI 是比 PC 用了幾十年那個侷促的 BIOS 更新、能力強得多的管理員。

具體來說,機器一通電,CPU 就跳到韌體程式碼。舊式 BIOS 是 16 位元,只看得懂磁碟最前面那個小小的 512 位元組開機磁區(MBR),且只提供粗糙的裝置服務。UEFI 在幾個實務面上不同:它以 32 或 64 位元模式執行、看得懂真正的檔案系統(一個稱為 EFI 系統分割區、簡稱 ESP 的小型 FAT 分割區),並從該分割區把開機程式以正規的 .efi 檔案載入,而不是從單一的魔術磁區。它還保存一小組開機變數,記住要啟動哪個作業系統,並可內建開機管理員,因此你不一定非要獨立的開機載入器不可。最關鍵的是,UEFI 引入了安全開機(secure boot),會在執行每個開機程式之前驗證其密碼學簽章。

它之所以重要,是因為 UEFI 讓現代機器開機快速、支援大於 2 TB 的磁碟(舊的 MBR 機制做不到)、能顯示圖形化開機選單,並能拒絕執行被竄改的開機程式碼。一個常見的混淆:人們習慣上仍說 BIOS,而許多 UEFI 韌體提供相容 BIOS 的傳統模式(CSM),因此在這段漫長的過渡期裡兩者並存。UEFI 不是作業系統,也不是開機載入器——它是位於兩者之下、把控制權交給它們的那一層。

你筆電的 EFI 系統分割區裡放著像 EFI/BOOT/bootx64.efi 和 EFI/ubuntu/grubx64.efi 這樣的檔案。UEFI 讀取它的開機變數,看到指向 GRUB 的 .efi 檔案的項目,驗證其安全開機簽章,載入並執行它——接著 GRUB 接手去載入核心。

UEFI 從 FAT 分割區載入一個已簽章的 .efi 檔案,不像 BIOS 是讀取單一原始開機磁區。

安全開機並不會讓系統神奇地變安全——它只保證開機程式由受信任的金鑰簽署。一旦作業系統開始執行,安全開機就已完成任務,必須由其他防禦接手;而你選擇信任的作業系統一旦開機後,仍可載入任何東西。

又稱
Unified Extensible Firmware InterfacefirmwareBIOS replacement韌體