29.1. 關於 [U]EFI x86_64 支援的通用說明¶
EFI 和 UEFI 這兩個術語在本文件中可以互換使用。
雖然構建核心不需要以下工具,但下面列出了具有 EFI 韌體和規範的 x86_64 平臺所需的引導載入程式支援和相關工具。
UEFI 規範: http://www.uefi.org
在 UEFI x86_64 平臺上引導 Linux 核心可以使用 <EFI 啟動存根> 或使用單獨的引導載入程式。
帶有 EFI/UEFI 韌體的 x86_64 平臺。
29.1.1. 機制¶
請參閱 <EFI 啟動存根> 以瞭解如何使用 EFI 存根。
以下是在 x86_64 平臺上通用的 EFI 設定指南,無論您使用 EFI 存根還是單獨的引導載入程式。
使用以下配置構建核心
CONFIG_FB_EFI=y CONFIG_FRAMEBUFFER_CONSOLE=y
如果需要 EFI 執行時服務,應選擇以下配置
CONFIG_EFI=y CONFIG_EFIVAR_FS=y or m # optional
- 在磁碟上建立一個帶有 EFI 系統標誌的 VFAT 分割槽
您可以使用 fdisk 透過以下命令來執行此操作
g - 初始化 GPT 分割槽表
n - 建立新分割槽
t - 將分割槽型別更改為“EFI 系統”(數字 1)
w - 寫入並儲存更改
之後,透過執行 mkfs 初始化 VFAT 檔案系統
mkfs.fat /dev/<your-partition>
- 將引導檔案複製到 VFAT 分割槽
如果您使用 EFI 存根方法,核心也充當 EFI 可執行檔案。
您可以簡單地將 bzImage 複製到分割槽上的 EFI/boot/bootx64.efi 路徑,以便它自動啟動,請參閱 <EFI 啟動存根> 頁面,以獲取有關傳遞核心引數和 initramfs 的其他說明。
如果您使用自定義引導載入程式,請參閱相關文件以獲取有關此部分的幫助。
如果部分或全部 EFI 執行時服務不起作用,您可以嘗試以下核心命令列引數來關閉部分或全部 EFI 執行時服務。
- noefi
關閉所有 EFI 執行時服務
- reboot_type=k
關閉 EFI 重啟執行時服務
如果 EFI 記憶體對映中包含 E820 對映中沒有的其他條目,您可以使用以下核心命令列引數將這些條目包含在核心的可用物理 RAM 記憶體對映中。
- add_efi_memmap
包含可用物理 RAM 的 EFI 記憶體對映