Starting March 27, 2025, we recommend using android-latest-release
instead of aosp-main
to build and contribute to AOSP. For more information, see Changes to AOSP.
Generic Bootloader (GBL) overview
Stay organized with collections
Save and categorize content based on your preferences.
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.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-08-29 UTC.
[null,null,["Last updated 2025-08-29 UTC."],[],[],null,["# Generic Bootloader (GBL) overview\n\nThe *Generic Bootloader (GBL)* is a standardized, updatable bootloader solution\ndesigned to streamline the Android boot process. GBL replaces the highly\nfragmented landscape of vendor-specific bootloaders with a single, consistently\nmaintained component. This change reduces redundancy, improves security, and\nsimplifies updates across the Android ecosystem.\n\nGBL consists of the following components:\n\n*core Android boot logic*\n: The logic that includes the main program loop, boot mode detection, and\n loading the kernel.\n\n*Fastboot*\n: A communication protocol and diagnostic tool used for device flashing and\n debug.\n\n*Vendor extensions*\n: Extension of the aforementioned components of GBL by creating\n your own protocols. These protocols are agreed upon in advance before GBL adds\n them to their dependency list. Vendor extensions are optional.\n\n*UEFI protocol handlers*\n: Implementations for required and recommended UEFI protocols, including block\n I/O, memory allocation, and random number generation. Reference implementations\n are found in the boot firmware projects (EDK2, UBoot, LK).\n\n*Android Specific UEFI Protocol definitions*\n: Custom UEFI protocols for AVB, Fastboot, slot selection, OS configuration,\n and more. Implementations are found in Android Silicon Vendor firmware projects.\n\nBeginning with Android 16, if you ship a device based on ARM-64 chipset, we\nstrongly recommend that you deploy the latest Google-signed version of GBL and\nintegrate it into your boot chain.\n\nWhat's next?\n------------\n\nTo learn how to deploy the Generic Bootloader, refer to\n[Deploy gbl](/docs/core/architecture/bootloader/generic-bootloader/gbl-dev)."]]