GBL bereitstellen

Auf dieser Seite wird beschrieben, wie Sie die GBL-Binärdatei bereitstellen.

Anforderungen an die Boot-Firmware

Damit GBL verwendet werden kann, muss die Boot-Firmware die folgenden Anforderungen erfüllen:

  • UEFI-Konformität. Die Firmware muss die erforderlichen UEFI-Protokolle implementieren und verwenden. Die Firmware muss auch herstellerspezifische Erweiterungen über definierte UEFI-Protokolle ermöglichen.

  • Sicherheit Die Firmware muss alle Aspekte von Android Verified Boot (AVB) implementieren, damit nur authentifizierte Images geladen werden.

  • Bootmodi Das Binärprogramm muss verschiedene Startmodi unterstützen, z. B. den normalen Start, den Wiederherstellungsstart und Fastboot.

  • Dynamische Partitionierung. Die Boot-Firmware muss eine Logik zur Auswahl des Slots implementieren, damit sie das Lesen des richtigen A/B-Boot-Slots unterstützt und mit dynamischen Partitionen und Nutzerdaten in „super“ kompatibel ist.

  • Betriebssystemkonfiguration Die Firmware muss in der Lage sein, die Kernel-Befehlszeile, den Gerätebaum (Device Tree, DTB) und die Bootkonfiguration mit OEM-Anpassungen zu ändern, die zum Starten des Geräts erforderlich sind.

  • Geschützte VM wird geladen. Das Binärprogramm sollte die vorab bestätigte geschützte VM-Firmware korrekt laden, bevor der Android-Kernel bei Vorhandensein geschützter VMs geladen wird. Weitere Informationen finden Sie unter Boot-Sequenz für Microdroid.

  • Speicherverwaltung Die Boot-Firmware muss die UEFI-API für die Speicherzuweisung unterstützen.

  • Kompatibilität und Abwärtskompatibilität. Die Firmware sollte auf Geräten mit unterschiedlichen Anbietern und SOCs funktionieren und mit der entsprechenden Android-Version abwärtskompatibel sein.

Unterstützung für Boot-Firmware

Mit den erforderlichen Änderungen zur Unterstützung der Anforderungen im vorherigen Abschnitt funktionieren die folgenden UEFI-Firmware-Implementierungen mit dem GBF:

  • EDK2 (Tianocore): EDK2 ist eine beliebte Open-Source-UEFI-Implementierung. Für EDK2-basierte Bootloader ist GBL-Unterstützung erforderlich. UEFI-Unterstützung ist bereits vorhanden.
  • U-Boot. Ein flexibles und weit verbreitetes Open-Source-Bootloader-Projekt, das UEFI-Kompatibilität für die GBL-Nutzung erhält.
  • LittleKernel (LK). Ein Open-Source-Bootloader, der von einigen Anbietern verwendet wird.

GBL ausführen

Sie können ein vorgefertigtes GBL-Binärprogramm abrufen, um es auszuführen, oder ein eigenes erstellen und ausführen.

GBL-Binärdatei abrufen und ausführen

GBL wird als einzelne EFI-App-Binärdatei bereitgestellt. Sie können dieses Binärprogramm unabhängig von der Basis-Firmware des Geräts über den standardmäßigen Android-Aktualisierungsmechanismus aktualisieren.

Wenn Sie ein Gerät mit einem ARM-64-Chipsatz ausliefern, das auf Android 16 basiert, empfehlen wir dringend, die neueste von Google signierte Version von GBL bereitzustellen und in Ihre Boot-Chain zu integrieren.

GBL erstellen und ausführen

So erstellen Sie die GBL und führen sie aus:

  1. Prüfen Sie, ob das Repo-Tool und Bazel Bootstrap installiert sind:

    sudo apt install repo bazel-bootstrap
    
  2. Initialisieren Sie Ihr aktuelles Verzeichnis für die Quellcodeverwaltung mit der Manifestdatei uefi-gbl-mainline:

    repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline
    repo sync -j16
    
  3. EFI-App erstellen:

    ./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
    
  4. Führen Sie die EFI-App in Cuttlefish aus:

    cvd start --android_efi_loader=path_to_the_EFI_app ...
    

    Anstatt Android direkt zu starten, verwendet dieser cvd start-Befehl die EFI-App, um Android zu starten.

Fehler melden und das Bootloader-Team kontaktieren

Wenn Sie einen Fehler für den GBL melden möchten, rufen Sie die Android Generic Bootloader-Komponente in Buganizer auf.

Wenn Sie Fragen haben, wenden Sie sich an das GBL-Team. Senden Sie dazu eine E-Mail an android-gbl@google.com.