A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release en lugar de aosp-main para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
En esta página, se explica cómo implementar el binario de GBL.
Requisitos del firmware de inicio
Para usar GBL, el firmware de arranque debe cumplir con los siguientes requisitos:
Cumplimiento de UEFI El firmware debe implementar y usar los protocolos UEFI requeridos. El firmware también debe permitir extensiones específicas del proveedor con protocolos UEFI definidos.
Seguridad El firmware debe implementar todos los aspectos del inicio verificado de Android (AVB), lo que garantiza que solo se carguen imágenes autenticadas.
Modos de inicio El binario debe poder controlar varios modos de inicio, como el inicio normal, el inicio de recuperación y el inicio rápido.
Partición dinámica. El firmware de inicio debe implementar la lógica de selección de ranuras para que admita la lectura del espacio de inicio A/B correcto y sea compatible con las particiones dinámicas y los datos del usuario en super.
Configuración del SO El firmware debe ser capaz de modificar la línea de comandos del kernel, el árbol de dispositivos (DTB) y el bootconfig con las personalizaciones del OEM necesarias para iniciar el dispositivo.
Carga de VMs protegidas. El objeto binario debe cargar correctamente el firmware de la VM protegida previamente verificado antes del kernel de Android en presencia de VMs protegidas. Para obtener más información, consulta la secuencia de inicio de Microdroid.
Administración de la memoria. El firmware de arranque debe admitir la API de asignación de memoria de UEFI.
Compatibilidad y retrocompatibilidad El firmware debe funcionar en dispositivos con diferentes proveedores y SoC, y mantener la retrocompatibilidad con la versión de Android correspondiente.
Compatibilidad con el firmware de inicio
Con las modificaciones necesarias para admitir los requisitos de la sección anterior, las siguientes implementaciones de firmware UEFI funcionan con el GBF:
EDK2 (Tianocore). Un EDK2 es una implementación popular de UEFI de código abierto. Se necesita compatibilidad con GBL para los bootloaders basados en EDK2, y ya existe compatibilidad con UEFI.
U-Boot. Es un proyecto de bootloader de código abierto flexible y muy usado que está ganando compatibilidad con UEFI para el uso de GBL.
LittleKernel (LK). Es un bootloader de código abierto que usan algunos proveedores.
Ejecuta GBL
Puedes obtener un objeto binario GBL compilado previamente para ejecutarlo o compilar el tuyo y ejecutarlo.
Obtén y ejecuta el objeto binario de GBL
La GBL se distribuye como un solo objeto binario de la app de EFI. Puedes actualizar este objeto binario de forma independiente del firmware base del dispositivo con el mecanismo de actualización estándar de Android.
A partir de Android 16, si envías un dispositivo basado en un chipset ARM-64, te recomendamos que implementes la versión más reciente de GBL firmada por Google y la integres en tu cadena de arranque.
Compila y ejecuta la GBL
Para compilar y ejecutar la GBL, haz lo siguiente:
Verifica que tengas instaladas la herramienta de repo y el arranque de Bazel:
sudo apt install repo bazel-bootstrap
Inicializa tu directorio actual para el control de código fuente con el archivo de manifiesto uefi-gbl-mainline:
Si tienes preguntas, comunícate con el equipo de GBL y envía un correo electrónico a android-gbl@google.com.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-07-27 (UTC)"],[],[],null,["# Deploy GBL\n\nThis page explains how to deploy the GBL binary.\n\nBoot firmware requirements\n--------------------------\n\nTo use GBL, the boot firmware must meet the following requirements:\n\n- UEFI compliance. The firmware must implement and use the\n required UEFI protocols. The firmware must also allow for vendor-specific\n extensions using defined UEFI protocols.\n\n- Security. The firmware must implement all aspects of Android\n Verified Boot (AVB), ensuring only authenticated images are loaded.\n\n- Boot modes. The binary should be able to handle various boot modes, such as normal boot, recovery boot, and fastboot.\n\n- Dynamic partitioning. The boot firmware must implement slot selection logic so\n that it supports reading the correct A/B boot slot and is compatible with\n dynamic partitions and userdata in super.\n\n- OS configuration. The firmware must be capable of modifying the kernel\n command line, device tree (DTB), and bootconfig with OEM customizations\n needed to boot the device.\n\n- Protected VM loading. The binary should correctly load preverified protected\n VM firmware before the Android kernel in the presence of protected VMs. For\n further information, see Microdroid [boot sequence](/docs/core/virtualization/microdroid#boot-sequence).\n\n- Memory management. The boot firmware must support the UEFI memory allocation\n API.\n\n- Compatibility and backward compatibility. The firmware should work on devices\n with different vendor, SOCs, and maintain backward compatibility with the\n corresponding Android version.\n\n### Boot firmware support\n\nWith the modifications necessary to support requirements in the previous\nsection, the following UEFI firmware implementations work with the GBF:\n\n- [EDK2 (Tianocore)](https://github.com/tianocore/edk). A EDK2 is a popular open-source UEFI implementation. GBL support is needed for EDK2-based bootloaders, and UEFI support is already present.\n- [U-Boot](https://docs.u-boot.org/en/latest/). A flexible and widely used open-source bootloader project that is gaining UEFI compatibility for GBL usage.\n- [LittleKernel (LK)](https://github.com/littlekernel/lk). An open-source bootloader used by some vendors.\n\nRun GBL\n-------\n\nYou can obtain a prebuilt GBL binary to run or build your own and run it.\n\n### Obtain and run the GBL binary\n\nGBL is distributed as a single EFI app binary. You can update this\nbinary independently from the device's base firmware using Android's standard\nupdate mechanism.\n\nBeginning with Android 16, if you ship a device based\non ARM-64 chipset, we strongly recommend that you deploy the [latest\nGoogle-signed version](https://dl.google.com/android-gbl/android16/20250703/signed-gbl-img-13709664.zip) of GBL and integrate it into your boot chain.\n\n### Build and run the GBL\n\nTo build and run the GBL:\n\n1. Verify that you have the repo tool and Bazel bootstrap installed:\n\n sudo apt install repo bazel-bootstrap\n\n2. Initialize your current directory for source control using the `uefi-gbl-mainline` manifest file:\n\n repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline\n repo sync -j16\n\n3. Build the EFI app:\n\n ./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all\n\n4. Run the EFI app within Cuttlefish:\n\n cvd start --android_efi_loader=\u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003epath_to_the_EFI_app\u003c/span\u003e\u003c/var\u003e ...\n\n Instead of booting Android directly, this `cvd start` command uses the EFI\n app to boot Android.\n\n| **Note:** For x86 platform, use the EFI image built for x86_64.\n\nFile bugs and contact the bootloader team\n-----------------------------------------\n\nTo report a bug for the GBL, navigate to the\n[Android Generic Bootloader component in Buganizer](https://issuetracker.google.com/issues/new?component=1602063&template=2011730).\n\nFor questions, contact the GBL team, send an email to `android-gbl@google.com`."]]