Cómo desarrollar Kernels de Android

En esta página, se describe cómo desarrollar kernels de Android en dispositivos Cuttlefish.

Manifiestos de kernels admitidos

Cuttlefish admite los siguientes manifiestos de kernels en las versiones principales y de GSI del AOSP.

  • En aosp-main
    • common-android-mainline
    • common-android16-6.12
    • common-android15-6.6
    • common-android14-6.1
    • common-android14-5.15
  • En aosp-android13-gsi
    • common-android13-5.15
    • common-android13-5.10
  • En aosp-android12-gsi
    • common-android12-5.10
    • common-android12-5.4
    • common-android-4.19-stable
  • En aosp-android11-gsi
    • common-android11-5.4
    • common-android-4.19-stable
    • common-android-4.14-stable

Las siguientes son fuentes de kernels para el desarrollo de kernels en dispositivos Cuttlefish.

Cómo desarrollar Kernels de Android

Para desarrollar kernels en dispositivos Cuttlefish, sigue los pasos que aparecen a continuación:

  1. Clona el manifiesto del repositorio de kernel correspondiente para tu dispositivo Cuttlefish y realiza cualquier cambio.

    mkdir common-android-mainline
    cd common-android-mainline
    repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
    repo sync -c -j$(nproc) -q
  2. Compila el kernel y el ramdisk. Para obtener más información, consulta Cómo compilar módulos de proveedor para el dispositivo virtual.

    tools/bazel run //common-modules/virtual-device:virtual_device_x86_64_dist

    Si usas los manifiestos de kernel common-android-4.19-stable, common-android-4.14-stable, o common-android11-5.4, ejecuta:

    BUILD_CONFIG=common/build.config.gki.x86_64 build/build.sh && BUILD_CONFIG=common-modules/virtual-device/build.config.cuttlefish.x86_64 build/build.sh

    En lugar de compilar de forma local (para evitar descargar la fuente del kernel y configurar su entorno de desarrollo), puedes descargar los artefactos relevantes desde ci.android.com.

  3. Ejecuta el kernel y el ramdisk con Cuttlefish.

    cvd create \
        -kernel_path=./out/virtual_device_x86_64/dist/bzImage \
        -initramfs_path=./out/virtual_device_x86_64/dist/initramfs.img

    Si ejecutas un kernel que no es de GKI (cualquier versión igual o inferior a 4.19), omite el argumento -initramfs_path.

    Si ejecutas el kernel en una versión aarch64 de Cuttlefish, usa la configuración de compilación aarch64 y el artefacto Image en lugar de bzImage.

    cvd create \
        -kernel_path=./out/virtual_device_aarch64/dist/Image \
        -initramfs_path=./out/virtual_device_aarch64/dist/initramfs.img