Wdrażanie GBL

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:

  1. Sprawdź, czy masz zainstalowane narzędzie repo i Bazel bootstrap:

    sudo apt install repo bazel-bootstrap
    
  2. 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
    
  3. Skompiluj aplikację 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, 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.