Sviluppare funzionalità del bootloader di Android

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

Origini AOSP

Per sviluppare le funzionalità del bootloader Android, utilizza la configurazione di U-boot di Cuttlefish con Cuttlefish nel ramo di release più recente (android17-release) o nei rami dell'immagine di sistema generica (GSI) per Android 11 o versioni successive. Di seguito sono riportate le origini in AOSP:

Sviluppare un bootloader

Per creare, eseguire e sviluppare le funzionalità del bootloader in locale:

  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. Crea la destinazione del bootloader appropriata per l'architettura di 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) si trova in $PATH_TO_REPO/out/u-boot-mainline/dist.

  3. Avvia il dispositivo Cuttlefish con il bootloader. Includi il parametro pause_in_bootloader per disattivare l'avvio automatico e 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 (kernel e moduli kernel) utilizzando gli argomenti --kernel_path e --initramfs_path. L'assembler ricompila le immagini di avvio in base agli 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, consulta Sviluppare kernel Android.