Cette page explique comment créer, exécuter et développer des fonctionnalités de démarreur Android sur un appareil Cuttlefish.
Sources AOSP
Pour développer les fonctionnalités du bootloader Android, utilisez la configuration Cuttlefish d'U-boot avec Cuttlefish dans aosp-main
ou sur les branches image système générique (GSI) pour Android 11 ou version ultérieure. Voici les sources dans AOSP:
Fichier manifeste pour la configuration Cuttlefish de U-boot (
u-boot-mainline
).
Développer un bootloader
Pour créer, exécuter et développer des fonctionnalités de bootloader en local, procédez comme suit:
Clonez le fichier manifeste de la duplication 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
Créez la cible du bootloader adaptée à votre architecture Cuttlefish. Exemple :
x86_64
$ tools/bazel run //u-boot:crosvm_x86_64_dist
aarch64
$ tools/bazel run //u-boot:crosvm_aarch64_dist
Le binaire du bootloader obtenu (
u-boot.bin
pour arm64 etu-boot.rom
pour x86_64) se trouve dans$PATH_TO_REPO/out/u-boot-mainline/dist
.Lancez l'appareil Cuttlefish avec le bootloader. Incluez le paramètre
pause_in_bootloader
pour désactiver le démarrage automatique et vous permettre d'interagir avec le bootloader.$ launch_cvd \ -bootloader /$PATH/$TO/u-boot-mainline/out/u-boot-mainline/dist/u-boot.rom \ -pause_in_bootloader -console=true
Pour interagir avec le bootloader, connectez-vous à la console du bootloader.
$ screen ~/cuttlefish_runtime/console
Lorsque vous avez terminé les interactions avec le bootloader, poursuivez le démarrage en saisissant
boot
dans la console.
Tester le flux du bootloader avec différents noyaux
Pour tester le flux du bootloader avec différents noyaux ou modules de noyau, transmettez les artefacts cibles (noyau et modules de noyau) à l'aide des arguments --kernel_path
et --initramfs_path
. L'assembleur repacke les images de démarrage en fonction des artefacts transmis dans les arguments.
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
Pour en savoir plus, consultez la section Développer des noyaux Android.