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 de
Bottine avec Settlefish à l'intérieur
aosp-main
ou sur des branches d'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 d'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 pour la fourchette Android d'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 les 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
Une fois les interactions du bootloader terminé, 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 (modules de noyau et de noyau) à l'aide de --kernel_path
et
--initramfs_path
arguments. L'assembleur repack les images de démarrage en fonction
les 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.