تسمح ميزة "الوحدات المشترَكة" في Cuttlefish لجهازك المضيف بتشغيل أجهزة ضيوف افتراضية متعددة باستخدام طلب تشغيل واحد.
يمكن لهذه الأجهزة الافتراضية المتعددة في Cuttlefish مشاركة بعض موارد القرص المضيف، ما يسمح لك بتوفير مساحة على القرص. يحصل كل جهاز افتراضي على طبقة قرص مميزة تغطي أقسام Android (مثل super وuserdata وboot). يتم وضع أي تعديل على قرص الضيف في طبقة قرص خاصة بالضيف، ما يمنح كل جهاز افتراضي في Cuttlefish عرضًا لنسخة من أقسام القرص عند الكتابة. عندما يكتب كل جهاز افتراضي المزيد من البيانات في عرضه للقرص، تزداد أحجام ملفات الطبقة على القرص المضيف لأنّها تسجّل الفرق بين الحالة الأصلية والحالة الحالية.
يمكن إعادة ضبط ملفات الطبقة لإعادة قرص Cuttlefish إلى حالته الأصلية. تُعرف هذه العملية باسم إعادة ضبط الجهاز.
أرقام الأجهزة الافتراضية
تنشئ أجهزة Cuttlefish موارد على المضيف وتستخدمها، وتكون هذه الموارد مرتبطة برقم الجهاز الافتراضي. على سبيل المثال، يتم عرض اتصال adb من خلال مقبس خادم TCP على المنفذ 6520 لجهاز Cuttlefish الذي يحمل رقم الجهاز الافتراضي 1.
عند تشغيل أجهزة افتراضية متعددة، يتم إنشاء مقبس خادم TCP على المنفذ 6520 للجهاز الأول، و6521 للجهاز الثاني، ويتم زيادة رقم المنفذ لكل جهاز إضافي.
تعديل الحد الأقصى لعدد الأجهزة الافتراضية المتوافقة
يجب تخصيص موارد من جهة المضيف، مثل أجهزة شبكة TAP، مسبقًا للأجهزة الافتراضية في Cuttlefish. تلقائيًا، يوفّر حزمة
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_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 image. |
لمزيد من الأمثلة على ملفات الإعداد الموزَّعة مع 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