تتيح ميزة "المستأجرون المتعدّدون" في Cuttlefish لجهازك المضيف تشغيل عدّة أجهزة ضيف افتراضية من خلال طلب تشغيل واحد.
يمكن لهذه الأجهزة الافتراضية المتعدّدة من Cuttlefish مشاركة بعض موارد القرص المضيف، ما يتيح لك توفير مساحة القرص. يحصل كل جهاز افتراضي على
تراكب مميّز على قرص Android (مثل super
أو userdata
أو boot
). ويتم وضع أي تعديل على قرص الضيف في
تراكب قرص خاص بالضيف، ما يمنح كل جهاز افتراضي Cuttlefish عرضًا لأقسام القرص عن طريق النسخ عند الكتابة. وعندما يكتب كل جهاز افتراضي المزيد من
البيانات في عرض القرص، يزداد حجم ملفات التراكب على القرص المضيف لأنّها تُسجِّل الفرق بين الحالة الأصلية والحالة
الحالية.
يمكن إعادة تعيين ملفات التراكب لإرجاع قرص Cuttlefish إلى حالته الأصلية. تُعرف هذه العملية باسم عملية إعادة الضبط على الإعدادات الأصلية.
أرقام الأجهزة الافتراضية
تنشئ أجهزة الحبار الموارد وتستهلكها على المضيف المرتبط
برقمها على سبيل المثال. على سبيل المثال، يتم عرض اتصال adb
من خلال مقبس خادم TCP
على المنفذ 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
الإعدادات الأساسية
تمثّل الإعدادات الأساسية إعدادات أجهزة 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_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 |
عنصر | تحدِّد السمات التي تنطبق على بيئة الجهاز الظاهري الخاصة بمثيل device. |
memory_mb |
الرقم | مقدار الذاكرة الذي يتم تخصيصه لجهاز افتراضي معيَّن بالميغابايت. |
setupwizard_mode |
سلسلة | تحدِّد هذه السياسة ما إذا كان يمكن للمستخدم تشغيل معالج إعداد الجهاز عند تشغيل الجهاز لأول مرة. والخيارات المتوافقة مع وضع معالج الإعداد هي DISABLED وOPTIONAL وREQUIRED . |
cpus |
الرقم | عدد وحدات المعالجة المركزية الافتراضية المخصّصة للجهاز الافتراضي |
disk |
عنصر | تحدّد هذه السمة السمات ذات الصلة بتحديد موقع عناصر نظام الملفات المستخدمة لتشغيل مثيل جهاز افتراضي واحد. |
default_build |
سلسلة | مسار نظام الملفات على الجهاز إلى مجلد يحتوي على صورة جهاز افتراضي Cuttlefish |
لمزيد من الأمثلة على ملفات الإعداد التي يتم توزيعها مع cvd
، اطّلِع على المجلد
cvd_test_configs
في شجرة رموز 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