Wdrażanie GBL

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:

  1. Sprawdź, czy masz zainstalowane repozytorium i bootstrap Bazel:

    sudo apt install repo bazel-bootstrap
    
  2. Zainicjuj bieżący katalog do kontroli źródła za pomocą pliku manifestu uefi-gbl-mainline:

    repo init -u https://android.googlesource.com/kernel/manifest -b uefi-gbl-mainline
    repo sync -j16
    
  3. Kompilowanie aplikacji EFI:

    ./tools/bazel run //bootable/libbootloader:gbl_efi_dist --extra_toolchains=@gbl//toolchain:all
    
  4. Uruchom aplikację EFI w Cuttlefish:

    cvd start --android_efi_loader=path_to_the_EFI_app ...
    

    Zamiast uruchamiać Androida bezpośrednio, możesz użyć polecenia cvd start, aby uruchomić Androida za pomocą aplikacji EFI.

Zgłaszanie błędów i kontakt z zespołem bootloadera

Aby zgłosić błąd w GBL, otwórz komponent Android Generic Bootloader w Bugani zerze.

Jeśli masz pytania, skontaktuj się z zespołem GBL, wysyłając e-maila na adres android-gbl@google.com.