GBL をデプロイする

このページでは、GBL バイナリをデプロイする方法について説明します。

ブート ファームウェアの要件

GBL を使用するには、ブート ファームウェアが次の要件を満たしている必要があります。

  • UEFI 準拠。ファームウェアは、必要な UEFI プロトコルを実装して使用する必要があります。また、ファームウェアでは、定義された UEFI プロトコルを使用してベンダー固有の拡張機能を利用できるようにする必要があります。

  • セキュリティ。ファームウェアは、Android Verified Boot(AVB)のすべての側面を実装し、認証されたイメージのみが読み込まれるようにする必要があります。

  • 起動モード。バイナリは、通常の起動、リカバリ起動、Fastboot など、さまざまな起動モードを処理できる必要があります。

  • 動的パーティショニング。ブート ファームウェアは、正しい A/B ブートスロットの読み取りをサポートし、スーパー内の動的パーティションと 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 は単一の 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)をお送りください。