このページでは、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 をビルドして実行するには:
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
)をお送りください。