29.1. 關於 [U]EFI x86_64 支援的通用說明

EFI 和 UEFI 這兩個術語在本文件中可以互換使用。

雖然構建核心不需要以下工具,但下面列出了具有 EFI 韌體和規範的 x86_64 平臺所需的引導載入程式支援和相關工具。

  1. UEFI 規範: http://www.uefi.org

  2. 在 UEFI x86_64 平臺上引導 Linux 核心可以使用 <EFI 啟動存根> 或使用單獨的引導載入程式。

  3. 帶有 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 透過以下命令來執行此操作

    1. g - 初始化 GPT 分割槽表

    2. n - 建立新分割槽

    3. t - 將分割槽型別更改為“EFI 系統”(數字 1)

    4. 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 記憶體對映