Boot

UEFI 韌體程式碼(編譯後的二進制和原始碼)保存在哪裡?

  • July 13, 2021

舊版 BIOS 程序位於 PC 的 ROM 中。並且 UEFI 比 BIOS 被更多地使用。

UEFI 程式碼(編譯後的二進制形式)保存在哪裡?

作業系統現在提供 UEFI 驅動程序嗎?

如果有人能給我簡要解釋一下使用 UEFI 的引導程序,我將不勝感激。

謝謝!

ADD(2021.7.13)

這是​​一年後的更新,自從我發布這個問題以來,我已經了解了一些知識。我了解 UEFI 韌體保存在 EEPROM 中(這些天他們將其保存在 EEPROM 中,因為可以升級)或快閃記憶體(我猜他們使用 NAND 快閃記憶體塊設備,應該首先載入到 RAM 或 NOR 快閃記憶體 - 隨機訪問可能,可以直接執行)

當我檢查 /boot/efi 目錄是 ESP(EFI 系統分區)時,我看到/boot/efi/EFI 下的目錄bootubuntu在這兩個目錄中,都有一些 .efi 文件並使用file命令我可以看到這些是 PE32 虛擬機的二進制執行檔(EFI 韌體使用這個獨立於 CPU 架構或 ISA 的 PE32 機器程式碼)。現在很多韌體也在 ESP 中。我知道有一些表(我猜是在 ESP 中)用於將韌體服務與 OS 執行時或引導時間連接起來。

UEFI 韌體在 ROM 中,就像 BIOS 一樣。這就是使它“堅定”的原因。BIOS 和 UEFI 之間的概念區別在於 UEFI 韌體更高級(有人會說“臃腫”)並且能夠從文件系統讀取文件,而不僅僅是像 BIOS 這樣的磁碟塊。UEFI 還包含一個執行環境,即它能夠從 EFI 系統分區載入 EFI 程序並執行它們。

UEFI 韌體還可以讀取和寫入特殊的非易失性變數,這些變數可以指示在引導時載入哪個文件。該文件可以是引導載入程序,也可以直接是 Linux 核心,因為可以編譯核心映像以包含 UEFI 應用程序所需的結構。

引用自:https://unix.stackexchange.com/questions/601018