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

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

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

‫Cuttlefish תומך במניפסטים הבאים של הליבה בענף הגרסה האחרונה של Android ובגרסאות GSI של AOSP.

  • ב-android-latest-release
    • common-android-mainline
  • ב-android-15.0.0_r36
    • 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 ובארטיפקט Image במקום ב-bzImage.

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