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 na
ramificação de lançamento mais recente (android16-release) 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, link em inglês).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) -qCrie o alvo do carregador de inicialização adequado à arquitetura do Cuttlefish. Por exemplo:
x86_64
$ tools/bazel run //u-boot:crosvm_x86_64_distaarch64
$ tools/bazel run //u-boot:crosvm_aarch64_dist
O binário resultante do carregador de inicialização (
u-boot.binpara arm64 eu-boot.rompara 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_bootloaderpara 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=truePara interagir com o carregador de inicialização, conecte-se ao console dele.
$ screen ~/cuttlefish_runtime/consoleAssim que terminar de interagir com o carregador de inicialização, digite
bootno 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.imgPara mais informações, confira Desenvolver Kernels Android.