Esegui il deployment di GBL

Questa pagina spiega come eseguire il deployment del binario GBL.

Requisiti del firmware di avvio

Per utilizzare GBL, il firmware di avvio deve soddisfare i seguenti requisiti:

  • Conformità UEFI. Il firmware deve implementare e utilizzare i protocolli UEFI richiesti. Il firmware deve anche consentire estensioni specifiche del fornitore utilizzando protocolli UEFI definiti.

  • Sicurezza Il firmware deve implementare tutti gli aspetti di Android Verified Boot (AVB), garantendo che vengano caricate solo immagini autenticate.

  • Modalità di avvio. Il binario deve essere in grado di gestire varie modalità di avvio, ad esempio avvio normale, avvio del ripristino e avvio rapido.

  • Partizionamento dinamico. Il firmware di avvio deve implementare la logica di selezione dello slot in modo da supportare la lettura dello slot di avvio A/B corretto ed essere compatibile con le partizioni dinamiche e i dati utente in super.

  • Configurazione del sistema operativo. Il firmware deve essere in grado di modificare la riga di comando del kernel, il device tree (DTB) e bootconfig con le personalizzazioni OEM necessarie per avviare il dispositivo.

  • Caricamento della VM protetta. Il binario deve caricare correttamente il firmware della VM protetta preverificata prima del kernel Android in presenza di VM protette. Per maggiori informazioni, consulta la sequenza di avvio di Microdroid.

  • Gestione della memoria. Il firmware di avvio deve supportare l'API di allocazione della memoria UEFI.

  • Compatibilità e compatibilità con le versioni precedenti. Il firmware deve funzionare su dispositivi con fornitori e SoC diversi e mantenere la compatibilità con le versioni precedenti della versione Android corrispondente.

Supporto del firmware di avvio

Con le modifiche necessarie per supportare i requisiti della sezione precedente, le seguenti implementazioni del firmware UEFI funzionano con GBF:

  • EDK2 (Tianocore). EDK2 è un'implementazione UEFI open source molto diffusa. Il supporto GBL è necessario per i bootloader basati su EDK2, mentre il supporto UEFI è già presente.
  • U-Boot. Un progetto di bootloader open source flessibile e ampiamente utilizzato che sta ottenendo la compatibilità UEFI per l'utilizzo di GBL.
  • LittleKernel (LK). Un bootloader open source utilizzato da alcuni fornitori.

Esegui GBL

Puoi ottenere un binario GBL precompilato da eseguire o crearne uno personalizzato ed eseguirlo.

Ottieni ed esegui il programma binario GBL

GBL viene distribuito come un singolo binario dell'app EFI. Puoi aggiornare questo binario indipendentemente dal firmware di base del dispositivo utilizzando il meccanismo di aggiornamento standard di Android.

A partire da Android 16, se spedisci un dispositivo basato sul chipset ARM-64, ti consigliamo vivamente di eseguire il deployment dell'ultima versione firmata da Google di GBL e di integrarla nella catena di avvio.

Crea ed esegui la GBL

Per creare ed eseguire la GBL:

  1. Verifica di aver installato lo strumento repo e Bazel bootstrap:

    sudo apt install repo bazel-bootstrap
    
  2. Inizializza la directory corrente per il controllo del codice sorgente utilizzando il file manifest uefi-gbl-mainline:

    repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline
    repo sync -j16
    
  3. Crea l'app EFI:

    ./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
    
  4. Esegui l'app EFI in Cuttlefish:

    cvd start --android_efi_loader=path_to_the_EFI_app ...
    

    Anziché avviare direttamente Android, questo comando cvd start utilizza l'app EFI per avviare Android.

Segnalare bug e contattare il team del bootloader

Per segnalare un bug per GBL, vai al componente Android Generic Bootloader in Buganizer.

Per eventuali domande, contatta il team GBL inviando un'email all'indirizzo android-gbl@google.com.