Android 커널 개발

이 페이지에서는 Cuttlefish 기기에서 Android 커널을 개발하는 방법을 설명합니다.

지원되는 커널 메니페스트

Cuttlefish는 주요 버전과 AOSP GSI 버전에서 다음 커널 메니페스트를 지원합니다.

  • aosp-main
    • common-android14-6.1
    • common-android14-5.15
    • common-android-mainline
  • aosp-android13-gsi
    • common-android13-5.15
    • common-android13-5.10
  • aosp-android12-gsi
    • common-android12-5.10
    • common-android12-5.4
    • common-android-4.19-stable
  • aosp-android11-gsi
    • common-android11-5.4
    • common-android-4.19-stable
    • common-android-4.14-stable

다음은 Cuttlefish 기기에서 커널을 개발하기 위한 커널 소스입니다.

Android 커널 개발

Cuttlefish 기기에서 커널을 개발하려면 다음 단계를 따르세요.

  1. 사용 중인 Cuttlefish 기기에 적합한 커널 저장소 메니페스트를 클론하고 필요한 변경사항을 적용합니다.

    mkdir common-android14-6.1
    cd common-android14-6.1
    repo init -u https://android.googlesource.com/kernel/manifest -b common-android14-6.1
    repo sync -c -j$(nproc) -q
    
  2. 커널과 ramdisk를 빌드합니다. 자세한 내용은 가상 기기의 공급업체 모듈 빌드를 참고하세요.

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

    common-android-4.19-stable, common-android-4.14-stable 또는 common-android11-5.4 커널 메니페스트를 사용하는 경우 다음을 실행합니다.

    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
    

    커널 소스를 다운로드하고 커널 개발 환경을 설정하지 않기 위해 로컬에서 빌드하는 대신 ci.android.com에서 관련 아티팩트를 다운로드할 수 있습니다.

  3. Cuttlefish가 적용된 커널 및 ramdisk를 실행합니다.

    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
    

    비GKI 커널(4.19 및 이전 버전)을 실행하는 경우 -initramfs_path 인수를 생략합니다.

    Cuttlefish의 aarch64 버전에서 커널을 실행하는 경우 aarch64 빌드 구성을 사용하고 bzImage 대신 Image 아티팩트를 사용합니다.

    cvd start \
        -kernel_path=/$PATH/$TO/common-android14-6.1/out/android14-5.15/dist/Image \
        -initramfs_path=/$PATH/$TO/common-android14-6.1/out/android14-5.15/dist/initramfs.img