Sviluppare funzionalità del bootloader di Android

Questa pagina descrive come compilare, eseguire e sviluppare funzionalità del bootloader di Android su un dispositivo Cuttlefish.

Origini AOSP

Per sviluppare le funzionalità del bootloader di Android, utilizza la configurazione di Cuttlefish di U-boot con Cuttlefish in aosp-main o nei branch generic system image (GSI) per Android 11 o versioni successive. Di seguito sono riportate le origini in AOSP:

Sviluppa un bootloader

Per creare, eseguire e sviluppare funzionalità bootloader localmente, segui questi passaggi:

  1. Clona il manifest per il fork Android di 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. Creare il target del bootloader appropriato per la tua architettura Cuttlefish. Ad esempio:

    • x86_64

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

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

    Il file binario del bootloader risultante (u-boot.bin per arm64 e u-boot.rom per x86_64) viene trovato in $PATH_TO_REPO/out/u-boot-mainline/dist.

  3. Avvia il dispositivo Cuttlefish con il bootloader. Includi il parametro Parametro pause_in_bootloader per disattivare l'avvio automatico e consentirti di interagire con il bootloader.

    $ launch_cvd \
        -bootloader /$PATH/$TO/u-boot-mainline/out/u-boot-mainline/dist/u-boot.rom \
        -pause_in_bootloader -console=true
  4. Per interagire con il bootloader, connettiti alla console del bootloader.

    $ screen ~/cuttlefish_runtime/console
  5. Al termine delle interazioni con il bootloader, continua l'avvio digitando boot nella console.

Testare il flusso del bootloader con kernel diversi

Per testare il flusso del bootloader con kernel o moduli kernel diversi, passa gli artefatti di destinazione (moduli kernel e kernel) utilizzando --kernel_path e --initramfs_path argomenti. L'assemblatore reimballa le immagini di avvio in base gli artefatti passati negli argomenti.

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

Per ulteriori informazioni, vedi Sviluppare kernel Android.