พัฒนาเคอร์เนล Android

หน้านี้จะอธิบายวิธีพัฒนาเคอร์เนล Android ในอุปกรณ์ Cuttlefish

ไฟล์ Manifest ของเคอร์เนลที่รองรับ

Cuttlefish รองรับไฟล์ Manifest ของเคอร์เนลต่อไปนี้ในรุ่นหลักและ AOSP GSI รุ่น

  • ในวันที่ aosp-main
    • common-android-mainline
    • common-android16-6.12
    • common-android15-6.6
    • common-android14-6.1
    • common-android14-5.15
  • ในวันที่ 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. โคลนไฟล์ Manifest ของที่เก็บเคอร์เนลที่เหมาะสมสำหรับอุปกรณ์ Cuttlefish แล้วทำการเปลี่ยนแปลงตามต้องการ

    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. สร้างเคอร์เนลและแรมดิสก์ ดูข้อมูลเพิ่มเติมได้ที่การสร้างโมดูลของผู้ให้บริการสำหรับอุปกรณ์เสมือน

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

    หากใช้ไฟล์ Manifest ของเคอร์เนล 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. เปิดเคอร์เนลและแรมดิสก์ด้วยหมึกกระดอง

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

    หากเปิดใช้งานเคอร์เนลที่ไม่ใช่ GKI (เวอร์ชันที่ต่ำกว่า 4.19) ให้ข้ามอาร์กิวเมนต์ -initramfs_path

    หากคุณเปิดใช้งานเคอร์เนลใน Cuttlefish เวอร์ชัน aarch64 ให้ใช้การกำหนดค่าการสร้าง aarch64 และใช้อาร์ติแฟกต์ Image แทน bzImage

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