دستگاه‌های مجازی در OmniLab ATS

‫OmniLab ATS از دستگاه‌های مجازی Cuttlefish پشتیبانی می‌کند که به شما امکان می‌دهد بدون دستگاه‌های فیزیکی Android آزمایش اجرا کنید. ‫Cuttlefish برای آزمایش کارکردهای مستقل از سخت‌افزار مناسب است. قبل‌از شروع استفاده از دستگاه‌های مجازی، برای نصب OmniLab ATS، راهنمای کاربر را دنبال کنید.

OmniLab ATS از دستگاه‌های مجازی در سه حالت پشتیبانی می‌کند: محلی، ازراه‌دور، و Cloud Orchestration. جدول زیر مقایسه‌ای از این حالت‌ها ارائه می‌دهد.

دستگاه‌های مجازی محلیدستگاه‌های مجازی از راه دورCloud Orchestration
در میزبان‌های کارگر ATS اجرا می‌شودروی میزبان‌های راه‌دوری اجرا می‌شود که میزبان‌های کارگر ATS می‌توانند ازطریق SSH به آن‌ها دسترسی داشته باشنددر میزبان‌های محلی یا از دور که توسط Cloud Orchestrator مدیریت می‌شوند اجرا می‌شود
مبتنی بر x86بسته به معماری میزبان می‌تواند x86 یا ARM باشد بسته به معماری میزبان می‌تواند x86 یا ARM باشد
راه‌اندازی آسان‌ترراه‌اندازی آن پیچیده‌تر استعملکرد بالا، مقیاس‌پذیر، از راه‌اندازی نمونه موازی پشتیبانی می‌کند

می‌توانید حالت‌های دستگاه مجازی محلی و دور را به‌طور مستقل فعال کنید. یا می‌توانید «هماهنگ‌سازی ابری» را فعال کنید که به‌عنوان جایگزینی مدرن عمل می‌کند و برابری کامل ویژگی‌ها را با هر دو حالت ارائه می‌دهد، به‌علاوه مزایای کلیدی مانند راه‌اندازی نمونه موازی و جداسازی بهتر منابع. برای جزئیات مربوط به هر حالت، به موارد زیر مراجعه کنید:

راه‌اندازی دستگاه‌های مجازی محلی

این بخش مراحل راه‌اندازی OmniLab ATS برای دستگاه‌های مجازی محلی را شرح می‌دهد.

نصب وابستگی‌های Cuttlefish

برای اطمینان از بار شدن واحدهای هسته لازم، فرمان زیر را اجرا کنید:

sudo modprobe -a kvm tun vhost_net vhost_vsock

شروع OmniLab ATS با دستگاه‌های مجازی محلی

قبل‌از شروع OmniLab ATS، مطمئن شوید که همه نمونه‌های Cuttlefish متوقف شده باشند. ‫OmniLab ATS دستگاه‌های مجازی را درطول چرخه آزمایش به‌طور خودکار راه‌اندازی و متوقف می‌کند، و نمونه‌های Cuttlefish موجود با نمونه‌های مدیریت‌شده توسط OmniLab ATS تداخل دارند. برای جزئیات مربوط به متوقف کردن نمونه‌های Cuttlefish، به متوقف کردن Cuttlefish مراجعه کنید.

برای فعال کردن دستگاه‌های مجازی محلی، این دستور را اجرا کنید:

mtt start --max_local_virtual_devices N

‫N حداکثر تعداد دستگاه‌های مجازی است که OmniLab ATS می‌تواند به‌طور هم‌زمان اختصاص دهد. عدد پیش‌فرض ۰ است.

اگر فرمان به‌دلیل نبود گره‌های دستگاه ناموفق بود، مراحل موجود در پیام خطا را برای بار کردن واحدهای هسته دنبال کنید. اگر همچنان ناموفق بود، ماشین را بازراه‌اندازی کنید.

راه‌اندازی دستگاه‌های مجازی از دور

این بخش مراحل راه‌اندازی OmniLab ATS را برای دستگاه‌های مجازی ازراه‌دور شرح می‌دهد.

نصب وابستگی‌های Cuttlefish

برای نصب وابستگی‌های Cuttlefish، این مراحل را دنبال کنید.

  1. با دنبال کردن مراحل در Cuttlefish > شروع به کار، بسته‌های Debian را در میزبان از دور نصب کنید.

  2. با دنبال کردن این مراحل، حداکثر تعداد دستگاه‌های مجازی را در میزبان راه دور پیکربندی کنید:

    1. ‫/etc/default/cuttlefish-host-resources را با امتیاز ریشه ویرایش کنید.
    2. ‫num_cvd_accounts را روی حداکثر تعداد دستگاه‌های مجازی تنظیم کنید تا در این میزبان مجاز شوند.
    3. ‫sudo systemctl restart cuttlefish-host-resources را اجرا کنید.
    4. ifconfig را اجرا کنید و تعداد میاناهای cvd-wtap-* را تأیید کنید.

ایجاد حساب SSH

ازآنجایی‌که میزبان OmniLab ATS ازطریق SSH به میزبان راه دور متصل می‌شود، باید حساب SSH را در میزبان راه دور آماده کنید. ازآنجایی‌که OmniLab ATS فایل‌های موجود در دایرکتوری HOME را دستکاری می‌کند، توصیه می‌کنیم حساب اختصاصی ایجاد کنید.

میزبان OmniLab ATS برای ورود به سیستم میزبان راه‌دور بدون گذرواژه به یک جفت کلید SSH نیاز دارد. مراحل زیر نحوه تنظیم کلیدهای SSH را شرح می‌دهد:

  1. برای تولید کلید خصوصی و کلید عمومی، ssh-keygen را در میزبان OmniLab ATS اجرا کنید.
  2. کلید عمومی را در ~/.ssh/authorized_keys میزبان راه دور بارگذاری و پیوست کنید.

اگر حساب SSH شما با حسابی که برای نصب پیش‌نیازهای Cuttlefish استفاده شده است متفاوت است، برای اینکه حساب SSH بتواند Cuttlefish را راه‌اندازی کند، این فرمان را در میزبان راه‌دور اجرا کنید:

sudo usermod -aG kvm,cvdnetwork,render $USER

شروع OmniLab ATS با دستگاه‌های مجازی ازراه‌دور

قبل‌از شروع OmniLab ATS، مطمئن شوید که همه نمونه‌های Cuttlefish متوقف شده باشند. ‫OmniLab ATS دستگاه‌های مجازی را درطول چرخه آزمایش به‌طور خودکار راه‌اندازی و متوقف می‌کند، و نمونه‌های Cuttlefish موجود با نمونه‌های مدیریت‌شده توسط OmniLab ATS تداخل دارند. برای جزئیات مربوط به متوقف کردن نمونه‌های Cuttlefish، به متوقف کردن Cuttlefish مراجعه کنید.

برای عملکرد بهتر، توصیه می‌کنیم میزبان OmniLab ATS و میزبان راه دور را در شبکه محلی راه‌اندازی کنید.

برای فعال کردن دستگاه‌های مجازی ازراه‌دور، این فرمان را در میزبان OmniLab ATS اجرا کنید:

mtt start --remote_virtual_devices USER@HOST/N \
--remote_ssh_key KEY

USER نام حساب SSH است.

HOST نشانی IPv4 میزبان راه دور است.

‫N حداکثر تعداد دستگاه‌های مجازی است که OmniLab ATS می‌تواند به‌طور هم‌زمان اختصاص دهد.

KEY مسیر کلید پوسته امن خصوصی در میزبان OmniLab ATS است.

این فرمان اتصال به میزبان راه دور را قبل‌از شروع OmniLab ATS آزمایش می‌کند. اگر پیام هشداری مثل The specified --remote_virtual_devices and --remote_ssh_key are invalid. در کنسول نشان داده می‌شود، باید تنظیمات SSH خود را بررسی کنید.

برای جلوگیری از تعارض منابع، میزبان OmniLab ATS می‌تواند حداکثر به یک میزبان ازدور متصل شود. چند میزبان OmniLab ATS نمی‌توانند به‌طور هم‌زمان به یک میزبان راه دور متصل شوند.

اجرای آزمایش با دستگاه‌های مجازی

این بخش مراحل اجرای آزمایش روی دستگاه‌های مجازی محلی یا راه دور را شرح می‌دهد.

دستگاه‌های خاص

در فهرست دستگاه، OmniLab ATS دستگاه‌های مجازی را به‌جای شماره سریال واقعی‌شان به‌عنوان جای‌بان نمایش می‌دهد. جای‌بان‌ها در قالب نام میزبان:شناسه-دستگاه-مجازی-محلی برای دستگاه‌های مجازی محلی؛ شناسه-نشانی-مجازی-راه دور برای دستگاه‌های مجازی راه دور نشان داده می‌شوند. وضعیت‌ها یا دردسترس یا اختصاص‌یافته است. جای‌بان در وضعیت دردسترس نشان می‌دهد که دستگاه مجازی درحال اجرا نیست و می‌تواند برای آزمایش اختصاص داده شود.

انتخاب دستگاه‌های مجازی

شکل ۱. درحال انتخاب دستگاه‌های مجازی

افزودن کنش‌های دستگاه

اگر حداقل یک دستگاه مجازی را انتخاب کنید، کنش دستگاه مرتبط باید به‌طور خودکار به فهرست اضافه شود. کنش شامل پارامترهای TradeFed و منابع آزمایشی لازم برای ایجاد دستگاه‌های مجازی است.

کنش‌های دستگاه مجازی محلی

شکل ۲. کنش‌های دستگاه برای دستگاه‌های مجازی محلی

کنش‌های دستگاه مجازی از راه دور

شکل ۳. کنش‌های دستگاه برای دستگاه‌های مجازی از راه دور

تنظیم منابع آزمایش

دستگاه‌های مجازی Cuttlefish به سه منبع آزمایشی نیاز دارند: ابزارهای ماشین مجازی، تصاویر، و Acloud. در ساخت Cuttlefish معمولی (برای نمونه، aosp_cf_x86_64_only_phone-userdebug در ci.android.com )، ابزارهای ماشین مجازی در cvd-host_package.tar.gz بسته‌بندی شده‌اند و تصاویر در aosp_cf_x86_64_only_phone-img-*.zip قرار دارند. دودویی Acloud در OmniLab ATS ساخته شده است و با همه نسخه‌های Cuttlefish سازگار است. نشانی وب بارگیری پیش‌فرض باینری Acloud فقط باید برای اهداف اشکال‌زدایی تغییر کند.

منابع آزمایش دستگاه مجازی

شکل ۴. منابع آزمایشی برای دستگاه‌های مجازی

مشاهده اجراهای آزمایشی

گزارش‌های دستگاه، ازجمله kernel.log، host_log.txt، و launcher.log در پوشه فایل خروجی جمع‌آوری می‌شود. روی مشاهده فایل‌های خروجی کلیک کنید تا آن‌ها را ببینید.

نتایج اجرای آزمایشی

شکل ۵. نتایج اجرای آزمایشی