The Generic Bootloader (GBL) is a standardized, updatable bootloader solution designed to streamline the Android boot process. GBL replaces the highly fragmented landscape of vendor-specific bootloaders with a single, consistently maintained component. This change reduces redundancy, improves security, and simplifies updates across the Android ecosystem.
GBL consists of the following components:
- core Android boot logic
- The logic that includes the main program loop, boot mode detection, and loading the kernel.
- Fastboot
- A communication protocol and diagnostic tool used for device flashing and debug.
- Vendor extensions
- Extension of the aforementioned components of GBL by creating your own protocols. These protocols are agreed upon in advance before GBL adds them to their dependency list. Vendor extensions are optional.
- UEFI protocol handlers
- Implementations for required and recommended UEFI protocols, including block I/O, memory allocation, and random number generation. Reference implementations are found in the boot firmware projects (EDK2, UBoot, LK).
- Android Specific UEFI Protocol definitions
- Custom UEFI protocols for AVB, Fastboot, slot selection, OS configuration, and more. Implementations are found in Android Silicon Vendor firmware projects.
Beginning with Android 16, if you ship a device based on ARM-64 chipset, we strongly recommend that you deploy the latest Google-signed version of GBL and integrate it into your boot chain.
What's next?
To learn how to deploy the Generic Bootloader, refer to Deploy gbl.