En esta página, se describe cómo compilar, ejecutar y desarrollar funciones del bootloader de Android en un dispositivo Cuttlefish.
Fuentes del AOSP
Para desarrollar funciones del bootloader de Android, usa la configuración de Cuttlefish U-boot con Cuttlefish en aosp-main
o en ramas de la imagen genérica del sistema (GSI) para Android 11 o versiones posteriores. Las siguientes son las fuentes del AOSP:
Manifiesto para la configuración de Cuttlefish de U-boot (
u-boot-mainline
).
Cómo desarrollar un bootloader
Para compilar, ejecutar y desarrollar funciones del bootloader de forma local, sigue estos pasos:
Clona el manifiesto para la bifurcación de Android de U-boot:
$ 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
Compila el objetivo del bootloader apropiado para tu arquitectura de Cuttlefish. Por ejemplo:
x86_64
$ tools/bazel run //u-boot:crosvm_x86_64_dist
aarch64
$ tools/bazel run //u-boot:crosvm_aarch64_dist
El objeto binario del bootloader resultante (
u-boot.bin
para arm64 yu-boot.rom
para x86_64) se encuentra en$PATH_TO_REPO/out/u-boot-mainline/dist
.Ejecuta el dispositivo Cuttlefish con el bootloader. Incluye el parámetro
pause_in_bootloader
para inhabilitar inicio automático y permitirte interactuar con el bootloader.$ launch_cvd \ -bootloader /$PATH/$TO/u-boot-mainline/out/u-boot-mainline/dist/u-boot.rom \ -pause_in_bootloader -console=true
Para interactuar con el bootloader, conectate con la consola del bootloader.
$ screen ~/cuttlefish_runtime/console
Una vez que finalices las interacciones con el bootloader, ingresa
boot
en la consola para continuar con el inicio.
Cómo probar el flujo del bootloader con diferentes kernels
Para probar el flujo del bootloader con diferentes kernels o módulos de kernels, pasa los artefactos objetivo (kernels y módulos de kernels) usando los argumentos --kernel_path
y --initramfs_path
. El ensamblador vuelve a empaquetar las imágenes de arranque en los artefactos que se pasaron en los argumentos.
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
Para más información, consulta Desarrolla Kernels de Android.