部署 GBL

本頁說明如何部署 GBL 二進位檔。

啟動韌體需求

如要使用 GBL,開機韌體必須符合下列需求:

  • 符合 UEFI 規範。韌體必須實作並使用必要的 UEFI 通訊協定。韌體也必須允許使用定義的 UEFI 通訊協定,進行廠商專屬擴充。

  • 安全性。韌體必須實作 Android 驗證啟動 (AVB) 的所有層面,確保只會載入經過驗證的映像檔。

  • 啟動模式。二進位檔應能處理各種開機模式,例如正常開機、復原開機和快速開機。

  • 動態分區。開機韌體必須實作插槽選取邏輯,才能支援讀取正確的 A/B 開機插槽,並與超級分區中的動態分區和使用者資料相容。

  • OS 設定。韌體必須能夠修改核心指令列、裝置樹狀結構 (DTB) 和啟動設定,並加入啟動裝置所需的 OEM 自訂項目。

  • 正在載入受保護的 VM,在有受保護的 VM 時,二進位檔應在 Android 核心之前,正確載入預先驗證的受保護 VM 韌體。詳情請參閱 Microdroid 啟動順序

  • 記憶體管理。開機韌體必須支援 UEFI 記憶體配置 API。

  • 相容性和回溯相容性。韌體應適用於不同供應商和 SoC 的裝置,並維持與對應 Android 版本的向後相容性。

支援啟動韌體

經過修改以支援前一節所述需求後,下列 UEFI 韌體實作項目可與 GBF 搭配運作:

  • EDK2 (Tianocore)。EDK2 是熱門的開放原始碼 UEFI 實作。EDK2 型啟動載入程式需要 GBL 支援,而 UEFI 支援已存在。
  • U-Boot。這個彈性且廣泛使用的開放原始碼開機載入程式專案,正為 GBL 用途取得 UEFI 相容性。
  • LittleKernel (LK)。部分供應商使用的開放原始碼開機載入程式。

執行 GBL

您可以取得預先建構的 GBL 二進位檔來執行,也可以自行建構並執行。

取得並執行 GBL 二進位檔

GBL 以單一 EFI 應用程式二進位檔的形式發布。您可以使用 Android 標準更新機制,獨立更新這個二進位檔,不必更新裝置的基本韌體。

從 Android 16 開始,如果您出貨的裝置採用 ARM-64 晶片組,強烈建議您部署最新 Google 簽署的 GBL 版本,並整合至啟動鏈。

建構並執行 GBL

如要建構及執行 GBL:

  1. 確認已安裝 repo 工具和 Bazel 啟動程序:

    sudo apt install repo bazel-bootstrap
    
  2. 使用 uefi-gbl-mainline 資訊清單檔案,為目前的目錄初始化來源控管:

    repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline
    repo sync -j16
    
  3. 建構 EFI 應用程式:

    ./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
    
  4. 在 Cuttlefish 中執行 EFI 應用程式:

    cvd start --android_efi_loader=path_to_the_EFI_app ...
    

    這個 cvd start 指令會使用 EFI 應用程式啟動 Android,而不是直接啟動 Android。

回報錯誤並聯絡開機載入程式團隊

如要回報 GBL 的錯誤,請前往 Buganizer 中的 Android Generic Bootloader 元件

如有任何問題,請與 GBL 團隊聯絡,傳送電子郵件至 android-gbl@google.com