Na tej stronie opisano, jak budować, uruchamiać i rozwijać funkcje programu ładującego dla systemu Android na urządzeniu mątwy.
Źródła AOSP
Aby opracować funkcje programu ładującego dla Androida, użyj konfiguracji Cuttlefish U-boot z Cuttlefish w aosp-main
lub w gałęziach ogólnego obrazu systemu (GSI) dla Androida 11 lub nowszego. Poniżej znajdują się źródła w AOSP:
Opracuj bootloader
Aby lokalnie zbudować, uruchomić i rozwijać funkcje programu ładującego, wykonaj następujące kroki:
Sklonuj manifest dla rozwidlenia U-boota na Androidzie:
$ mkdir u-boot-mainline $ cd u-boot-mainline $ repo init -u https://android.googlesource.com/kernel/manifest -b u-boot-mainline $ repo sync -j$(nproc) -q
Zbuduj docelowy bootloader odpowiedni dla architektury mątwy. Na przykład:
x86_64
$ tools/bazel run //u-boot:crosvm_x86_64_dist
aarch64
$ tools/bazel run //u-boot:crosvm_aarch64_dist
Wynikowy plik binarny programu ładującego (
u-boot.bin
dla arm64 iu-boot.rom
dla x86_64) znajduje się w$PATH_TO_REPO/out/u-boot-mainline/dist
.Uruchom urządzenie Cuttlefish za pomocą bootloadera. Dołącz parametr
pause_in_bootloader
, aby wyłączyć automatyczne uruchamianie i umożliwić interakcję z programem ładującym.$ launch_cvd \ -bootloader /$PATH/$TO/u-boot-mainline/out/u-boot-mainline/dist/u-boot.rom \ -pause_in_bootloader -console=true
Aby wejść w interakcję z programem ładującym, połącz się z konsolą programu ładującego.
$ screen ~/cuttlefish_runtime/console
Po zakończeniu interakcji z programem ładującym kontynuuj uruchamianie, wpisując
boot
w konsoli.
Przetestuj przepływ bootloadera z różnymi jądrami
Aby przetestować przepływ programu ładującego z różnymi jądrami lub modułami jądra, przekaż docelowe artefakty (jądro i moduły jądra) za pomocą argumentów --kernel_path
i --initramfs_path
. Asembler przepakowuje obrazy startowe w oparciu o artefakty przekazane w argumentach.
cvd start \
-kernel_path=/$PATH/$TO/common-android14-6.1/out/android14-6.1/dist/bzImage \
-initramfs_path=/$PATH/$TO/common-android14-6.1/out/android14-6.1/dist/initramfs.img
Aby uzyskać więcej informacji, zobacz temat Tworzenie jąder systemu Android .