GBL をデプロイする

このページでは、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 をビルドして実行するには:

  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 コマンドは、Android を直接起動する代わりに、EFI アプリを使用して Android を起動します。

バグを報告してブートローダー チームに連絡する

GBL のバグを報告するには、Buganizer の Android 汎用ブートローダー コンポーネントに移動します。

ご不明な点がございましたら、GBL チームにお問い合わせください。android-gbl@google.com までメールをお送りください。