Questa pagina spiega come eseguire il deployment del file binario GBL.
Requisiti del firmware di avvio
Per utilizzare GBL, il firmware di avvio deve soddisfare i seguenti requisiti:
Conformità a UEFI. Il firmware deve implementare e utilizzare i protocolli UEFI richiesti. Il firmware deve inoltre consentire estensioni specifiche del fornitore utilizzando protocolli UEFI definiti.
Sicurezza Il firmware deve implementare tutti gli aspetti dell'avvio verificato di Android (AVB), garantendo il caricamento solo di immagini autenticate.
Modalità di avvio. Il file binario deve essere in grado di gestire varie modalità di avvio, ad esempio avvio normale, avvio di 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 userdata in super.
Configurazione del sistema operativo. Il firmware deve essere in grado di modificare la riga di comando del kernel, la struttura ad albero del dispositivo (DTB) e il file bootconfig con le personalizzazioni OEM necessarie per avviare il dispositivo.
Caricamento della VM protetta. Il file binario dovrebbe caricare correttamente il firmware preverificato della VM protetta prima del kernel di 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 corrispondente versione di Android.
Supporto del firmware di avvio
Con le modifiche necessarie per supportare i requisiti della sezione precedente, le seguenti implementazioni del firmware UEFI funzionano con il GBF:
- EDK2 (Tianocore). EDK2 è una popolare implementazione UEFI open source. Il supporto GBL è necessario per i bootloader basati su EDK2 e il supporto UEFI è già presente.
- U-Boot. Un progetto di bootloader open source flessibile e ampiamente utilizzato che sta acquisendo la compatibilità UEFI per l'utilizzo di GBL.
- LittleKernel (LK). Un bootloader open source utilizzato da alcuni fornitori.
Esegui GBL
Puoi ottenere un file binario GBL precompilato da eseguire o crearne uno tuo e eseguirlo.
Ottieni ed esegui il programma binario GBL
GBL viene distribuito come un singolo programma binario dell'app EFI. Puoi aggiornare questo file 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 su chipset ARM-64, ti consigliamo vivamente di eseguire il deployment della versione più recente firmata da Google di GBL e di integrarla nella catena di avvio.
Crea ed esegui il GBL
Per creare ed eseguire il GBL:
Verifica di avere installato lo strumento repo e il bootstrap di Bazel:
sudo apt install repo bazel-bootstrap
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
Crea l'app EFI:
./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
Esegui l'app EFI in Cuttlefish:
cvd start --android_efi_loader=path_to_the_EFI_app ...
Invece di 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 il GBL, vai al componente Bootloader generico Android in Buganizer.
Per eventuali domande, contatta il team GBL inviando un'email all'indirizzo android-gbl@google.com
.