Sviluppa funzionalità del bootloader Android

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

Fonti dell'AOSP

Per sviluppare funzionalità del bootloader Android, utilizzare la configurazione Cuttlefish di U-boot con Cuttlefish in aosp-main o sui rami GSI (Generic System Image) per Android 11 o versioni successive. Di seguito sono riportate le fonti in AOSP:

Sviluppa un bootloader

Per creare, eseguire e sviluppare le funzionalità del bootloader localmente, attenersi alla seguente procedura:

  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. Costruisci il target del bootloader appropriato per la tua architettura Cuttlefish. Per 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 disabilitare 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. Una volta terminate le 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, passare gli artefatti di destinazione (kernel e moduli kernel) utilizzando gli argomenti --kernel_path e --initramfs_path . L'assembler ricompone le immagini di avvio in base agli artefatti passati negli argomenti.

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

Per ulteriori informazioni, consulta Sviluppare kernel Android .