本頁面說明如何部署 GBL 二進位檔。
啟動韌體需求
如要使用 GBL,開機韌體必須符合下列條件:
UEFI 相容性。韌體必須實作並使用必要的 UEFI 通訊協定。韌體也必須允許使用定義的 UEFI 通訊協定,支援供應商專屬的擴充功能。
安全性。韌體必須實作 Android Verified Boot (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
指令不會直接啟動 Android,而是使用 EFI 應用程式啟動 Android。
回報錯誤並與 Bootloader 團隊聯絡
如要回報 GBL 的錯誤,請前往 Buganizer 中的 Android Generic Bootloader 元件。
如有任何疑問,請與 GBL 團隊聯絡,並傳送電子郵件至 android-gbl@google.com
。