משתמשים בדיונון עם דף בגודל 16KB ב-ARM64

להגדרה הזו נדרש מארח ARM64 של Linux. בדף הזה נסביר איך לפתח ולהפעיל Cuttlefish עם תמיכה בגודל דף של 16KB ב-ARM64. ההוראות בדף הזה מבוססות על ההנחה שחבילות Cuttlefish מותקנות במחשב שלכם. כדי להתקין אותם, תוכלו להיעזר בשלב 1 במאמר התקנת דיונון.

אם צריך לשנות את קוד המקור, אפשר להפעיל את Cuttlefish על ידי הורדה של הארטיפקטים המוכנים מראש ישירות מהאתר של אינטגרציה רציפה (CI) של Android, או פיתוח שלהם מ-AOSP.

מפעילים את הדיונון על ידי הורדת פריטי המידע שנוצרו בתהליך הפיתוח (Artifact)

עוברים לאתר של Android אינטגרציה רציפה (CI) ומזינים את aosp-main-throttled בתור שם ההסתעפות. לוחצים על גרסת ה-build האחרונה של היעד aosp_cf_arm64_phone_pgagnostic. עכשיו פועלים לפי ההוראות בשלב 5 של Install Cuttlefish (התקנת דיונון).

השיקו דיונון על ידי בנייה מ-AOSP

בונים ומפעילים 'דיונון' עם יעד שעבר דפדוף בין דפים:

$ mkdir main && cd main
$ repo init -u https://android.googlesource.com/platform/manifest -b main
$ repo sync -c -j32

# Build cf agnostic target.
$ source build/envsetup.sh
$ lunch aosp_cf_arm64_phone_pgagnostic-trunk-userdebug
$ m

# Launch cf with a kernel with 16 KB page size support.
$ launch_cvd
...
...
VIRTUAL_DEVICE_DISPLAY_POWER_MODE_CHANGED
virtio_input_hid_handle_status: unknown type 20
virtio_input_hid_handle_status: unknown type 20
virtio_input_hid_handle_status: unknown type 20
virtio_input_hid_handle_status: unknown type 20
Generating new secret with slot ID: 4
VIRTUAL_DEVICE_BOOT_STARTED
VIRTUAL_DEVICE_NETWORK_MOBILE_CONNECTED

אימות גודל הדף והאתחול

כדי לאמת את גודל הדף ואת סטטוס ההפעלה:

  1. גישה למעטפת ברמה הבסיסית (root):

    $ adb root
    adbd is already running as root
    $ adb shell
    vsoc_arm64_pgagnostic:/ #
    
  2. אימות גודל הדף וסטטוס ההפעלה:

    vsoc_arm64_pgagnostic:/ # getconf PAGE_SIZE
    16384
    vsoc_arm64_pgagnostic:/ # getprop | grep sys.boot.completed
    sys.boot_completed: 1
    

משתמשים בדיונון עם ליבה (kernel) מותאמת אישית של דף בגודל 16KB

כדי להשתמש בליבה (kernel) מותאמת אישית, במקום בליבה מובנית מראש:

  1. יוצרים ספריית מאגרים לליבה (kernel) נפוצה של Android ומסנכרנים את הספרייה:

    $ 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)
    
  2. ליבה (kernel) של גודל דף ב-Build 16KB:

    $ tools/bazel run --lto=none //common:kernel_aarch64_16k_dist
    $ tools/bazel run --lto=none //common-modules/virtual-device:virtual_device_aarch64_16k_dist -- \
        --dist_dir=out/android14-6.1/dist
    
  3. מוודאים שה-build בוצע בהצלחה:

    # Generated files
    $ ls out/android14-6.1/dist/Image
    $ ls out/android14-6.1/dist/initramfs.img
    

מפעילים אימון עם ליבה (kernel) מותאמת אישית של דף בגודל 16KB

כדי להשתמש בליבה (kernel) החדשה שיצרה ב-Cuttlefish:

$ launch_cvd -kernel_path ~/common-android14-6.1/out/android14-6.1/dist/Image \
      -initramfs_path ~/common-android14-6.1/out/android14-6.1/dist/initramfs.img \
      --resume=false --userdata_format=ext4 \
      --data_policy=always_create --blank_data_image_mb=8000
      -userdata_format=ext4