פיתוח ליבות של Android

בדף הזה מוסבר איך לפתח ליבות Android במכשירי Cuttlefish.

מניפסטים נתמכים של ליבה

ב-Cuttlefish יש תמיכה במניפסטים הבאים של הליבה במהדורות הראשיות ובמהדורות 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. מעתיקים את המניפסט המתאים של מאגר הליבה למכשיר 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. יצירת הליבה וה-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. מריצים את הליבה ואת ה-ramdisk באמצעות Cuttlefish.

    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.

    אם מריצים את הליבה בגרסת aarch64 של Cuttlefish, צריך להשתמש בתצורת ה-build של aarch64 ולהשתמש ב-artifact Image במקום ב-bzImage.

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