Z tej strony dowiesz się, jak wdrożyć plik binarny GBL.
Wymagania dotyczące oprogramowania rozruchowego
Aby korzystać z GBL, oprogramowanie układowe rozruchu musi spełniać te wymagania:
zgodność z UEFI; Oprogramowanie musi implementować i używać wymaganych protokołów UEFI. Oprogramowanie musi też umożliwiać rozszerzenia specyficzne dla dostawcy za pomocą zdefiniowanych protokołów UEFI.
Zabezpieczenia. Oprogramowanie układowe musi implementować wszystkie aspekty zweryfikowanego rozruchu Androida (AVB), co zapewnia, że wczytywane są tylko uwierzytelnione obrazy.
Tryby uruchamiania. Plik binarny powinien obsługiwać różne tryby uruchamiania, takie jak normalne uruchamianie, uruchamianie w trybie odzyskiwania i szybkie uruchamianie.
Dynamiczne partycjonowanie. Oprogramowanie układowe rozruchu musi implementować logikę wyboru gniazda, aby obsługiwać odczyt prawidłowego gniazda rozruchu A/B i być zgodne z dynamicznymi partycjami i danymi użytkownika w superpartycji.
konfiguracji systemu operacyjnego, Oprogramowanie musi mieć możliwość modyfikowania wiersza poleceń jądra, drzewa urządzeń (DTB) i konfiguracji rozruchu za pomocą dostosowań OEM potrzebnych do uruchomienia urządzenia.
Wczytuję chronioną maszynę wirtualną. Plik binarny powinien prawidłowo wczytywać wstępnie zweryfikowane oprogramowanie sprzętowe chronionej maszyny wirtualnej przed jądrem Androida w przypadku obecności chronionych maszyn wirtualnych. Więcej informacji znajdziesz w artykule sekwencja 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 różnych producentów i z różnymi układami SOC oraz zachowywać zgodność wsteczną z odpowiednią wersją Androida.
Obsługa oprogramowania układowego rozruchu
Po wprowadzeniu zmian niezbędnych do spełnienia wymagań opisanych w poprzedniej sekcji z GBF współpracują te implementacje oprogramowania układowego UEFI:
- EDK2 (Tianocore). EDK2 to popularna implementacja UEFI o otwartym kodzie źródłowym. Obsługa GBL jest potrzebna w przypadku programów rozruchowych opartych na EDK2, a obsługa UEFI jest już dostępna.
- U-Boot. Elastyczny i powszechnie używany projekt bootloadera open source, który zyskuje zgodność z UEFI na potrzeby GBL.
- LittleKernel (LK). Bootloader typu open source używany przez niektórych dostawców.
Uruchamianie GBL
Możesz pobrać gotowy plik binarny GBL, aby go uruchomić, lub utworzyć własny i go uruchomić.
Pobieranie i uruchamianie pliku binarnego GBL
GBL jest rozpowszechniany jako pojedynczy plik binarny aplikacji EFI. Ten plik binarny możesz aktualizować niezależnie od podstawowego oprogramowania układowego urządzenia za pomocą standardowego mechanizmu aktualizacji Androida.
Począwszy od Androida 16, jeśli wprowadzasz na rynek urządzenie oparte na chipsecie ARM-64, zdecydowanie zalecamy wdrożenie najnowszej wersji GBL podpisanej przez Google i zintegrowanie jej z łańcuchem rozruchowym.
Kompilowanie i uruchamianie GBL
Aby skompilować i uruchomić GBL:
Sprawdź, czy masz zainstalowane narzędzie repo i Bazel bootstrap:
sudo apt install repo bazel-bootstrap
Zainicjuj bieżący katalog na potrzeby kontroli źródła za pomocą
uefi-gbl-mainline
pliku manifestu:repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline repo sync -j16
Skompiluj aplikację EFI:
./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
Uruchom aplikację EFI w Cuttlefish:
cvd start --android_efi_loader=path_to_the_EFI_app ...
Zamiast uruchamiać Androida bezpośrednio, to polecenie
cvd start
używa aplikacji EFI do uruchamiania Androida.
Zgłaszanie błędów i kontaktowanie się z zespołem programu rozruchowego
Aby zgłosić błąd dotyczący GBL, otwórz komponent Android Generic Bootloader w Buganizerze.
Jeśli masz pytania, skontaktuj się z zespołem GBL, wysyłając e-maila na adres android-gbl@google.com
.