Na tej stronie opisano, jak tworzyć, uruchamiać i rozwijać funkcje ładowarki rozruchowej Androida na urządzeniu Cuttlefish.
Źródła AOSP
Aby opracowywać funkcje w bootloadzie Androida, użyj konfiguracji Cuttlefish w U-boot z Cuttlefish w najnowszej gałęzi wersji (android16-release
) lub w gałęziach ogólnego obrazu systemu (GSI) w przypadku Androida 11 lub nowszego. Źródła w AOSP:
Plik manifestu konfiguracji Cuttlefish U-boot (
u-boot-mainline
).
Tworzenie programu rozruchowego
Aby skompilować, uruchomić i rozwijać funkcje bootloadera lokalnie, wykonaj te czynności:
Skopiuj plik manifestu dla gałęzi U-boot na Androida:
$ 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
Utwórz obraz bootloadera odpowiedni dla architektury Cuttlefish. Na przykład:
x86_64
$ tools/bazel run //u-boot:crosvm_x86_64_dist
aarch64
$ tools/bazel run //u-boot:crosvm_aarch64_dist
Wygenerowany binarny program rozruchowy (
u-boot.bin
w przypadku arm64 iu-boot.rom
w przypadku x86_64) znajduje się w$PATH_TO_REPO/out/u-boot-mainline/dist
.Uruchom urządzenie Cuttlefish za pomocą programu rozruchowego. Dołącz parametr
pause_in_bootloader
, aby wyłączyć automatyczne uruchamianie i umożliwić interakcję z bootloaderem.$ launch_cvd \ -bootloader /$PATH/$TO/u-boot-mainline/out/u-boot-mainline/dist/u-boot.rom \ -pause_in_bootloader -console=true
Aby korzystać z bootloadera, połącz się z konsolą bootloadera.
$ screen ~/cuttlefish_runtime/console
Gdy skończysz korzystać z bootloadera, kontynuuj rozruch, wpisując
boot
w konsoli.
Testowanie procesu uruchamiania programu ładującego z różnymi jądrami
Aby przetestować proces uruchamiania z różnymi jądrami lub modułami jądra, prześlij docelowe artefakty (jądro i moduły jądra) za pomocą argumentów --kernel_path
i --initramfs_path
. Zbieracz ponownie pakuje obrazy rozruchowe na podstawie artefaktów przekazanych w argumentach.
cvd create \
-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
Więcej informacji znajdziesz w artykule Tworzenie jądra Androida.