Od 27 marca 2025 r. zalecamy używanie android-latest-release zamiast aosp-main do kompilowania i wspołtworzenia AOSP. Więcej informacji znajdziesz w artykule o zmianach w AOSP.
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
Z tej strony dowiesz się, jak wdrożyć plik binarny GBL.
Wymagania dotyczące firmware’u rozruchowego
Aby można było używać GBL, oprogramowanie startowe musi spełniać te wymagania:
Zgodność z UEFI. Oprogramowanie musi implementować i wykorzystywać wymagane protokoły UEFI. Oprogramowanie sprzętowe musi też umożliwiać rozszerzenia specyficzne dla danego sprzedawcy za pomocą zdefiniowanych protokołów UEFI.
Zabezpieczenia. Oprogramowanie układowe musi realizować wszystkie aspekty funkcji Android Verified Boot (AVB), aby zapewnić wczytywanie tylko uwierzytelnionych obrazów.
Tryby uruchamiania. Plik binarny powinien obsługiwać różne tryby uruchamiania, takie jak normalny, tryb odzyskiwania i fastboot.
dynamiczne partycjonowanie. Firmware rozruchowy musi implementować logikę wyboru slotu, aby umożliwiać odczyt prawidłowego slotu rozruchowego A/B i być zgodny z dynocznymi partycjami oraz danymi użytkownika w super.
Konfiguracja systemu operacyjnego. Firmware musi umożliwiać modyfikowanie wiersza poleceń jądra, drzewa urządzenia (DTB) i bootconfigu z dostosowaniami OEM potrzebnymi do uruchomienia urządzenia.
Wczytywanie chronionej maszyny wirtualnej. Plik binarny powinien prawidłowo wczytać zweryfikowany wcześniej firmware chronionej maszyny wirtualnej przed jądrem Androida w obecności chronionych maszyn wirtualnych. Więcej informacji znajdziesz w sekwencji uruchamiania Microdroida.
zarządzanie pamięcią; Oprogramowanie rozruchowe musi obsługiwać interfejs API alokacji pamięci UEFI.
zgodność i zgodność wsteczna. Oprogramowanie powinno działać na urządzeniach z układami SOC różnych producentów i zapewniać zgodność wsteczną z odpowiednią wersją Androida.
Obsługa oprogramowania rozruchowego
Po wprowadzeniu modyfikacji niezbędnych do obsługi wymagań opisanych w poprzedniej sekcji następujące implementacje oprogramowania układowego UEFI działają z GBF:
EDK2 (Tianocore). EDK2 to popularna implementacja UEFI na licencji open source. W przypadku bootloaderów opartych na EDK2 wymagana jest obsługa GBL, a obsługa UEFI jest już dostępna.
U-Boot. Elastyczny i powszechnie stosowany projekt bootloadera open source, który zyskuje zgodność z UEFI na potrzeby GBL.
LittleKernel (LK). Ładowarka typu open source używana przez niektórych dostawców.
Uruchamianie GBL
Możesz uruchomić gotowy binarny plik GBL lub utworzyć własny i uruchomić go.
Pobieranie i uruchamianie pliku binarnego GBL
GBL jest rozpowszechniany jako pojedynczy plik binarny aplikacji EFI. Możesz aktualizować ten plik binarny niezależnie od podstawowego oprogramowania układowego urządzenia, korzystając ze standardowego mechanizmu aktualizacji Androida.
Jeśli od Androida 16 sprzedajesz urządzenie z procesorem ARM-64, zdecydowanie zalecamy wdrożenie najnowszej wersji GBL podpisanej przez Google i zintegrowanie jej z łańcuchem rozruchu.
Tworzenie i uruchamianie GBL
Aby skompilować i uruchomić GBL:
Sprawdź, czy masz zainstalowane repozytorium i bootstrap Bazel:
sudo apt install repo bazel-bootstrap
Zainicjuj bieżący katalog do kontroli źródła za pomocą pliku manifestu uefi-gbl-mainline:
Jeśli masz pytania, skontaktuj się z zespołem GBL, wysyłając e-maila na adres android-gbl@google.com.
Treść strony i umieszczone na niej fragmenty kodu podlegają licencjom opisanym w Licencji na treści. Java i OpenJDK są znakami towarowymi lub zastrzeżonymi znakami towarowymi należącymi do firmy Oracle lub jej podmiotów stowarzyszonych.
Ostatnia aktualizacja: 2025-07-27 UTC.
[[["Łatwo zrozumieć","easyToUnderstand","thumb-up"],["Rozwiązało to mój problem","solvedMyProblem","thumb-up"],["Inne","otherUp","thumb-up"]],[["Brak potrzebnych mi informacji","missingTheInformationINeed","thumb-down"],["Zbyt skomplikowane / zbyt wiele czynności do wykonania","tooComplicatedTooManySteps","thumb-down"],["Nieaktualne treści","outOfDate","thumb-down"],["Problem z tłumaczeniem","translationIssue","thumb-down"],["Problem z przykładami/kodem","samplesCodeIssue","thumb-down"],["Inne","otherDown","thumb-down"]],["Ostatnia aktualizacja: 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`."]]