本頁說明如何部署 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:
確認已安裝 repo 工具和 Bazel 啟動程序:
sudo apt install repo bazel-bootstrap
使用
uefi-gbl-mainline
資訊清單檔案,為目前的目錄初始化來源控管:repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline repo sync -j16
建構 EFI 應用程式:
./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
在 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
。