このページでは、GBL バイナリをデプロイする方法について説明します。
ブート ファームウェアの要件
GBL を使用するには、ブート ファームウェアが次の要件を満たしている必要があります。
UEFI 準拠。ファームウェアは、必要な UEFI プロトコルを実装して使用する必要があります。また、ファームウェアは、定義された UEFI プロトコルを使用したベンダー固有の拡張も許可する必要があります。
セキュリティ。ファームウェアは、Android 検証済みブート(AVB)のすべての側面を実装し、認証済みイメージのみが読み込まれるようにする必要があります。
起動モード。バイナリは、通常の起動、リカバリ起動、Fastboot など、さまざまな起動モードを処理できる必要があります。
動的パーティショニング。ブートローダー ファームウェアは、正しい A/B ブートスロットの読み取りをサポートし、super の動的パーティションと userdata と互換性があるように、スロット選択ロジックを実装する必要があります。
OS 構成。ファームウェアは、デバイスの起動に必要な OEM カスタマイズを使用して、カーネル コマンドライン、デバイスツリー(DTB)、bootconfig を変更できる必要があります。
保護された 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 バイナリを取得して実行する
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 を起動します。
バグを報告してブートローダー チームに連絡する
GBL のバグを報告するには、Buganizer の Android 汎用ブートローダー コンポーネントに移動します。
ご不明な点がございましたら、GBL チームにお問い合わせください。android-gbl@google.com
までメールをお送りください。