حبَّار: إيجارات متعددة

يسمح تطبيق حبَّار ذي فترة إقامة متعددة للجهاز المضيف بإطلاق العديد من الألعاب الافتراضية أجهزة ضيف مع استدعاء تشغيل واحد.

يمكن لهذه الأجهزة الافتراضية المتعددة للعبة Cuttlefish مشاركة جزء من قرص المضيف والموارد، مما يتيح لك توفير مساحة القرص. يحصل كل جهاز افتراضي على تراكب قرص مميّز يغطي أقسام Android (مثل super، userdata، boot). يتم وضع أي تعديل على قرص الضيف في على سطح قرص خاص بالضيف، مما يمنح كل آلة Cuttlefish افتراضية عرض النسخ عند الكتابة لأقسام القرص. وعندما يكتب كل جهاز افتراضي المزيد من البيانات إلى عرضها على القرص، فإن ملفات التراكب الموجودة على القرص المضيف تزيد في لأنها تلتقط الدلتا بين الحالة الأصلية الحالية.

يمكن إعادة تعيين ملفات التراكب لإرجاع قرص Cuttlefish إلى حالته الأصلية. تُعرف هذه العملية باسم Powerwash.

أرقام الأجهزة الافتراضية

تنشئ أجهزة الحبار الموارد وتستهلكها على المضيف المرتبط رقم المثيل. على سبيل المثال، يتم الكشف عن اتصال adb عبر بروتوكول التحكم بالنقل. مقبس الخادم في المنفذ 6520 لجهاز Cuttlefish برقم المثيل 1. عند تشغيل مثيلات متعددة، فإنها تنشئ مقبس خادم TCP في المنفذ 6520 للجهاز الأول و6521 للجهاز الثاني كما يزيد من رقم المنفذ لكل جهاز إضافي.

تعديل الحد الأقصى لعدد الأجهزة الافتراضية المتوافقة

يجب تخصيص الموارد من جانب المضيف، مثل أجهزة شبكة TAP، مسبقًا من أجل آلات حبَّار افتراضية. بشكل افتراضي، cuttlefish-base Debian لتوفير الموارد للأرقام على سبيل المثال من 1 إلى 10.

يمكن تغيير هذا من خلال تعديل num_cvd_accounts في /etc/default/cuttlefish-host-resources وإعادة تشغيل cuttlefish-host-resources من خلال تشغيل الأمر التالي:

sudo systemctl restart cuttlefish-host-resources

الإعدادات الأساسية

تمثل الإعدادات الأساسية إعدادات أجهزة حبَّار بتنسيق JSON. يمكنك إنشاء ملفات JSON للإعدادات الأساسية. لوصف تكوين عدة أجهزة حبّار في وحدة سكنية متعددة السيناريو.

في ما يلي وصف التنسيق المستخدَم في ملفات JSON للإعدادات الأساسية. (استبدِل العناصر النائبة بإعدادات الأجهزة).

{
  "common": {
    CONFIGURATIONS_APPLYING_TO_ALL_DEVICES
  },
  "instances": [
    {
      FIRST_DEVICE_CONFIGURATION
    },
    {
      NTH_DEVICE_CONFIGURATION
    }
  ]
}

في ما يلي مثال على ملف ضبط لعملية إعداد لجهازَين: جهاز هاتف وجهاز قابل للارتداء:

{
  "instances": [
    {
      "@import": "phone",
      "vm": {
        "memory_mb": 8192,
        "setupwizard_mode": "OPTIONAL",
        "cpus": 4
      },
      "disk": {
        "default_build": "/home/username/devices/cf_x86_64_phone-userdebug"
      }
    },
    {
      "@import": "wearable",
      "vm": {
        "memory_mb": 8192,
        "setupwizard_mode": "REQUIRED",
        "cpus": 4
      },
      "disk": {
        "default_build": "/home/username/devices/cf_gwear_x86-userdebug"
      }
    }
  ]
}

يصف هذا الجدول العناصر المستخدمة في مثال التهيئة مع اثنين الأجهزة:

العنصر النوع الوصف
instances مصفوفة مصفوفة من كائنات JSON، تصف كل منها جهازًا واحدًا في إطلاق مجموعة من الأجهزة متعددة المستأجرين.
@import سلسلة تشير هذه العلامة إلى نوع الجهاز وتضبط القيم التلقائية للجهاز. التكوين. أنواع الأجهزة المتوافقة هي "phone" وwearable"
vm كائن تحدِّد هذه السياسة السمات التي تنطبق على بيئة الجهاز الافتراضي (VM) الخاصة مثيل الجهاز.
memory_mb الرقم مقدار الذاكرة الذي يتم تخصيصه لجهاز افتراضي (VM) محدّد بالميغابايت.
setupwizard_mode سلسلة تحدِّد هذه السياسة ما إذا كان قد تم تشغيل معالج إعداد الجهاز للمستخدم أولاً. تشغيل الجهاز. الخيارات المتاحة لوضع معالج الإعداد هي DISABLED وOPTIONAL و REQUIRED
cpus الرقم عدد وحدات المعالجة المركزية الافتراضية المخصّصة للجهاز الافتراضي.
disk كائن تحدِّد هذه السياسة السمات ذات الصلة بتحديد موقع عناصر نظام الملفات المستخدَمة. لتشغيل مثيل جهاز افتراضي واحد.
default_build سلسلة مسار نظام الملفات المحلي إلى مجلد يحتوي على جهاز افتراضي لـ Cuttlefish .

للحصول على مزيد من الأمثلة على ملفات الإعداد التي يتم توزيعها باستخدام cvd، يمكنك الاطّلاع على cvd_test_configs في شجرة التعليمات البرمجية للحبار.

التحكّم في الأجهزة الافتراضية للمستأجرين المتعددين

يصف هذا القسم كيفية تشغيل الأجهزة وإيقافها في حالات استخدام أجهزة متعددة. يمكنك إطلاق عدة أجهزة حبَّار باستخدام الخيارات التالية:

  • الإعداد الأساسي: إطلاق الحملة المخصّصة لكل جهاز باستخدام ملف تهيئة JSON يصف قائمة المثيلات المراد إطلاقها.
  • صورة ضيف واحدة: تشغيل عدة الأجهزة من صورة ضيف واحدة.

بدء عدة أجهزة افتراضية من الإعدادات الأساسية

لتشغيل أجهزة افتراضية متعددة باستخدام إعدادات أساسية تصف في سيناريو متعدّد عملاء، عليك استدعاء الأمر cvd start باستخدام --config_file= بادئة العلامة على النحو التالي:

cvd start --config_file=CONFIG_FILE

في ما يلي مثال على استدعاء يشير إلى ملف إعداد أساسي باسم /etc/phone.json

cvd start --config_file=/etc/phone.json

بدء عدة أجهزة افتراضية من صورة ضيف واحدة

لإطلاق عدة أجهزة حبَّار باستخدام صورة ضيف واحدة، استخدِم علم --num_instances=N، حيث يشير N إلى الرقم من الأجهزة لإطلاقها. وحسب الإعدادات التلقائية، تبدأ الأجهزة من رقم المثيل 1.

cvd start --num_instances=N

لتغيير رقم مثيل البداية، نفِّذ أحد الإجراءات التالية:

  • إضافة العلامة --base_instance_num=N باستخدام N باعتباره رقم المثيل الأول.

    cvd start --base_instance_num=N
    
  • إطلاق تطبيق Cuttlefish مع حساب مستخدم مطابق vsoc-NN، حيث NN هو المثيل الأساسي رقم في شكل مكون من رقمين. على سبيل المثال، لإطلاق الحبار مع مستخدم الحساب vsoc-01، تشغيل:

    cvd start --base_instance_num=1
    

كيفية إيقاف الأجهزة

لإيقاف جميع الأجهزة التي تم تشغيلها من خلال استدعاء "cvd start" الأخير، شغِّل:

cvd stop