محاكاة حبَّار بحجم صفحة 16 كيلوبايت على x86_64

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

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

تنفيذ النواة

تمت إضافة إمكانية محاكاة x86_64 صفحات بحجم 16 كيلوبايت في الإصدار 6.6 GKI من Android 14 في سلسلة تصحيحات page_size_emulation. يؤدي إدخال page_shift=14 في سطر الأوامر إلى تفعيل هذا المحاكاة. تعمل استهدافات x86_64 ذات اللاحقة _16k (أو الاستهدافات القديمة ذات اللاحقة _pgagnostic)، مثل aosp_cf_x86_64_phone_pgagnostic، على ضبط هذا الخيار تلقائيًا وتعمل في وضع 16 كيلوبايت تلقائيًا.

ابدأ Cuttlefish من خلال تنزيل العناصر.

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

تشغيل 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_x86_64_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. يمكنك الوصول إلى shell بصفتك مشرفًا:

    $ adb root
    adbd is already running as root
    $ adb shell
    vsoc_x86_64_pgagnostic:/ #
    
  2. تأكَّد من حجم الصفحة وحالة التشغيل:

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