Esta página descreve como criar, executar e desenvolver recursos do carregador de inicialização do Android em um dispositivo Cuttlefish.
Origens do AOSP
Para desenvolver recursos do carregador de inicialização do Android, use a configuração Cuttlefish do
U-boot (link em inglês) com o Cuttlefish em
aosp-main
ou nas ramificações da imagem genérica do sistema (GSI)
do Android 11 ou versões mais recentes. Estas são as origens no AOSP:
Manifesto para a configuração Cuttlefish do U-boot (
u-boot-mainline
).Carregadores de inicialização QEMU (arm, aarch64, x86_64, riscv).
Desenvolver um carregador de inicialização
Para criar, executar e desenvolver recursos do carregador de inicialização localmente, siga esses passos:
Clone o manifesto para a ramificação do Android do 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
Crie o alvo do carregador de inicialização adequado à arquitetura do Cuttlefish. Por exemplo:
x86_64
$ tools/bazel run //u-boot:crosvm_x86_64_dist
aarch64
$ tools/bazel run //u-boot:crosvm_aarch64_dist
O binário resultante do carregador de inicialização (
u-boot.bin
para arm64 eu-boot.rom
para x86_64) fica localizado em$PATH_TO_REPO/out/u-boot-mainline/dist
.Inicie o dispositivo Cuttlefish com o carregador de inicialização. Inclua o parâmetro
pause_in_bootloader
para desativar a inicialização automática e para poder interagir com o carregador de inicialização.$ launch_cvd \ -bootloader /$PATH/$TO/u-boot-mainline/out/u-boot-mainline/dist/u-boot.rom \ -pause_in_bootloader -console=true
Para interagir com o carregador de inicialização, conecte-se ao console dele.
$ screen ~/cuttlefish_runtime/console
Assim que terminar de interagir com o carregador de inicialização, digite
boot
no console para continuar com a inicialização.
Testar o fluxo do carregador de inicialização com vários kernels
Para testar o carregador de inicialização com vários kernels ou módulos do kernel, transmita os
artefatos alvo (kernel e módulos do kernel) usando os argumentos --kernel_path
e
--initramfs_path
. O assembler remonta as imagens de inicialização com base nos
artefatos transmitidos nos 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 mais informações, confira Desenvolver Kernels Android.