Développer des fonctionnalités de bootloader Android

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 :

Développer un bootloader

Pour créer, exécuter et développer des fonctionnalités de bootloader en local, procédez comme suit :

  1. 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
  2. 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 et u-boot.rom pour x86_64) se trouve dans $PATH_TO_REPO/out/u-boot-mainline/dist.

  3. 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
  4. Pour interagir avec le bootloader, connectez-vous à la console du bootloader.

    $ screen ~/cuttlefish_runtime/console
  5. 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.