تتيح ميزة "الاستخدام المتعدّد" في Cuttlefish لجهازك المضيف تشغيل أجهزة افتراضية متعددة للضيف من خلال استدعاء واحد.
يمكن أن تتشارك هذه الأجهزة الافتراضية المتعددة من Cuttlefish بعض موارد القرص المضيف، ما يتيح لك توفير مساحة على القرص. يحصل كل جهاز افتراضي على تراكب قرص مميّز يغطي أقسام Android (مثل super
وuserdata
وboot
). ويتم وضع أي تعديل على قرص الضيف في تراكب قرص خاص بالضيف، ما يمنح كل جهاز افتراضي من Cuttlefish نسخة من أقسام القرص بنظام "النسخ عند الكتابة". مع كتابة كل جهاز افتراضي المزيد من البيانات إلى طريقة عرضه للقرص، يزداد حجم ملفات التراكب على قرص المضيف لأنّها تسجّل الفرق بين الحالة الأصلية والحالة الحالية.
يمكن إعادة ضبط ملفات التراكب لإعادة قرص Cuttlefish إلى حالته الأصلية. تُعرف هذه العملية باسم غسل الطاقة.
أرقام الحالات
تنشئ أجهزة Cuttlefish الموارد وتستهلكها على الجهاز المضيف المرتبط
برقم مثيلها. على سبيل المثال، يتم عرض اتصال adb
من خلال مقبس خادم TCP على المنفذ 6520
لجهاز Cuttlefish الذي يحمل رقم المثيل 1
.
عند تشغيل عدة مثيلات، يتم إنشاء مقبس خادم TCP على المنفذ 6520
للجهاز الأول و6521
للجهاز الثاني، ويتم زيادة رقم المنفذ لكل جهاز إضافي.
تعديل الحد الأقصى لعدد المثيلات المتوافقة
يجب تخصيص موارد جانب المضيف مسبقًا، مثل أجهزة شبكة TAP، للأجهزة الافتراضية في Cuttlefish. توفّر حزمة Debian
cuttlefish-base تلقائيًا موارد لأرقام المثيلات من 1
إلى 10
.
يمكن تغيير ذلك من خلال تعديل num_cvd_accounts
في /etc/default/cuttlefish-host-resources
وإعادة تشغيل خدمة cuttlefish-host-resources
عن طريق تنفيذ الأمر التالي:
sudo systemctl restart cuttlefish-host-resources
الإعدادات الأساسية
تمثّل الإعدادات الأساسية إعدادات أجهزة Cuttlefish بتنسيق JSON. يمكنك إنشاء ملفات JSON خاصة بعمليات الضبط الأساسية لوصف عمليات ضبط أجهزة Cuttlefish المتعددة في سيناريو متعدد المستأجرين.
يوضّح ما يلي التنسيق المستخدَم لملفات 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_only_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 |
عنصر | تحدّد هذه السمة الخصائص التي تنطبق على بيئة الجهاز الافتراضي الخاصة بمثيل الجهاز. |
memory_mb |
الرقم | مقدار الذاكرة التي سيتم تخصيصها لجهاز افتراضي معيّن بالميغابايت |
setupwizard_mode |
سلسلة | تحدِّد هذه السمة ما إذا كان سيتم تشغيل معالج إعداد الجهاز للمستخدم عند تشغيل الجهاز لأول مرة. خيارات وضع معالج الإعداد المتوافقة هي DISABLED وOPTIONAL وREQUIRED . |
cpus |
الرقم | عدد وحدات المعالجة المركزية الافتراضية المخصّصة للجهاز الافتراضي |
disk |
عنصر | تحدّد هذه السمة الخصائص ذات الصلة بتحديد موقع عناصر نظام الملفات المستخدَمة لتشغيل مثيل جهاز افتراضي واحد. |
default_build |
سلسلة | مسار نظام الملفات المحلي إلى مجلد يحتوي على صورة جهاز Cuttlefish الافتراضي |
للاطّلاع على المزيد من الأمثلة على ملفات الإعداد الموزَّعة مع cvd
، راجِع المجلد
cvd_test_configs
في بنية رموز Cuttlefish.
التحكّم في مثيلات الوحدات المشترَكة
يوضّح هذا القسم كيفية إنشاء الأجهزة وإيقافها في سيناريو متعدد المستأجرين. يمكنك تشغيل أجهزة Cuttlefish متعددة باستخدام الخيارات التالية:
- الإعدادات الأساسية: يمكنك تشغيل إعدادات مخصّصة لكل جهاز باستخدام ملف إعداد JSON يصف قائمة الآلات الافتراضية التي سيتم تشغيلها.
- صورة ضيف واحدة: يمكنك تشغيل أجهزة متعددة من صورة ضيف واحدة.
بدء عدة أجهزة افتراضية من الإعدادات الأساسية
لإنشاء عدة أجهزة افتراضية باستخدام إعداد أساسي يصف سيناريو المستأجرين المتعدّدين، استخدِم الأمر cvd create
مع بادئة العلامة --config_file=
كما يلي:
cvd create --config_file=CONFIG_FILE
في ما يلي مثال على استدعاء يشير إلى ملف إعدادات أساسي باسم
/etc/phone.json
.
cvd create --config_file=/etc/phone.json
بدء عدة أجهزة افتراضية من صورة ضيف واحدة
لتشغيل أجهزة Cuttlefish متعددة باستخدام صورة ضيف واحدة، استخدِم العلامة --num_instances=N
، حيث يمثّل N عدد الأجهزة التي سيتم تشغيلها. تبدأ الأجهزة تلقائيًا من رقم المثيل 1
.
cvd create --num_instances=N
لتغيير رقم المثيل الأوّلي، اتّبِع أحد الإجراءات التالية:
أضِف العلامة
--base_instance_num=N
مع N كأول رقم نسخة.cvd create --base_instance_num=N
شغِّل Cuttlefish باستخدام حساب مستخدم مطابق
vsoc-NN
، حيث يمثّل NN رقم المثيل الأساسي في شكل رقمَين. على سبيل المثال، لتشغيل Cuttlefish باستخدام حساب مستخدمvsoc-01
، نفِّذ ما يلي:cvd create --base_instance_num=1
كيفية إيقاف الأجهزة
لإيقاف جميع الأجهزة التي تم تشغيلها من خلال آخر استدعاء cvd create
، نفِّذ ما يلي:
cvd stop
لإعادة تشغيل الأجهزة التي تم إيقافها، نفِّذ ما يلي:
cvd start
لإزالة جهاز من النظام نهائيًا، نفِّذ ما يلي:
cvd remove