استخدام Cuttlefish مع حجم صفحة 16 كيلوبايت على ARM64

يتطلّب هذا الإعداد مضيف Linux ARM64. توضّح هذه الصفحة كيفية إنشاء Cuttlefish وبدء تشغيله مع دعم حجم الصفحة 16 كيلوبايت على ARM64. تفترض التعليمات الواردة في هذه الصفحة أنّ حِزم Cuttlefish مثبَّتة على جهازك. للحصول على تعليمات حول تثبيتها، يُرجى الاطّلاع على الخطوة 1 من مقالة تثبيت Cuttlefish.

يمكنك تشغيل Cuttlefish إما عن طريق تنزيل العناصر التي تم إنشاؤها مسبقًا مباشرةً من موقع Android Continuous Integration الإلكتروني أو إنشائها من AOSP إذا كنت بحاجة إلى تعديل رمز المصدر.

تشغيل Cuttlefish عن طريق تنزيل العناصر

انتقِل إلى موقع Android Continuous Integration الإلكتروني و أدخِل aosp-main-throttled كاسم للفرع. انقر على أحدث إصدار للهدف aosp_cf_arm64_phone_pgagnostic. الآن، اتّبِع التعليمات من الخطوة 5 من مقالة تثبيت Cuttlefish.

تشغيل Cuttlefish عن طريق الإنشاء من AOSP

أنشئ Cuttlefish وشغِّله باستخدام هدف غير مرتبط بحجم الصفحة:

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

# Build cf agnostic target.
$ source build/envsetup.sh
$ lunch aosp_cf_arm64_phone_pgagnostic-trunk_staging-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. يمكنك الوصول إلى واجهة الأوامر بصفتك مستخدمًا أساسيًا:

    $ 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
    

استخدام Cuttlefish مع نواة مخصّصة بحجم صفحة 16 كيلوبايت

لاستخدام نواة مخصّصة بدلاً من نواة تم إنشاؤها مسبقًا:

  1. أنشئ دليل repo لنواة 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. أنشئ نواة بحجم صفحة 16 كيلوبايت:

    $ 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. تأكَّد من تنفيذ عملية الإنشاء بنجاح:

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

بدء تشغيل Cuttlefish باستخدام النواة المخصّصة بحجم صفحة 16 كيلوبايت

لاستخدام النواة التي أنشأتها حديثًا في 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