Questa pagina descrive come compilare, eseguire e sviluppare funzionalità del bootloader di Android su un dispositivo Cuttlefish.
Origini AOSP
Per sviluppare le funzionalità del bootloader di Android, utilizza la configurazione di Cuttlefish di
U-boot con Cuttlefish nel
branch di release più recente (android15-qpr2-release
) o nei
branch di immagini di sistema generiche (GSI)
per Android 11 o versioni successive. Di seguito sono riportate le origini in AOSP:
Sviluppare un bootloader
Per compilare, eseguire e sviluppare le funzionalità del bootloader localmente:
Clona il manifest per il fork di U-boot di Android:
$ 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
Crea il target del bootloader appropriato per la tua architettura Cuttlefish. Ad esempio:
x86_64
$ tools/bazel run //u-boot:crosvm_x86_64_dist
aarch64
$ tools/bazel run //u-boot:crosvm_aarch64_dist
Il file binario del bootloader risultante (
u-boot.bin
per arm64 eu-boot.rom
per x86_64) si trova in$PATH_TO_REPO/out/u-boot-mainline/dist
.Avvia il dispositivo Cuttlefish con il bootloader. Includi il parametro
pause_in_bootloader
per disattivare l'avvio automatico e interagire con il bootloader.$ launch_cvd \ -bootloader /$PATH/$TO/u-boot-mainline/out/u-boot-mainline/dist/u-boot.rom \ -pause_in_bootloader -console=true
Per interagire con il bootloader, connettiti alla console del bootloader.
$ screen ~/cuttlefish_runtime/console
Al termine delle interazioni con il bootloader, continua l'avvio digitando
boot
nella console.
Testa il flusso del bootloader con diversi kernel
Per testare il flusso del bootloader con diversi kernel o moduli del kernel, passa gli elementi target (kernel e moduli del kernel) utilizzando gli argomenti --kernel_path
e --initramfs_path
. L'assemblatore reimballa le immagini di avvio in base agli elementi passati negli argomenti.
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
Per saperne di più, consulta la pagina Sviluppare kernel Android.