Développer les fonctionnalités du chargeur de démarrage Android

Cette page décrit comment créer, exécuter et développer des fonctionnalités du chargeur de démarrage Android sur un appareil Cuttlefish.

Sources AOSP

Pour développer les fonctionnalités du chargeur de démarrage Android, utilisez la configuration Cuttlefish de U-boot avec Cuttlefish dans aosp-main ou sur les branches d'image système générique (GSI) pour Android 11 ou version ultérieure. Voici les sources de l'AOSP :

Développer un chargeur de démarrage

Pour créer, exécuter et développer des fonctionnalités du chargeur de démarrage localement, procédez comme suit :

  1. Clonez le manifeste pour le fork 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
    
  2. Créez la cible du chargeur de démarrage adaptée à votre architecture Cuttlefish. Par exemple:

    • x86_64

      $ tools/bazel run //u-boot:crosvm_x86_64_dist
      
    • aarch64

      $ tools/bazel run //u-boot:crosvm_aarch64_dist
      

    Le binaire du chargeur de démarrage résultant ( 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 le périphérique Cuttlefish avec le chargeur de démarrage. Incluez le paramètre pause_in_bootloader pour désactiver le démarrage automatique et vous permettre d'interagir avec le chargeur de démarrage.

    $ 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 chargeur de démarrage, connectez-vous à la console du chargeur de démarrage.

    $ screen ~/cuttlefish_runtime/console
    
  5. Une fois les interactions du chargeur de démarrage terminées, poursuivez le démarrage en tapant boot dans la console.

Tester le flux du chargeur de démarrage avec différents noyaux

Pour tester le flux du chargeur de démarrage 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 reconditionne les images de démarrage en fonction des artefacts transmis dans les arguments.

cvd start \
    -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 plus d'informations, consultez Développer des noyaux Android .