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

בדף הזה נסביר איך לפתח ליבה (kernel) של Android במכשירי דיונון.

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

ב-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

כדי לפתח ליבות במכשירי דיונון, פועלים לפי השלבים הבאים:

  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

    אם מפעילים ליבה (kernel) שאינה של GKI (כל דבר ברמה 4.19 או פחות), משמיטים את הארגומנט -initramfs_path.

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

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