Déployer GBL

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 les 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 validé Android (AVB), en veillant à ce que seules les images authentifiées soient 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 de l'emplacement afin qu'il prenne en charge la lecture du bon emplacement de démarrage A/B et qu'il soit 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 de périphériques (DTB) et le fichier de configuration de démarrage avec les personnalisations OEM nécessaires pour démarrer 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 micrologiciels UEFI suivantes fonctionnent avec le GBF :

  • EDK2 (Tianocore) EDK2 est une implémentation UEFI Open Source populaire. La prise en charge de GBL est nécessaire pour les bootloaders basés sur EDK2, et la prise en charge d'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) Un bootloader Open Source utilisé par certains fournisseurs.

Exécuter GBL

Vous pouvez obtenir un 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 binaire d'application EFI unique. 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 expédiez 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 créer et exécuter le GBL :

  1. Vérifiez que l'outil de dépôt et le bootstrap Bazel sont installés :

    sudo apt install repo bazel-bootstrap
    
  2. Initialisez votre répertoire actuel pour le contrôle des sources à l'aide du fichier manifeste uefi-gbl-mainline :

    repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline
    repo sync -j16
    
  3. Créez l'application EFI :

    ./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
    
  4. 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 pour le GBL, accédez au composant du bootloader générique Android dans Buganizer.

Pour toute question, contactez l'équipe GBL en envoyant un e-mail à android-gbl@google.com.