Cette page explique comment déployer le binaire GBL.
Exigences concernant le micrologiciel de démarrage
Pour utiliser GBL, le micrologiciel de démarrage doit répondre aux exigences suivantes :
Conformité UEFI. Le micrologiciel doit implémenter et utiliser les protocoles UEFI requis. Le micrologiciel doit également permettre des extensions spécifiques au fournisseur à l'aide de protocoles UEFI définis.
Sécurité Le micrologiciel doit implémenter tous les aspects du démarrage sécurisé vérifié Android (AVB), en s'assurant que seules les images authentifiées sont chargées.
Modes de démarrage Le binaire doit pouvoir gérer différents modes de démarrage, tels que le démarrage normal, le démarrage en mode récupération et le démarrage rapide.
Partitionnement dynamique. Le micrologiciel de démarrage doit implémenter une logique de sélection d'emplacement afin de pouvoir lire le bon emplacement de démarrage A/B et d'être compatible avec les partitions dynamiques et les données utilisateur dans super.
Configuration de l'OS. Le micrologiciel doit être capable de modifier la ligne de commande du noyau, l'arborescence des périphériques (DTB) et la configuration de démarrage avec les personnalisations OEM nécessaires au démarrage de l'appareil.
Chargement de la VM protégée… Le binaire doit charger correctement le micrologiciel de la VM protégée prévalidée avant le noyau Android en présence de VM protégées. Pour en savoir plus, consultez la séquence de démarrage de Microdroid.
Gestion de la mémoire. Le micrologiciel de démarrage doit être compatible avec l'API d'allocation de mémoire UEFI.
Compatibilité et rétrocompatibilité. Le micrologiciel doit fonctionner sur les appareils avec différents fournisseurs et SoC, et maintenir la rétrocompatibilité avec la version Android correspondante.
Compatibilité avec le micrologiciel de démarrage
Avec les modifications nécessaires pour répondre aux exigences de la section précédente, les implémentations de micrologiciel UEFI suivantes fonctionnent avec le GBF :
- EDK2 (Tianocore) : EDK2 est une implémentation UEFI Open Source populaire. La compatibilité avec GBL est nécessaire pour les bootloaders basés sur EDK2, et la compatibilité avec UEFI est déjà présente.
- U-Boot Projet de bootloader open source flexible et largement utilisé, qui gagne en compatibilité UEFI pour l'utilisation de GBL.
- LittleKernel (LK). Chargeur de démarrage Open Source utilisé par certains fournisseurs.
Exécuter GBL
Vous pouvez obtenir un fichier binaire GBL prédéfini à exécuter ou créer le vôtre et l'exécuter.
Obtenir et exécuter le binaire GBL
GBL est distribué sous la forme d'un seul binaire d'application EFI. Vous pouvez mettre à jour ce binaire indépendamment du micrologiciel de base de l'appareil à l'aide du mécanisme de mise à jour standard d'Android.
À partir d'Android 16, si vous commercialisez un appareil basé sur un chipset ARM-64, nous vous recommandons vivement de déployer la dernière version signée par Google de GBL et de l'intégrer à votre chaîne de démarrage.
Compiler et exécuter le GBL
Pour compiler et exécuter le GBL :
Vérifiez que vous avez installé l'outil repo et le bootstrap Bazel :
sudo apt install repo bazel-bootstrap
Initialisez votre répertoire actuel pour le contrôle du code source à l'aide du fichier manifeste
uefi-gbl-mainline
:repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline repo sync -j16
Créez l'application EFI :
./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
Exécutez l'application EFI dans Cuttlefish :
cvd start --android_efi_loader=path_to_the_EFI_app ...
Au lieu de démarrer Android directement, cette commande
cvd start
utilise l'application EFI pour démarrer Android.
Signaler des bugs et contacter l'équipe du bootloader
Pour signaler un bug concernant le GBL, accédez au composant Android Generic Bootloader dans Buganizer.
Pour toute question, contactez l'équipe GBL en envoyant un e-mail à l'adresse android-gbl@google.com
.