Desarrollar funciones del gestor de arranque de Android

Esta página describe cómo crear, ejecutar y desarrollar funciones del gestor de arranque de Android en un dispositivo Cuttlefish.

fuentes AOSP

Para desarrollar funciones del gestor de arranque de Android, utilice la configuración Cuttlefish de U-boot con Cuttlefish en aosp-main o en ramas de imagen genérica del sistema (GSI) para Android 11 o superior. Las siguientes son las fuentes en AOSP:

Desarrollar un gestor de arranque

Para crear, ejecutar y desarrollar funciones del gestor de arranque localmente, siga estos pasos:

  1. Clona el manifiesto para la bifurcación de 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. Cree el destino del gestor de arranque apropiado para su arquitectura Cuttlefish. Por ejemplo:

    • x86_64

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

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

    El binario del gestor de arranque resultante ( u-boot.bin para arm64 y u-boot.rom para x86_64) se encuentra en $PATH_TO_REPO/out/u-boot-mainline/dist .

  3. Inicie el dispositivo Cuttlefish con el gestor de arranque. Incluya el parámetro pause_in_bootloader para deshabilitar el inicio automático y permitirle interactuar con el gestor de arranque.

    $ launch_cvd \
        -bootloader /$PATH/$TO/u-boot-mainline/out/u-boot-mainline/dist/u-boot.rom \
        -pause_in_bootloader -console=true
    
  4. Para interactuar con el gestor de arranque, conéctese a la consola del gestor de arranque.

    $ screen ~/cuttlefish_runtime/console
    
  5. Cuando haya terminado con las interacciones del cargador de arranque, continúe con el arranque escribiendo boot en la consola.

Pruebe el flujo del gestor de arranque con diferentes núcleos

Para probar el flujo del gestor de arranque con diferentes kernels o módulos de kernel, pase los artefactos de destino (kernel y módulos de kernel) usando los argumentos --kernel_path y --initramfs_path . El ensamblador vuelve a empaquetar las imágenes de arranque según los artefactos pasados ​​en los argumentos.

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

Para obtener más información, consulte Desarrollar kernels de Android .