QEMU(1) QEMU QEMU(1)

qemu - مستندات کاربری QEMU

qemu-system-x86_64 [options] [disk_image]

شبیه‌ساز سیستم رایانه شخصی (PC) در QEMU دستگاه‌های جانبی زیر را شبیه‌سازی می‌کند:

  • پل میزبان PCI مدل i440FX و پل PCI به ISA مدل PIIX3
  • کارت گرافیک Cirrus CLGD 5446 PCI یا کارت گرافیک ساختگی (dummy) با افزونه‌های Bochs VESA (سطح سخت‌افزار، شامل تمام حالت‌های غیراستاندارد).
  • موشواره و صفحه‌کلید PS/2
  • ۲ رابط PCI IDE با پشتیبانی از دیسک سخت و CD-ROM
  • دیسک فلاپی
  • آداپتورهای شبکه PCI و ISA
  • درگاه‌های سریال
  • کنترل‌کننده IPMI BMC، به صورت داخلی یا خارجی
  • کارت صدای Creative SoundBlaster 16
  • کارت صدای ENSONIQ AudioPCI ES1370
  • کارت صدای سازگار با Intel 82801AA AC97 Audio
  • کنترل‌کننده Intel HD Audio و کدک HDA
  • تراشه سازگار با Adlib (OPL2) - Yamaha YM3812
  • کارت صدای Gravis Ultrasound GF1
  • کارت صدای سازگار با CS4231A
  • بلندگوی داخلی رایانه (PC speaker)
  • کنترل‌کننده USB از نوع PCI UHCI، OHCI، EHCI یا XHCI و یک هاب مجازی USB-1.1.

قابلیت SMP (چندپردازشی متقارن) با تعداد زیادی پردازنده مجازی (vCPU) پشتیبانی می‌شود (حد بالایی آن به پیکربندی بستگی دارد).

برنامه QEMU از بایوس رایانه (PC BIOS) پروژه Seabios و VGA BIOS تحت مجوز LGPL متعلق به Plex86/Bochs استفاده می‌کند.

برنامه QEMU از شبیه‌سازی YM3812 نوشته‌شده توسط Tatsuyuki Satoh استفاده می‌کند.

برنامه QEMU از شبیه‌سازی GUS (به نام GUSEMU32 http://www.deinmeister.de/gusemu) نوشته‌شده توسط Tibor "TS" Schütz استفاده می‌کند.

توجه داشته باشید که به طور پیش‌فرض، GUS خط وقفه IRQ(7) را با درگاه‌های موازی (parallel) به اشتراک می‌گذارد؛ بنابراین برای کارکرد درست GUS باید به QEMU اعلام شود که هیچ درگاه موازی نداشته باشد.

qemu-system-x86_64 dos.img -device gus -parallel none

یا به صورت جایگزین:

qemu-system-x86_64 dos.img -device gus,irq=5

یا هر وقفه (IRQ) آزاد دیگری.

تراشه CS4231A قطعه‌ای است که در محصولات Windows Sound System و GUSMAX استفاده شده است.

دستگاه صوتی بلندگوی رایانه (PC speaker) را می‌توان با استفاده از ویژگی ماشینی pcspk-audiodev پیکربندی کرد، به عنوان مثال:

qemu-system-x86_64 some.img -audiodev <backend>,id=<name> -machine pcspk-audiodev=<name>

از گزینه‌های مختص ماشین زیر پشتیبانی می‌کند:

•
x-south-bridge=PIIX3|piix4-isa (گزینه‌ای آزمایشی برای انتخاب یک پل جنوبی (south bridge) مشخص. پیش‌فرض: PIIX3)

مورد disk_image یک تصویر دیسک سخت خام برای دیسک سخت IDE شمارهٔ 0 است. برخی از مقاصد نیازی به تصویر دیسک ندارند.

هنگام مواجهه با پارامترهای گزینه‌ها به عنوان رشته‌های دلخواه شامل ویرگول، مانند "file=my,file" و "string=a,b"، دو برابر کردن ویرگول‌ها ضروری است. برای نمونه، "-fw_cfg name=z,string=a,,b" به صورت "-fw_cfg name=z,string=a,b" تجزیه خواهد شد.

نمایش راهنما و خروج
نمایش اطلاعات نسخه و خروج
ماشین شبیه‌سازی‌شده را بر پایهٔ نام انتخاب می‌کند. برای فهرست کردن ماشین‌های موجود از -machine help استفاده کنید.

برای معماری‌هایی که هدف آن‌ها پشتیبانی از سازگاری مهاجرت زنده (live migration) بین نسخه‌ها است، هر نسخه یک نوع ماشین دارای شماره نسخه جدید معرفی می‌کند. برای نمونه، نسخهٔ 2.8.0 انواع ماشین "pc-i440fx-2.8" و "pc-q35-2.8" را برای معماری‌های x86_64/i686 معرفی کرد.

برای امکان‌پذیر ساختن مهاجرت زندهٔ سیستم‌های مهمان از QEMU نسخهٔ 2.8.0 به QEMU نسخهٔ 2.9.0، نسخهٔ 2.9.0 باید از ماشین‌های "pc-i440fx-2.8" و "pc-q35-2.8" نیز پشتیبانی کند. برای این که کاربران هنگام ارتقا و انجام مهاجرت زندهٔ ماشین‌های مجازی بتوانند از چندین نسخهٔ میانی عبور کنند، انتشار‌های جدید QEMU از انواع ماشین مربوط به نسخه‌های قبلی متعددی پشتیبانی می‌کنند.

ویژگی‌های پشتیبانی‌شدهٔ ماشین عبارتند از:

این گزینه برای فعال‌سازی یک شتاب‌دهنده استفاده می‌شود. بسته به معماری مقصد، kvm، xen، hvf، nitro، nvmm، whpx، mshv یا tcg می‌توانند در دسترس باشند. به طور پیش‌فرض، tcg استفاده می‌شود. اگر بیش از یک شتاب‌دهنده مشخص شده باشد، در صورت شکست مقداردهی اولیهٔ شتاب‌دهندهٔ قبلی، شتاب‌دهندهٔ بعدی استفاده می‌شود.
شبیه‌سازی درگاه IO مربوط به VMWare را برای vmmouse و غیره فعال می‌کند. مقدار auto تعیین می‌کند مقدار بر اساس accel و i8042 انتخاب شود. برای accel=xen یا i8042=off حالت پیش‌فرض off است، در غیر این صورت پیش‌فرض on می‌باشد.
حافظهٔ مهمان را در core dump می‌گنجاند. پیش‌فرض on است.
پشتیبانی از ادغام حافظه (memory merge) را فعال یا غیرفعال می‌کند. این ویژگی، در صورت پشتیبانی توسط میزبان، صفحات حافظهٔ یکسان را میان نمونه‌های ماشین‌های مجازی حذف تکرار (de-duplicate) می‌کند (به طور پیش‌فرض فعال است).
پشتیبانی از بسته‌بندی کلید AES (AES key wrapping) را در میزبان‌های s390-ccw فعال یا غیرفعال می‌کند. این ویژگی کنترل می‌کند که آیا کلیدهای بسته‌بندی AES برای اجرای توابع رمزنگاری AES ساخته شوند یا خیر. پیش‌فرض on است.
پشتیبانی از بسته‌بندی کلید DEA (DEA key wrapping) را در میزبان‌های s390-ccw فعال یا غیرفعال می‌کند. این ویژگی کنترل می‌کند که آیا کلیدهای بسته‌بندی DEA برای اجرای توابع رمزنگاری DEA ساخته شوند یا خیر. پیش‌فرض on است.
پشتیبانی از NVDIMM را فعال یا غیرفعال می‌کند. پیش‌فرض off است.
شیء پشتیبانی مهمان محرمانه (confidential guest support) برای استفاده. پیش‌فرض none است.
نام مستعار confidential-guest-support است. استفاده از confidential-guest-support توصیه می‌شود.
پشتیبانی از ACPI Heterogeneous Memory Attribute Table (HMAT) را فعال یا غیرفعال می‌کند. پیش‌فرض off است.
پشتیبانی از ACPI Serial Port Console Redirection Table (SPCR) را فعال یا غیرفعال می‌کند. پیش‌فرض on است.
تخصیص RAM کمکی مهمان به عنوان یک فایل بی‌نام (anonymous file) که با یک فرایند خارجی قابل اشتراک‌گذاری است. این گزینه برای حافظه‌ای اعمال می‌شود که به عنوان اثر جانبی ایجاد دستگاه‌های مختلف تخصیص می‌یابد. این مورد برای memory-backend-objects اعمال نمی‌شود، چه به صورت صریح در خط فرمان مشخص شده باشد یا به طور ضمنی توسط گزینهٔ خط فرمان -m ایجاد گردد. پیش‌فرض off است.

برای استفاده از حالت مهاجرت cpr-transfer، باید aux-ram-share=on را تنظیم کنید.

جایگزینی برای گزینه‌های قدیمی -mem-path و mem-prealloc. امکان استفاده از یک memory backend را به عنوان RAM اصلی فراهم می‌کند.

برای نمونه:

-object memory-backend-file,id=pc.ram,size=512M,mem-path=/hugetlbfs,prealloc=on,share=on
-machine memory-backend=pc.ram
-m 512M

یادداشت سازگاری مهاجرت:

  • به عنوان شناسهٔ backend باید از مقدار 'default-ram-id' استفاده شود که توسط نوع ماشین اعلان می‌شود (از طریق دستور QMP به نام query-machines در دسترس است)، در صورتی که مهاجرت به/از QEMU قدیمی (<5.0) مورد انتظار باشد.
  • برای انواع ماشین 4.0 و قدیمی‌تر، در صورتی که مهاجرت به/از QEMU قدیمی (<5.0) مد نظر باشد، کاربر باید از گزینهٔ پس‌زمینهٔ x-use-canonical-path-for-ramblock-id=off استفاده کند.

برای نمونه:

-object memory-backend-ram,id=pc.ram,size=512M,x-use-canonical-path-for-ramblock-id=off
-machine memory-backend=pc.ram
-m 512M
یک CXL Fixed Memory Window (CFMW) تعریف می‌کند.

در سند CXL 2.0 ECN: CEDT CFMWS & QTG _DSM شرح داده شده است.

آن‌ها ناحیه‌هایی از نشانی‌های فیزیکی میزبان (Host Physical Addresses یا HPA) روی یک سیستم هستند که ممکن است در میان یک یا چند پل میزبان CXL به صورت درهم‌تنیده (interleaved) قرار گیرند. نرم‌افزار سیستم، دستگاه‌های خاصی را به این پنجره‌ها اختصاص می‌دهد و رمزگشاهای Host-managed Device Memory (HDM) پایین‌دستی را در root portها، درگاه‌های سوییچ و دستگاه‌ها به‌طور مناسب پیکربندی می‌کند تا پیش از فعال کردن دستگاه‌های حافظه، نیازهای درهم‌تنیدگی را برآورده سازد.

گزینهٔ targets.X=target نگاشت را به پل‌های میزبان CXL فراهم می‌کند که می‌توانند با id ارائه‌شده در مدخل -device شناسایی شوند. هنگامی که پنجرهٔ حافظهٔ ثابت نشان‌دهندهٔ حافظهٔ درهم‌تنیده باشد، چندین مدخل برای مشخص کردن همهٔ مقاصد مورد نیاز است. X نمایهٔ مقصد از 0 است.

گزینهٔ size=size اندازهٔ CFMW را تعیین می‌کند. این مقدار باید مضربی از 256MiB باشد. این ناحیه روی 256MiB هم‌تراز خواهد شد، اما مکان آن به پلتفرم و پیکربندی وابسته است.

گزینهٔ interleave-granularity=granularity دانه‌بندی (granularity) درهم‌تنیدگی را تعیین می‌کند. پیش‌فرض 256 (بایت) است. فقط دانه‌بندی‌های 256، 512، 1k، 2k، 4k، 8k و 16k پشتیبانی می‌شوند.

نمونه:

-machine cxl-fmw.0.targets.0=cxl.0,cxl-fmw.0.targets.1=cxl.1,cxl-fmw.0.size=128G,cxl-fmw.0.interleave-granularity=512
یک بخش SGX EPC تعریف می‌کند..TP smp-cache.0.cache=cachename,smp-cache.0.topology=topologylevel تعریف ویژگی‌های حافظه موقت (کش) برای سامانه SMP.

cache=cachename حافظه موقتی را مشخص می‌کند که ویژگی‌ها بر روی آن اعمال خواهند شد. این فیلد ترکیبی از سطح حافظه موقت و نوع آن است. از l1d (کش داده L1)، l1i (کش دستورالعمل L1)، l2 (کش یکپارچه L2) و l3 (کش یکپارچه L3) پشتیبانی می‌کند.

topology=topologylevel سطح توپولوژی حافظه موقت را تنظیم می‌کند. سطوح توپولوژی پردازنده شامل core، module، cluster، die، socket، book، drawer و مقدار ویژه default را می‌پذیرد. اگر default تنظیم شود، توپولوژی حافظه موقت از مدل توپولوژی پیش‌فرض معماری پیروی خواهد کرد. اگر سطح توپولوژی دیگری تعیین شود، کش در سطح توپولوژی متناظر پردازنده به اشتراک گذاشته خواهد شد. برای نمونه، topology=core باعث می‌شود حافظه موقت توسط تمام ریسه‌های درون یک هسته به اشتراک گذاشته شود. برای کش‌هایی که مشخص نشده‌اند، به‌طور پیش‌فرض از سطح default استفاده خواهد شد.

مدل توپولوژی کش پیش‌فرض برای یک ماشین i386 PC به شرح زیر است: کش‌های l1d، l1i و l2 به ازای هر core هستند، در حالی که کش l3 به ازای هر die است.

مثال:

-machine smp-cache.0.cache=l1d,smp-cache.0.topology=core,smp-cache.1.cache=l1i,smp-cache.1.topology=core
همانند -machine.
انتخاب مدل پردازنده (-cpu help برای مشاهده فهرست و انتخاب ویژگی‌های اضافی)
این گزینه برای فعال‌سازی یک شتاب‌دهنده به کار می‌رود. بسته به معماری مقصد، ممکن است kvm، xen، hvf، nitro، nvmm، whpx، mshv یا tcg در دسترس باشند. به‌طور پیش‌فرض، tcg استفاده می‌شود. اگر بیش از یک شتاب‌دهنده مشخص شده باشد، در صورت عدم موفقیت در مقداردهی اولیه مورد قبلی، شتاب‌دهنده بعدی به کار گرفته می‌شود.
هنگامی که Xen در حال استفاده است، این گزینه تعیین می‌کند که آیا دستگاه‌های گرافیکی یکپارچه Intel می‌توانند به صورت passthrough به میهمان واگذار شوند یا خیر (پیش‌فرض=off).
پشتیبانی irqchip درون هسته KVM را کنترل می‌کند. حالت پیش‌فرض، شتاب‌دهی کامل کنترل‌کننده‌های وقفه است. در x86، حالت split irqchip سطح حمله هسته را کاهش می‌دهد، اما هزینه‌ای بر کارایی وقفه‌های non-MSI تحمیل می‌کند. غیرفعال کردن کامل irqchip درون هسته به جز برای مقاصد اشکال‌زدایی توصیه نمی‌شود.
اندازه shadow MMU در KVM را تعیین می‌کند.
شتاب‌دهنده TCG را وادار می‌کند تا تنها یک دستورالعمل میهمان را در هر بلوک ترجمه (translation block) قرار دهد. این کار سرعت شبیه‌سازی را بسیار کاهش می‌دهد، اما در برخی شرایط مانند هنگام تلاش برای تحلیل گزارش‌های تولیدشده با گزینه -d می‌تواند مفید باشد.
استفاده از نگاشت مجزای w^x را برای بافر تولید کد TCG کنترل می‌کند. برخی از سیستم‌عامل‌ها نیازمند فعال بودن این مورد هستند و در چنین حالتی مقدار پیش‌فرض آن on خواهد بود. در دیگر سیستم‌عامل‌ها، پیش‌فرض off است، اما می‌توان آن را برای آزمایش یا اشکال‌زدایی فعال کرد.
اندازه (به مبی‌بایت یا MiB) حافظه موقت بلوک ترجمه TCG را کنترل می‌کند.
تعداد ریسه‌های TCG را کنترل می‌کند. هنگامی که TCG چندریسه‌ای (multi-threaded) باشد، یک ریسه به ازای هر vCPU وجود خواهد داشت و در نتیجه از هسته‌های اضافی میزبان بهره می‌برد. مقدار پیش‌فرض فعال بودن چندریسگی است؛ به شرطی که هر دو بخش پشتیبان (back-end) و جلویی (front-end) از آن پشتیبانی کنند و هیچ ویژگی ناسازگاری در TCG فعال نشده باشد (مانند icount/replay).
هنگامی که شتاب‌دهنده KVM استفاده می‌شود، اندازه بافر حلقوی صفحات کثیف به ازای هر vCPU (تعداد مدخل‌ها برای هر vCPU) را کنترل می‌کند. این مقدار باید توانی از دو و برابر یا بزرگ‌تر از 1024 باشد (اما همچنان کمتر از حداکثر مقداری که هسته پشتیبانی می‌کند). اگر نمی‌دانید کدام مقدار بهترین است، 4096 می‌تواند مقدار اولیه مناسبی باشد. این مقدار را روی 0 بگذارید تا این ویژگی غیرفعال شود. به‌طور پیش‌فرض، این ویژگی غیرفعال است (dirty-ring-size=0). در صورت فعال بودن، KVM در عوض صفحات کثیف را در یک بیت‌مپ ثبت خواهد کرد.
سرویس KVM ثبت تغییرات صفحات کثیف را در دانه‌بندی PAGE_SIZE پیاده‌سازی می‌کند و فعال‌سازی dirty-logging روی یک huge-page در وهله اول مستلزم خرد کردن آن به صفحاتی در اندازه PAGE_SIZE است. KVM در ARM این تقسیم‌بندی را به‌طور پیش‌فرض به صورت تنبل (lazy) انجام می‌دهد. انجام تقسیم huge-page به صورت مشتاقانه (eager) مزایای کارایی دارد، به‌ویژه در شرایطی که هزینه‌های TLBI مرتبط با توالی‌های break-before-make قابل توجه است و همچنین اگر بارهای کاری میهمان مبتنی بر خواندن زیاد باشند. اندازه در اینجا مشخص می‌کند که در هر نوبت چند صفحه خرد شود و باید یک اندازه بلوک معتبر باشد که به ترتیب 1GiB/2MiB/4KiB، 32MiB/16KiB و 512MiB/64KiB برای PAGE_SIZEهای 4KiB/16KiB/64KiB است. در مورد مشخص کردن اندازه بالاتر محتاط باشید زیرا روی حافظه تأثیر خواهد گذاشت. به‌طور پیش‌فرض، این ویژگی غیرفعال است (eager-split-size=0).
پشتیبانی از notify VM exit را در میزبان x86 فعال یا غیرفعال می‌کند و در صورت فعال بودن، پنجره اعلان مربوطه را برای راه‌اندازی VM exit تعیین می‌کند. گزینه run این قابلیت را فعال می‌کند. اگر خروج رخ دهد، کاری انجام نمی‌دهد و ادامه می‌دهد. گزینه internal-error ویژگی را فعال کرده و یک خطای داخلی ایجاد می‌کند. گزینه disable ویژگی را فعال نمی‌کند. این قابلیت می‌تواند مشکل گیر کردن پردازنده به دلیل باز نشدن پنجره‌های رویداد برای یک مدت زمان مشخص (یعنی notify-window) را کاهش دهد. پیش‌فرض: notify-vmexit=run,notify-window=0.
مسیر گره دستگاه KVM را تعیین می‌کند. پیش‌فرض /dev/kvm است. با تنظیم این مقدار روی /dev/fdset/NN می‌توان از این گزینه برای ارسال دستگاه KVM مورد استفاده از طریق یک توصیف‌گر فایل استفاده کرد.
برای بخش پشتیبان WHPX، تعیین می‌کند که آیا توابع روشنگری Hyper-V فعال شوند یا خیر. در x86_64، ویژگی‌های Hyper-V به‌طور پیش‌فرض روشن (on) هستند. در AArch64، آن‌ها به‌طور پیش‌فرض خاموش (off) هستند.
شبیه‌سازی یک سامانه SMP با 'n' پردازنده که در ابتدا روی برد نوع ماشین حضور دارند. در بردهایی که از اتصال گرم پردازنده پشتیبانی می‌کنند، پارامتر اختیاری 'maxcpus' می‌تواند برای اضافه کردن پردازنده‌های بیشتر در زمان اجرا تنظیم شود. هنگامی که هر دو پارامتر حذف شوند، حداکثر تعداد پردازنده‌ها از روی اعضای توپولوژی ارائه‌شده محاسبه خواهد شد و تعداد پردازنده‌های اولیه با حداکثر تعداد مطابقت خواهد داشت. هنگامی که تنها یکی از آن‌ها داده شود، پارامتر حذف‌شده با مقدار همتای خود تنظیم خواهد شد. هر دو پارامتر می‌توانند مشخص شوند، اما حداکثر تعداد پردازنده‌ها باید برابر یا بزرگ‌تر از تعداد اولیه پردازنده‌ها باشد. حاصل‌ضرب سلسله‌مراتب توپولوژی پردازنده باید برابر با حداکثر تعداد پردازنده‌ها باشد. هر دو پارامتر مشمول حد بالایی هستند که توسط نوع ماشین انتخابی خاص تعیین می‌شود.

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

یا تعداد پردازنده‌های اولیه، یا حداقل یکی از پارامترهای توپولوژی باید مشخص شود. پارامترهای تعیین‌شده باید بزرگ‌تر از صفر باشند؛ پیکربندی صریح مانند "cpus=0" مجاز نیست. مقادیر هر پارامتر حذف‌شده از روی پارامترهایی که مشخص شده‌اند محاسبه خواهد شد.

برای نمونه، زیرگزینه زیر یک سلسله‌مراتب توپولوژی پردازنده را (در مجموع ۲ سوکت روی ماشین، ۲ هسته به ازای هر سوکت، ۲ ریسه به ازای هر هسته) برای ماشینی که تنها از sockets/cores/threads پشتیبانی می‌کند تعریف می‌کند. برخی از اعضای گزینه را می‌توان حذف کرد اما مقادیر آن‌ها به‌طور خودکار محاسبه خواهد شد:

-smp 8,sockets=2,cores=2,threads=2,maxcpus=8

زیرگزینه زیر یک سلسله‌مراتب توپولوژی پردازنده (در کل ۲ سوکت روی ماشین، ۲ die در هر سوکت، ۲ ماژول در هر die، ۲ هسته در هر ماژول، ۲ ریسه در هر هسته) را برای ماشین‌های PC که از sockets/dies/modules/cores/threads پشتیبانی می‌کنند تعریف می‌کند. برخی از اعضای این گزینه می‌توانند حذف شوند اما مقادیر آن‌ها به‌طور خودکار محاسبه خواهد شد:

-smp 32,sockets=2,dies=2,modules=2,cores=2,threads=2,maxcpus=32

زیرگزینه زیر یک سلسله‌مراتب توپولوژی CPU (در کل ۲ سوکت روی ماشین، ۲ کلاستر در هر سوکت، ۲ هسته در هر کلاستر، ۲ رشته در هر هسته) را برای ماشین‌های ARM virt که از سوکت‌ها/کلاسترها/هسته‌ها/رشته‌ها پشتیبانی می‌کنند، تعریف می‌کند. برخی از اعضای این گزینه می‌توانند حذف شوند اما مقادیر آن‌ها به‌طور خودکار محاسبه خواهند شد:

-smp 16,sockets=2,clusters=2,cores=2,threads=2,maxcpus=16

از نظر تاریخی، هنگام محاسبه مقادیر ناموجود، اولویت به درشت‌ترین پارامترهای توپولوژی داده می‌شد (یعنی سوکت‌ها بر هسته‌ها، و هسته‌ها بر رشته‌ها ترجیح داده می‌شدند)، با این حال، این رفتار ممکن است تغییر کند. پیش از نسخه 6.2، اولویت با سوکت‌ها نسبت به هسته‌ها و سپس رشته‌ها بود. از نسخه 6.2 به بعد، اولویت با هسته‌ها نسبت به سوکت‌ها و سپس رشته‌ها است.

برای نمونه، گزینه زیر یک برد ماشین با ۲ سوکتِ دارای ۱ هسته پیش از نسخه 6.2 و ۱ سوکتِ دارای ۲ هسته پس از نسخه 6.2 را تعریف می‌کند:

-smp 2

نکته: توپولوژی کلاستر تنها در صورتی در ACPI ایجاد شده و به سیستم‌عامل مهمان شناسانده می‌شود که به‌صراحت در -smp مشخص شده باشد.

یک گره NUMA را تعریف کرده و RAM و VCPUها را به آن تخصیص می‌دهد. فاصله NUMA را از یک گره مبدا به یک گره مقصد تنظیم می‌کند. ویژگی‌های حافظه ناهمگن ACPI را برای گره‌های داده‌شده تعیین می‌کند.

تخصیص قدیمی VCPU از گزینه 'cpus' استفاده می‌کند که در آن firstcpu و lastcpu نمایانگر اندیس‌های CPU هستند. هر گزینه 'cpus' یک بازه پیوسته از اندیس‌های CPU را نشان می‌دهد (یا یک VCPU منفرد اگر lastcpu حذف شده باشد). مجموعه‌ای ناپیوسته از VCPUها را می‌توان با ارائه چندین گزینه 'cpus' مشخص کرد. اگر 'cpus' در تمام گره‌ها حذف شود، VCPUها به‌طور خودکار بین آن‌ها تقسیم می‌شوند.

برای نمونه، گزینه زیر VCPUهای ۰، ۱، ۲ و ۵ را به یک گره NUMA تخصیص می‌دهد:

-numa node,cpus=0-2,cpus=5

گزینه 'cpu' یک جایگزین جدید برای گزینه 'cpus' است که از ویژگی‌های 'socket-id|core-id|thread-id' برای تخصیص اشیاء CPU به یک گره با استفاده از ویژگی‌های ساختار توپولوژی CPU بهره می‌برد. این مجموعه ویژگی‌ها مختص هر ماشین است و به نوع ماشین/گزینه‌های 'smp' استفاده‌شده بستگی دارد. این اطلاعات را می‌توان با دستور مانیتور 'hotpluggable-cpus' استعلام کرد. ویژگی 'node-id' گرهی را مشخص می‌کند که شیء CPU به آن تخصیص خواهد یافت؛ لازم است گره پیش از استفاده با گزینه 'cpu'، با گزینه 'node' اعلان شده باشد.

برای نمونه:

-M pc \
-smp 1,sockets=2,maxcpus=2 \
-numa node,nodeid=0 -numa node,nodeid=1 \
-numa cpu,node-id=0,socket-id=0 -numa cpu,node-id=1,socket-id=1

گزینه 'memdev' حافظه RAM را از یک دستگاه پشتیبان حافظه (memory backend device) معین به یک گره تخصیص می‌دهد. توصیه می‌شود به جای گزینه قدیمی 'mem' از گزینه 'memdev' استفاده شود؛ زیرا گزینه 'memdev' کارایی بهتر و کنترل بیشتری روی RAM پشتیبان فراهم می‌آورد (برای نمونه، پارامتر 'prealloc' در '-memory-backend-ram' تخصیص پیشاپیش حافظه را ممکن می‌سازد).

به دلایل سازگاری، گزینه قدیمی 'mem' در انواع ماشین 5.0 و قدیمی‌تر پشتیبانی می‌شود. توجه داشته باشید که 'mem' و 'memdev' مانعةالجمع هستند. اگر یک گره از 'memdev' استفاده کند، سایر گره‌ها نیز باید از گزینه 'memdev' استفاده کنند، و بالعکس.

کاربران باید حافظه تمام گره‌های NUMA را با 'memdev' (یا گزینه قدیمی 'mem' در صورت موجود بودن) مشخص کنند. در QEMU 5.2، پشتیبانی از '-numa node' بدون تعیین حافظه حذف شد.

گزینه 'initiator' یک گزینه اضافی است که به یک گره NUMA آغازگر (initiator) اشاره می‌کند که بهترین کارایی (کمترین تاخیر یا بیشترین پهنای باند) را نسبت به این گره NUMA دارد. توجه داشته باشید که این گزینه تنها زمانی قابل تنظیم است که ویژگی 'hmat' ماشین روی 'on' تنظیم شده باشد.

مثال زیر ماشینی با ۲ گره NUMA ایجاد می‌کند؛ گره 0 دارای CPU است، گره 1 تنها دارای حافظه است و آغازگر آن گره 0 است. توجه داشته باشید که از آنجا که گره 0 دارای CPU است، به‌طور پیش‌فرض آغازگر گره 0 خودِ آن است و باید خودِ آن باشد.

-machine hmat=on \
-m 2G,slots=2,maxmem=4G \
-object memory-backend-ram,size=1G,id=m0 \
-object memory-backend-ram,size=1G,id=m1 \
-numa node,nodeid=0,memdev=m0 \
-numa node,nodeid=1,memdev=m1,initiator=0 \
-smp 2,sockets=2,maxcpus=2  \
-numa cpu,node-id=0,socket-id=0 \
-numa cpu,node-id=0,socket-id=1

شناسه‌های source و destination نمایانگر شناسه‌های گره NUMA هستند. distance فاصله NUMA از source به destination است. فاصله از یک گره به خودش همیشه ۱۰ است. اگر به هر جفتی از گره‌ها فاصله‌ای اختصاص داده شود، باید به تمام جفت‌ها فاصله داده شود. با این حال، هنگامی که فواصل برای هر جفت گره فقط در یک جهت داده شود، فواصل در جهت مخالف یکسان فرض می‌شوند. اما اگر حتی برای یک جفت گره، یک جفت فاصله نامتقارن تعیین شود، باید برای تمام جفت گره‌ها مقادیر فاصله برای هر دو جهت ارائه شود، حتی اگر متقارن باشند. هنگامی که یک گره از گره دیگر غیرقابل دسترس باشد، فاصله جفت را روی ۲۵۵ تنظیم کنید.

توجه داشته باشید که گزینه -numa هیچ‌یک از منابع مشخص‌شده را تخصیص نمی‌دهد، بلکه صرفاً منابع موجود را به گره‌های NUMA اختصاص می‌دهد. این بدان معناست که همچنان باید از گزینه‌های -m و -smp به ترتیب برای تخصیص RAM و VCPUها استفاده شود.

از 'hmat-lb' برای تنظیم اطلاعات تاخیر و پهنای باند محلی بودن سیستم (System Locality Latency and Bandwidth Information) بین گره‌های NUMA آغازگر و هدف در جدول ویژگی‌های حافظه ناهمگن ACPI‏ (HMAT) استفاده کنید. گره NUMA آغازگر می‌تواند درخواست‌های حافظه ایجاد کند و معمولاً دارای یک یا چند پردازنده است. گره NUMA هدف شامل حافظه آدرس‌پذیر است.

در گزینه 'hmat-lb'، مقادیر node شناسه‌های گره NUMA هستند. hierarchy سلسله‌مراتب حافظه گره NUMA هدف است: اگر hierarchy برابر با 'memory' باشد، ساختار نمایانگر کارایی حافظه است؛ اگر hierarchy برابر با 'first-level|second-level|third-level' باشد، این ساختار نمایانگر کارایی تجمیع‌شده کَش‌های جانبی حافظه (memory side caches) برای هر دامنه است. مقدار type در 'data-type' نوع داده نمایش‌داده‌شده توسط این نمونه ساختار است: اگر 'hierarchy' برابر با 'memory' باشد، 'data-type' بیانگر تاخیر 'access|read|write' یا پهنای باند 'access|read|write' حافظه هدف است؛ اگر 'hierarchy' برابر با 'first-level|second-level|third-level' باشد، 'data-type' تاخیر برخورد (hit latency) از نوع 'access|read|write' یا پهنای باند برخورد (hit bandwidth) از نوع 'access|read|write' کَش جانبی حافظه هدف است.

مقدار lat مقدار تاخیر بر حسب نانوثانیه است. مقدار bw مقدار پهنای باند است؛ مقادیر و واحدهای ممکن NUM[M|G|T] هستند، به این معنی که مقدار پهنای باند برابر با NUM بایت بر ثانیه است (یا بسته به پسوند استفاده‌شده MiB/s ،GiB/s یا TiB/s). توجه داشته باشید که مقدار تاخیر یا پهنای باند برابر با 0، به این معنی است که اطلاعات تاخیر یا پهنای باند مربوطه ارائه نشده است..sp در گزینهٔ 'hmat-cache'، مقدار node-id شناسهٔ NUMA حافظه‌ای است که به آن تعلق دارد. size اندازهٔ حافظهٔ پنهانِ سمتِ حافظه (memory side cache) بر حسب بایت است. level سطح حافظهٔ پنهان توصیف‌شده در این ساختار است؛ توجه داشته باشید که سطح حافظهٔ پنهان 0 نباید با گزینهٔ 'hmat-cache' استفاده شود. associativity میزان پیوستگی حافظهٔ پنهان (cache associativity) است، مقادیر ممکن عبارتند از: 'none/direct(direct-mapped)/complex(complex cache indexing)'. policy سیاست نوشتن (write policy) است. line اندازهٔ خط حافظهٔ پنهان بر حسب بایت است.

برای مثال، گزینه‌های زیر ۲ گره NUMA را توصیف می‌کنند. گره 0 دارای ۲ پردازنده (cpu) و یک ram است، گره 1 تنها یک ram دارد. پردازنده‌های گره 0 با تاخیر دسترسی (access-latency) ۵ نانوثانیه و پهنای باند دسترسی (access-bandwidth) ۲۰۰ مبی‌بایت بر ثانیه (200 MiB/s) به حافظه در گره 0 دسترسی دارند؛ پردازنده‌های گره NUMA شمارهٔ 0 با تاخیر دسترسی ۱۰ نانوثانیه و پهنای باند دسترسی ۱۰۰ مبی‌بایت بر ثانیه (100 MiB/s) به حافظه در گره NUMA شمارهٔ 1 دسترسی دارند. و دربارهٔ اطلاعات حافظهٔ پنهان سمت حافظه، هر دو گره NUMA شمارهٔ 0 و 1 دارای حافظهٔ پنهانِ حافظه با سطح 1، اندازهٔ 10KiB، سیاست write-back و اندازهٔ خط حافظهٔ پنهان ۸ بایت هستند:

-machine hmat=on \
-m 2G \
-object memory-backend-ram,size=1G,id=m0 \
-object memory-backend-ram,size=1G,id=m1 \
-smp 2,sockets=2,maxcpus=2 \
-numa node,nodeid=0,memdev=m0 \
-numa node,nodeid=1,memdev=m1,initiator=0 \
-numa cpu,node-id=0,socket-id=0 \
-numa cpu,node-id=0,socket-id=1 \
-numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-latency,latency=5 \
-numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-bandwidth,bandwidth=200M \
-numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-latency,latency=10 \
-numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-bandwidth,bandwidth=100M \
-numa hmat-cache,node-id=0,size=10K,level=1,associativity=direct,policy=write-back,line=8 \
-numa hmat-cache,node-id=1,size=10K,level=1,associativity=direct,policy=write-back,line=8
افزودن یک توصیف‌گر فایل به یک مجموعهٔ fd. گزینه‌های معتبر عبارتند از:
این گزینه توصیف‌گر فایلی را تعیین می‌کند که یک نسخهٔ مضاعف (duplicate) از آن به مجموعهٔ fd اضافه می‌شود. توصیف‌گر فایل نمی‌تواند stdin، stdout یا stderr باشد.
این گزینه شناسهٔ مجموعهٔ fd را مشخص می‌کند که توصیف‌گر فایل باید به آن افزوده شود.
این گزینه یک رشته با قالب آزاد را تعیین می‌کند که می‌تواند برای توصیف fd به کار رود.

می‌توانید یک ایمیج را با استفاده از توصیف‌گرهای فایل از پیش باز شده از یک مجموعهٔ fd باز کنید:

qemu-system-x86_64 \
 -add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \
 -add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \
 -drive file=/dev/fdset/2,index=0,media=disk
تنظیم پارامتر arg برای آیتم id از نوع group.
تنظیم مقدار پیش‌فرض مشخصهٔ prop از درایور driver به value، برای مثال:
qemu-system-x86_64 -global ide-hd.physical_block_size=4096 disk-image.img

به‌ویژه، می‌توانید از این گزینه برای تنظیم مشخصه‌های درایور برای دستگاه‌هایی استفاده کنید که به‌طور خودکار توسط مدل ماشین ساخته شده‌اند. برای ایجاد دستگاهی که به‌طور خودکار ساخته نمی‌شود و تنظیم مشخصه‌ها روی آن، از -device استفاده کنید.

دستور -global driver.prop=value حالت کوتاه‌نویسی برای -global driver=driver,property=prop,value=value است. شیوهٔ نگارش کامل حتی زمانی که driver حاوی نقطه باشد نیز کار می‌کند.

ترتیب درایوهای راه‌اندازی (boot order) را به صورت رشته‌ای از حروف درایو مشخص می‌کند. حروف درایو معتبر به معماری مقصد بستگی دارند. معماری x86 PC از این موارد استفاده می‌کند: a, b (فلاپی ۱ و ۲)، c (نخستین دیسک سخت)، d (نخستین CD-ROM)، n-p (بوت شبکه یا Etherboot از کارت‌های شبکهٔ ۱ تا ۴)؛ راه‌اندازی از دیسک سخت حالت پیش‌فرض است. برای اعمال یک ترتیب راه‌اندازی خاص تنها در نخستین راه‌اندازی، آن را از طریق once مشخص کنید. توجه داشته باشید که پارامتر order یا once نباید همراه با مشخصهٔ bootindex دستگاه‌ها استفاده شود، زیرا پیاده‌سازی‌های سفت‌افزار (firmware) معمولاً از هر دو به‌طور هم‌زمان پشتیبانی نمی‌کنند.

منوها/اعلان‌های تعاملی راه‌اندازی را می‌توان در صورت پشتیبانی سفت‌افزار/BIOS از طریق menu=on فعال کرد. حالت پیش‌فرض، راه‌اندازی غیرتعاملی است.

در صورتی که گزینهٔ splash=sp_name ارائه شده و menu=on باشد، می‌توان تصویری زمینه (splash) را به bios فرستاد تا در صورت پشتیبانی سفت‌افزار/BIOS به صورت لوگو نمایش داده شود. در حال حاضر Seabios در سیستم X86 از آن پشتیبانی می‌کند. محدودیت: فایل تصویر splash می‌تواند یک فایل jpeg یا یک فایل BMP با ساختار 24 BPP (رنگ واقعی یا true color) باشد. تفکیک‌پذیری باید توسط حالت SVGA پشتیبانی شود، بنابراین اندازه‌های پیشنهادی عبارتند از 320x240، 640x480 و 800x640.

می‌توان یک مهلت زمانی (timeout) به bios ارسال کرد؛ در این صورت اگر راه‌اندازی ناموفق باشد، سیستم‌عامل مهمان به مدت rb_timeout میلی‌ثانیه مکث کرده و سپس مجدداً راه‌اندازی می‌شود. اگر مقدار rb_timeout برابر '-1' باشد، مهمان مجدداً راه‌اندازی نخواهد شد؛ qemu به طور پیش‌فرض مقدار '-1' را به bios ارسال می‌کند. در حال حاضر Seabios برای سیستم X86 از آن پشتیبانی می‌کند.

راه‌اندازی دقیق (strict boot) را در صورت پشتیبانی سفت‌افزار/BIOS از طریق strict=on فعال کنید. این مورد تنها زمانی اثر می‌گذارد که اولویت راه‌اندازی با گزینه‌های bootindex تغییر کرده باشد. حالت پیش‌فرض، راه‌اندازی غیردقیق است.

# ابتدا تلاش برای راه‌اندازی از شبکه، سپس از دیسک سخت
qemu-system-x86_64 -boot order=nc
# ابتدا راه‌اندازی از CD-ROM، بازگشت به ترتیب پیش‌فرض پس از راه‌اندازی مجدد
qemu-system-x86_64 -boot once=d
# راه‌اندازی همراه با تصویر لوگو به مدت ۵ ثانیه
qemu-system-x86_64 -boot menu=on,splash=/root/boot.bmp,splash-time=5000

نکته: قالب موروثی '-boot drives' همچنان پشتیبانی می‌شود اما استفاده از آن توصیه نمی‌گردد، زیرا ممکن است در نسخه‌های آینده حذف شود.

اندازهٔ حافظهٔ RAM راه‌اندازی مهمان را به megs مگابایت تنظیم می‌کند. مقدار پیش‌فرض 128 MiB است. به‌طور اختیاری، می‌توان از پسوند "M" یا "G" به ترتیب برای مشخص کردن مقادیر بر حسب مگابایت یا گیگابایت استفاده کرد. جفت اختیاری slots و maxmem می‌تواند برای تعیین تعداد شکاف‌های حافظه با قابلیت اتصال حین کار (hotpluggable) و حداکثر میزان حافظه استفاده شود. توجه داشته باشید که maxmem باید با اندازهٔ صفحه (page size) هم‌تراز باشد.

برای مثال، خط فرمان زیر اندازهٔ RAM راه‌اندازی مهمان را به 1GiB تنظیم می‌کند، ۳ شکاف برای اتصال حین کار حافظهٔ اضافی ایجاد کرده و حداکثر حافظه‌ای را که مهمان می‌تواند به آن دسترسی پیدا کند به 4GiB محدود می‌کند:

qemu-system-x86_64 -m 1G,slots=3,maxmem=4G

اگر slots و maxmem مشخص نشوند، قابلیت اتصال حین کار حافظه فعال نخواهد شد و RAM راه‌اندازی مهمان هرگز افزایش نخواهد یافت.

تخصیص RAM مهمان از یک فایل موقتاً ایجاد شده در path.
پیش‌تخصیص حافظه هنگام استفاده از -mem-path.
استفاده از چیدمان صفحه‌کلید language (برای مثال fr برای زبان فرانسوی). این گزینه تنها در مواردی نیاز است که دریافت کدهای کلید خام PC (یا همان raw PC keycodes) آسان نباشد (مثلاً در رایانه‌های Mac، با برخی سرورهای X11 یا با یک نمایشگر VNC یا curses). معمولاً روی میزبان‌های PC/Linux یا PC/Windows نیازی به استفاده از آن ندارید.

چیدمان‌های موجود عبارتند از:

ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr

پیش‌فرض en-us است.

اگر گزینهٔ model مشخص شده باشد، -audio یک میان‌بر برای پیکربندی هم‌زمان سخت‌افزار صوتی مهمان و بک‌اند صوتی میزبان به‌طور یک‌جا است. مدل سخت‌افزار مهمان را می‌توان با model=modelname تعیین کرد. برای دیدن فهرست انواع دستگاه‌های در دسترس، از model=help استفاده کنید.

دو مثال زیر دقیقاً یک کار را انجام می‌دهند تا نشان دهند چگونه -audio می‌تواند برای کوتاه‌تر کردن طول خط فرمان به کار رود:

qemu-system-x86_64 -audiodev pa,id=pa -device sb16,audiodev=pa
qemu-system-x86_64 -audio pa,model=sb16

اگر گزینهٔ model مشخص نشود، -audio برای پیکربندی یک بک‌اند صوتی پیش‌فرض استفاده می‌شود که هر زمان ویژگی audiodev روی یک دستگاه یا ماشین تنظیم نشده باشد، استفاده خواهد شد. به‌ویژه، -audio none تضمین می‌کند که حتی برای ماشین‌هایی که دارای سخت‌افزار صوتی تعبیه‌شده هستند نیز صدایی تولید نشود.

در هر دو حالت، گزینهٔ driver مشابه با گزینهٔ متناظر -audiodev در زیر است. برای فهرست کردن درایورهای موجود از driver=help استفاده کنید.

یک درایور بک‌اند صوتی جدید که با id شناسایی می‌شود را اضافه می‌کند.

اگر هیچ بک‌اند صوتی مشخص نشود، QEMU تلاش می‌کند تا یک بک‌اند پیش‌فرض را انتخاب کند. گزینهٔ -display ممکن است بر این‌که کدام بک‌اند انتخاب شود تأثیر بگذارد.

ویژگی‌های عمومی و ویژگی‌های مخصوص درایور وجود دارند. برخی مقادیر را می‌توان برای ورودی و خروجی به شکل متفاوتی تنظیم کرد؛ آن‌ها با in|out. علامت‌گذاری شده‌اند. می‌توانید ویژگی ورودی را با in.prop و ویژگی خروجی را با out.prop تنظیم کنید. برای مثال:

-audiodev alsa,id=example,in.frequency=44110,out.frequency=8000
-audiodev alsa,id=example,out.channels=1 # leaves in.channels unspecified

نکته: اعتبارسنجی پارامترها ناقص شناخته شده است؛ در بسیاری از موارد مشخص کردن یک گزینهٔ نامعتبر باعث می‌شود QEMU پیام خطایی چاپ کرده و شبیه‌سازی را بدون صدا ادامه دهد.

گزینه‌های عمومی معتبر عبارتند از:

بک‌اند صوتی را شناسایی می‌کند.
دورهٔ زمانی تایمر مورد استفاده توسط زیرسیستم صوتی را بر حسب میکروثانیه تنظیم می‌کند. مقدار پیش‌فرض 10000 (۱۰ میلی‌ثانیه) است.
استفاده از موتور میکس QEMU برای ترکیب همهٔ جریان‌ها در داخل QEMU و تبدیل قالب‌های صوتی در صورت عدم پشتیبانی توسط بک‌اند. هنگامی که خاموش (off) باشد، fixed-settings نیز باید خاموش باشد. توجه داشته باشید که غیرفعال کردن این گزینه به این معنی است که بک‌اند انتخاب‌شده باید از چند جریان و قالب‌های صوتی مورد استفاده توسط کارت‌های مجازی پشتیبانی کند، در غیر این صورت هیچ صدایی دریافت نخواهید کرد. غیرفعال کردن این گزینه توصیه نمی‌شود مگر اینکه بخواهید از صدای 5.1 یا 7.1 استفاده کنید، زیرا موتور میکس تنها از صدای مونو و استریو پشتیبانی می‌کند. مقدار پیش‌فرض on است.
استفاده از تنظیمات ثابت برای صدای میزبان. هنگامی که خاموش (off) باشد، بر اساس نحوهٔ باز شدن کارت صدا توسط مهمان تغییر خواهد کرد. در این حالت نباید frequency، channels یا format را مشخص کنید. مقدار پیش‌فرض on است.
بسامد (فرکانس) مورد استفاده هنگام به‌کارگیری fixed-settings را مشخص می‌کند. پیش‌فرض 44100Hz است.
تعداد کانال‌های مورد استفاده هنگام به‌کارگیری fixed-settings را مشخص می‌کند. پیش‌فرض 2 (استریو) است.
قالب نمونه مورد استفاده هنگام استفاده از fixed-settings را مشخص می‌کند. مقادیر معتبر عبارتند از: s8، s16، s32، u8، u16، u32، f32. مقدار پیش‌فرض s16 است.
تعداد voiceهای مورد استفاده را مشخص می‌کند. پیش‌فرض 1 است.
اندازهٔ بافر را بر حسب میکروثانیه تنظیم می‌کند.
یک بک‌اند ساختگی (dummy) ایجاد می‌کند که تمام خروجی‌ها را دور می‌ریزد. این بک‌اند هیچ ویژگی خاص مربوط به بک‌اند ندارد.
یک بک‌اند با استفاده از ALSA ایجاد می‌کند. این بک‌اند تنها روی Linux در دسترس است.

گزینه‌های مخصوص ALSA عبارتند از:

دستگاه ALSA مورد استفاده برای ورودی و/یا خروجی را مشخص می‌کند. پیش‌فرض default است.
طول دوره (period length) را بر حسب میکروثانیه تنظیم می‌کند.
تلاش برای استفاده از حالت poll با دستگاه. پیش‌فرض off است.
آستانه (بر حسب میکروثانیه) برای زمانی که بازپخش آغاز می‌شود. مقدار پیش‌فرض 0 است.
یک بک‌اند با استفاده از Core Audio شرکت Apple ایجاد می‌کند. این بک‌اند تنها روی Mac OS موجود است و تنها از بازپخش پشتیبانی می‌کند.

گزینه‌های مخصوص Core Audio عبارتند از:

تعداد بافرها را تنظیم می‌کند.
یک بک‌اند D-Bus ایجاد می‌کند. این بک‌اند باید به نمایشگر مرتبط شود (به‌صورت -display dbus,audiodev=id). (از نسخهٔ 7.0)

گزینه‌های مخصوص D-Bus عبارتند از:

تعداد نمونه‌ها در هر خواندن/نوشتن (پیش‌فرض ۴۸۰، ۱۰ میلی‌ثانیه در ۴۸ کیلوهرتز) (از نسخهٔ 10.0)
یک بک‌اند با استفاده از DirectSound شرکت Microsoft ایجاد می‌کند. این بک‌اند تنها روی Windows در دسترس است و تنها از بازپخش پشتیبانی می‌کند.

گزینه‌های مخصوص DirectSound عبارتند از:

افزودن تاخیر اضافی به میزان usecs میکروثانیه به بازپخش. مقدار پیش‌فرض 10000 (۱۰ میلی‌ثانیه) است.
یک بک‌اند با استفاده از OSS ایجاد می‌کند. این بک‌اند در بیشتر سیستم‌های شبه‌یونیکس در دسترس است.

گزینه‌های مخصوص OSS عبارتند از:

نام فایل دستگاه OSS مورد استفاده را مشخص می‌کند. پیش‌فرض /dev/dsp است..TP in|out.buffer-count=count تعداد بافرها را مشخص می‌کند.
تلاش برای استفاده از حالت poll در دستگاه. پیش‌فرض on است.
تلاش برای استفاده از دسترسی به دستگاه با نگاشت در حافظه (memory-mapped). پیش‌فرض off است.
باز کردن دستگاه در حالت انحصاری (در این حالت vmix کار نخواهد کرد). پیش‌فرض off است.
سیاست زمان‌بندی را تنظیم می‌کند (عددی بین 0 و 10، که عدد کوچک‌تر به معنای تأخیر کمتر اما مصرف بیشتر پردازنده است). مقدار -1 را برای استفاده از اندازه‌های بافر مشخص‌شده توسط buffer و buffer-count به کار ببرید. این گزینه در صورت عدم دسترسی به OSS 4 نادیده گرفته می‌شود. پیش‌فرض 5 است.
یک بک‌اند با استفاده از PulseAudio ایجاد می‌کند. این بک‌اند در بیشتر سیستم‌ها موجود است.

گزینه‌های ویژه PulseAudio عبارتند از:

کارگزار PulseAudio برای اتصال را مشخص می‌کند.
استفاده از منبع/سینک (source/sink) مشخص‌شده برای ضبط/پخش صدا.
تأخیر مورد نظر بر حسب میکروثانیه. کارگزار PulseAudio تلاش خواهد کرد این مقدار را رعایت کند، اما ممکن است تأخیر واقعی کمتر یا بیشتر باشد.
یک بک‌اند با استفاده از PipeWire ایجاد می‌کند. این بک‌اند در اکثر سیستم‌ها در دسترس است.

گزینه‌های ویژه PipeWire عبارتند از:

تأخیر مورد نظر بر حسب میکروثانیه.
استفاده از منبع/سینک (source/sink) مشخص‌شده برای ضبط/پخش صدا.
نام جریان (stream) مربوط به PipeWire را مشخص می‌کند.
یک بک‌اند با استفاده از SDL ایجاد می‌کند. این بک‌اند در اکثر سیستم‌ها در دسترس است، اما در صورت امکان بهتر است از بک‌اند بومی پلتفرم خود استفاده کنید.

گزینه‌های ویژه SDL عبارتند از:

تعداد بافرها را مشخص می‌کند.
یک بک‌اند با استفاده از SNDIO ایجاد می‌کند. این بک‌اند در OpenBSD و اکثر سیستم‌های شبه‌یونیکس دیگر در دسترس است.

گزینه‌های ویژه Sndio عبارتند از:

دستگاه sndio را برای ورودی و/یا خروجی مشخص می‌کند. پیش‌فرض default است.
طول دوره (period length) مورد نظر را به میکروثانیه مشخص می‌کند.
بک‌اَندی ایجاد می‌کند که صدا را از طریق SPICE ارسال می‌نماید. این بک‌اند نیازمند -spice است و در آن صورت به‌طور خودکار انتخاب می‌شود؛ بنابراین معمولاً می‌توانید از این گزینه صرف‌نظر کنید. این بک‌اند ویژگی اختصاصی ندارد.
یک بک‌اند ایجاد می‌کند که صدا را در یک فایل WAV می‌نویسد.

گزینه‌های ویژه این بک‌اند عبارتند از:

صدای ضبط‌شده را در فایل مشخص‌شده می‌نویسد. پیش‌فرض qemu.wav است.
افزودن درایور دستگاه. عبارت prop=value ویژگی‌های درایور را مشخص می‌کند. ویژگی‌های معتبر به نوع درایور بستگی دارند. برای دریافت راهنما در مورد درایورها و ویژگی‌های موجود، از -device help و -device driver,help استفاده کنید.

برخی درایورها عبارتند از:

افزودن یک IPMI BMC. این مورد یک شبیه‌سازی از پردازنده رابط مدیریت سخت‌افزار است که معمولاً روی سیستم فیزیکی قرار دارد. این دستگاه یک watchdog و امکان بازنشانی (reset) و کنترل روشن/خاموش (power control) سیستم را فراهم می‌آورد. برای کاربردی بودن، باید آن را به یک رابط IPMI متصل کنید.

آدرس اسلیو (slave address) برای پروتکل IPMI جهت استفاده در BMC. مقدار پیش‌فرض 0x20 است. این نشانی، آدرس BMC روی شبکه I2C کنترل‌کننده‌های مدیریتی است. اگر مفهوم آن را نمی‌دانید، می‌توانید با خیال راحت آن را نادیده بگیرید.

شناسه BMC برای رابط‌هایی که از این دستگاه استفاده می‌کنند.
تعریف آدرس اسلیو (slave) جهت استفاده برای BMC. پیش‌فرض 0x20 است.
فایل حاوی داده‌های خام سوابق داده‌های حسگر یا Sensor Data Records (SDR). مقدار پیش‌فرض none است.
اندازه ناحیه واحد قابل تعویض در محل یا Field Replaceable Unit (FRU). مقدار پیش‌فرض 1024 است.
فایل حاوی داده‌های خام فهرست موجودی واحد قابل تعویض در محل (FRU). مقدار پیش‌فرض none است.
مقدار GUID برای BMC در قالب استاندارد UUID. در صورت تنظیم، اجرای دستور "Get GUID" روی BMC آن را بازمی‌گرداند. در غیر این صورت "Get GUID" یک خطا باز خواهد گرداند.
شماره کانال برای کانال LAN ساختگی. می‌تواند 0 یا هر عدد صحیحی از 0x1 تا 0xb (شامل هر دو) باشد. اگر روی 0 تنظیم شود، کانال LAN غیرفعال می‌شود، در غیر این صورت کانال LAN روی شماره کانال مشخص‌شده فعال خواهد شد. مقدار پیش‌فرض 0 است.
نشانی ipv4 کانال شبکه محلی (LAN) مربوط به BMC.
منبع نشانی ipv4 کانال شبکه محلی (LAN) مربوط به BMC. می‌تواند 0 (منبع نامشخص)، 1 (نشانی ایستا)، 2 (DHCP)، 3 (بایوس یا نرم‌افزار سیستم)، یا 4 (سایر منابع) باشد. پیش‌فرض 0 است.
نشانی mac کانال شبکه محلی (LAN) مربوط به BMC.
ماسک زیرشبکه (subnet mask) پروتکل ipv4 برای کانال LAN مربوط به BMC.
نشانی ipv4 درگاه پیش‌فرض (default gateway) برای کانال LAN مربوط به BMC.
نشانی mac درگاه پیش‌فرض برای کانال LAN مربوط به BMC.
افزودن اتصال به یک شبیه‌ساز خارجی IPMI BMC. به جای شبیه‌سازی محلی BMC مانند مورد بالا، به یک موجودیت خارجی متصل می‌شود که سرویس‌های IPMI را ارائه می‌دهد.

اتصال به یک شبیه‌ساز خارجی BMC برقرار می‌گردد. در صورت استفاده از این حالت، اکیداً توصیه می‌شود از گزینه chardev با عنوان "reconnect-ms=" استفاده کنید تا در صورت قطعی، اتصال به شبیه‌ساز مجدداً برقرار شود. توجه داشته باشید که در صورت عدم دقت کافی، این موضوع می‌تواند یک مخاطره امنیتی ایجاد کند، چرا که این رابط توانایی ارسال پالس‌های ریست، وقفه ناپذیرفتنی (NMI) و خاموش کردن ماشین مجازی (VM) را دارد. بهترین کار این است که QEMU به شبیه‌ساز خارجی در حال اجرا روی یک درگاه امن روی localhost متصل شود تا نه شبیه‌ساز و نه QEMU در معرض شبکه خارجی قرار نگیرند..sp برای جزئیات بیشتر درباره رابط خارجی، فایل "lanserv/README.vm" را در کتابخانه OpenIPMI ببینید.

یک رابط KCS IPMI روی گذرگاه ISA اضافه می‌کند. این کار در صورت لزوم مدخل‌های متناظر ACPI و SMBIOS را نیز می‌افزاید.
شناسه BMC برای اتصال، یکی از ipmi-bmc-sim یا ipmi-bmc-extern بالا.
آدرس I/O رابط را تعریف می‌کند. مقدار پیش‌فرض برای KCS برابر 0xca0 است.
وقفه‌ای که باید استفاده شود را تعریف می‌کند. پیش‌فرض 5 است. برای غیرفعال کردن وقفه‌ها، این مقدار را روی 0 تنظیم کنید.
مانند رابط KCS است، اما یک رابط BT را تعریف می‌کند. پورت پیش‌فرض 0xe4 و وقفه پیش‌فرض 5 است.
یک رابط KCS IPMI روی گذرگاه PCI اضافه می‌کند.
شناسه BMC برای اتصال، یکی از ipmi-bmc-sim یا ipmi-bmc-extern بالا.
مانند رابط KCS است، اما یک رابط BT را روی گذرگاه PCI تعریف می‌کند.
این مورد فقط توسط -machine q35 پشتیبانی می‌شود، که شبیه‌سازی Intel VT-d را درون سیستم‌عامل مهمان فعال می‌کند. این گزینه از موارد زیر پشتیبانی می‌کند:
قابلیت نگاشت مجدد وقفه (interrupt remapping) را فعال می‌کند. این ویژگی برای فعال‌سازی کامل x2apic لازم است. در حال حاضر فقط از حالت‌های kvm kernel-irqchip با مقادیر off یا split پشتیبانی می‌کند، در حالی که kernel-irqchip کامل هنوز پشتیبانی نمی‌شود. مقدار پیش‌فرض "auto" است که توسط حالت kernel-irqchip تعیین می‌شود.
حالت کش را برای دستگاه شبیه‌سازی‌شده VT-d فعال می‌کند. هنگامی که caching-mode فعال باشد، هر نگاشت بافر DMA مهمان، یک ابطال IOTLB از درایور IOMMU مهمان به دستگاه vIOMMU به شکل همگام ایجاد می‌کند. این گزینه برای کارکرد -device vfio-pci با دستگاه VT-d الزامی است، زیرا دستگاه‌های اختصاص‌یافته از میزبان نیازمند راه‌اندازی نگاشت DMA روی میزبان پیش از شروع DMA مهمان هستند.
قابلیت device-iotlb را برای دستگاه شبیه‌سازی‌شده VT-d فعال می‌کند. تا کنون virtio/vhost باید تنها استفاده‌کننده واقعی از این پارامتر باشد که همراه با پیکربندی ats=on برای دستگاه به کار می‌رود.
عرض آدرس فضای آدرس IOVA را مشخص می‌کند. فضای آدرس برای جدول‌های صفحه IOMMU سه‌سطحی دارای ۳۹ بیت عرض، و برای جدول‌های صفحه IOMMU چهارسطحی دارای ۴۸ بیت عرض است.

لطفاً برای سناریوهای عمومی شبیه‌سازی VT-d در QEMU به صفحه ویکی نیز مراجعه کنید: https://wiki.qemu.org/Features/VT-d.

این ویژگی تنها توسط -machine q35 (x86_64) و -machine virt (ARM) پشتیبانی می‌شود. این گزینه از موارد زیر پشتیبانی می‌کند:
دانه یا گرانول پیش‌فرضی که قرار است توسط virtio-iommu ارائه شود را مشخص می‌کند. در صورت تنظیم روی host، اندازه گرانول با اندازه صفحه میزبان مطابقت خواهد داشت.
عرض آدرس فضای آدرس IOVA را مشخص می‌کند.
این ویژگی فقط توسط -machine virt (ARM) پشتیبانی می‌شود.
یا مجتمع ریشه پیش‌فرض (pcie.0) یا یک مجتمع ریشه مبتنی بر pxb-pcie را می‌پذیرد.
به مهمان امکان می‌دهد از قابلیت‌های SMMUv3 میزبان برای شتاب‌بخشی بهره ببرد. فعال‌سازی accel گذرگاه SMMUv3 میزبان را در حالت تو در تو (nested mode) پیکربندی می‌کند تا از گذر مستقیم (passthrough) دستگاه vfio-pci پشتیبانی کند.

گزینه‌های زیر در صورت عدم تنظیم دستی، به طور پیش‌فرض روی auto قرار خواهند گرفت. هنگامی که accel=on باشد و این ویژگی‌ها روی auto تنظیم شوند، مقدار آن‌ها از طریق IOMMU_GET_HW_INFO از قابلیت‌های SMMUv3 میزبان استخراج می‌شود. با فعال بودن accel=on، حداقل به یک دستگاه vfio-pci با اتصال سرد (cold-plugged) نیاز است؛ اگر در زمان راه‌اندازی ماشین چنین دستگاهی موجود نباشد، QEMU لغو خواهد شد (abort).

اگر accel=off باشد، مقادیر auto به پیش‌فرض‌های غیر شتاب‌یافته ذکرشده در زیر حل می‌شوند.

پشتیبانی از ابطال بازه‌ای (Range Invalidation)، که به درایور SMMUv3 اجازه می‌دهد ورودی‌های TLB را برای بازه‌ای از IOVAها به طور همزمان باطل کند، به جای اینکه برای هر صفحه دستورات جداگانه‌ای صادر نماید. باید با پشتیبانی ابطال بازه‌ای SMMUv3 در میزبان مطابقت داشته باشد.
•
با accel=off، مقدار auto به 'on' حل می‌شود.
پشتیبانی از سرویس‌های ترجمه آدرس (Address Translation Services)، که به دستگاه‌های PCIe امکان می‌دهد ترجمه‌های آدرس را در TLB محلی خود ذخیره (cache) کرده و تأخیر را کاهش دهند. SMMUv3 میزبان برای فعال کردن این ویژگی در vIOMMU باید از ATS پشتیبانی کند.
•
با accel=off، مقدار auto به 'off' حل می‌شود.
اندازه آدرس خروجی (Output Address Size) را بر حسب بیت تنظیم می‌کند. مقدار تنظیم‌شده در اینجا باید کمتر یا مساوی با OAS پشتیبانی‌شده توسط SMMUv3 میزبان باشد، تا آدرس‌های فیزیکی میانی (IPA) مصرف‌شده توسط SMMU میزبان برای ترجمه مرحله ۲ (stage-2) از بیشترین اندازه IPA پشتیبانی‌شده در میزبان تجاوز نکند.
•
با accel=off، مقدار auto به 44 حل می‌شود.
اندازه شناسه Substream را بر حسب بیت تنظیم می‌کند. در صورت تنظیم روی مقداری غیر صفر، قابلیت PASID به vIOMMU اعلان شده و موارد کاربرد شتاب‌یافته مانند آدرس‌دهی مجازی مشترک (SVA) پشتیبانی می‌شوند.
•
با accel=off، مقدار auto به 0 حل می‌شود.
مجازی‌سازی سخت‌افزاری صف دستورات (CMDQV) را برای صف دستورات SMMUv3 فعال می‌کند. در حال حاضر فقط پیاده‌سازی NVIDIA Tegra241 CMDQV پشتیبانی می‌شود.
  • با accel=on، مقدار auto به این معنی است که مقدار به طور خودکار از SMMU میزبان استخراج می‌شود.
  • با accel=off، مقدار auto به 'off' حل می‌شود.
شبیه‌سازی واحد مدیریت حافظه ورودی/خروجی (IOMMU) نوع AMD-Vi را فعال می‌کند. فقط با -machine q35 در دسترس است و از گزینه‌های زیر پشتیبانی می‌کند:
پشتیبانی از ترجمه آدرس DMA و بررسی مجوزهای دسترسی برای مهمانانی که دستگاه‌های عبوری (passthrough) را با استفاده از قالب جدول صفحه ورودی/خروجی AMD v1 به دامنه‌های صفحه‌بندی متصل می‌کنند. این ویژگی امکان کارکرد صحیح -device vfio-pci,... را با مهمانی که از قابلیت نگاشت مجدد DMA در vIOMMU استفاده می‌کند فراهم می‌سازد.
عملکرد عمومی IOMMU مبتنی بر x86 که توسط دستگاه amd-iommu پیاده‌سازی شده است. قابلیت نگاشت مجدد وقفه را در مهمانان فعال می‌کند که برای فعال کردن پشتیبانی از x2apic نیز الزامی است. در حال حاضر فقط با kernel-irqchip=off|split در دسترس است؛ هنگام استفاده از هر یک از این حالت‌ها به طور خودکار فعال می‌شود و با kernel-irqchip=on غیرفعال می‌گردد.
جدول نگاشت مجدد وقفه از حالت x2apic پشتیبانی می‌کند و استفاده مهمان از قالب ۱۲۸ بیتی IRTE با فیلد مقصد ۳۲ بیتی را ممکن می‌سازد. برای پشتیبانی از مسیریابی وقفه‌ها به vCPUهایی با شناسه APIC بزرگتر از 0xff الزامی است. -name name نام ماشین مهمان را تنظیم می‌کند. این نام در عنوان پنجره‌ی SDL نمایش داده خواهد شد. این نام همچنین برای سرور VNC استفاده می‌شود. علاوه بر این، می‌تواند به صورت اختیاری نام فرآیند اصلی قابل مشاهده در لینوکس را تعیین کند. نام‌گذاری ریسه‌های مجزا نیز برای کمک به اشکال‌زدایی در لینوکس قابل فعال‌سازی است.
تنظیم UUID سیستم.

گزینه‌های مدیریت دستگاه بلوکی QEMU تاریخچه‌ای طولانی دارند و همگام با گسترش مجموعه ویژگی‌ها و پیچیدگی لایه‌ی بلوکی، چندین بازنگری را پشت سر گذاشته‌اند. بسیاری از راهنماهای برخط QEMU اغلب به گزینه‌های قدیمی‌تر و منسوخ‌شده ارجاع می‌دهند که می‌تواند موجب سردرگمی شود.

صریح‌ترین روش برای توصیف دیسک‌ها، استفاده از ترکیب -device برای مشخص کردن دستگاه سخت‌افزاری و -blockdev برای توصیف backend است. دستگاه تعیین می‌کند که سیستم مهمان چه چیزی را می‌بیند و backend توصیف می‌کند که QEMU داده‌ها را چگونه مدیریت می‌نماید. این تنها رابط با پایداری تضمین‌شده برای توصیف دستگاه‌های بلوکی است و به همین جهت برای ابزارهای مدیریتی و اسکریپت‌نویسی توصیه می‌شود.

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

گزینه‌های قدیمی‌تر مانند -hda اساساً ماکروهایی هستند که به گزینه‌های -drive برای رابط‌های گوناگون درایو بسط می‌یابند. فرم‌های اولیه فرضیات بسیاری را از روزهایی که QEMU یک رایانه شخصی قدیمی (legacy PC) را شبیه‌سازی می‌کرد با خود به همراه دارند؛ استفاده از آن‌ها برای پیکربندی‌های مدرن توصیه نمی‌شود.

استفاده از file به عنوان تصویر فلاپی دیسک 0/1 (فصل Disk Images <#disk-images> را در System Emulation Users Guide ببینید).
استفاده از file به عنوان تصویر دیسک سخت 0، 1، 2 یا 3 در گذرگاه پیش‌فرض ماشین شبیه‌سازی‌شده (برای نمونه این در بیشتر ماشین‌های x86 گذرگاه IDE است، اما در سایر معماری‌های مقصد می‌تواند SCSI، virtio یا چیز دیگری باشد). همچنین فصل Disk Images <#disk-images> را در System Emulation Users Guide ببینید.
استفاده از file به عنوان تصویر CD-ROM در گذرگاه پیش‌فرض ماشین شبیه‌سازی‌شده (که در x86 برابر با IDE1 master است، بنابراین نمی‌توانید به طور هم‌زمان از -hdc و -cdrom در آنجا استفاده کنید). در سیستم‌هایی که پشتیبانی می‌کنند، می‌توانید با قرار دادن /dev/cdrom به عنوان نام فایل، از CD-ROM میزبان استفاده کنید.
تعریف یک گره درایور بلوکی جدید. برخی از گزینه‌ها برای همه درایورهای بلوکی اعمال می‌شوند، در حالی که گزینه‌های دیگر تنها برای یک درایور بلوکی خاص پذیرفته می‌شوند. برای فهرستی از گزینه‌های عمومی و گزینه‌های رایج‌ترین درایورهای بلوکی، به موارد زیر مراجعه کنید.

گزینه‌هایی که انتظار ارجاع به گره دیگری را دارند (مانند file) را می‌توان به دو روش تعیین کرد. یا نام گره یک گره از قبل موجود را مشخص می‌کنید (file=node-name)، یا یک گره جدید را به صورت درون‌خطی تعریف کرده و گزینه‌های گره ارجاع‌شده را پس از یک نقطه اضافه می‌نمایید (file.filename=path,file.aio=native).

یک گره درایور بلوکی ایجاد شده با -blockdev می‌تواند با مشخص کردن نام گره آن برای ویژگی drive در یک آرگومان -device که یک دستگاه بلوکی را تعریف می‌کند، برای یک دستگاه مهمان استفاده شود.

درایور بلوکی مورد استفاده برای گره داده‌شده را مشخص می‌کند.
این گزینه نام گره درایور بلوکی را تعیین می‌کند که بعداً از طریق آن ارجاع داده خواهد شد. نام باید یکتا باشد، یعنی نباید با نام یک گره درایور بلوکی دیگر یا (در صورت استفاده از -drive) با شناسه یک درایو یکسان باشد.

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

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

توجه داشته باشید که برخی از درایورهای بلوکی، چه به طور کلی یا در پیکربندی‌های خاص، تنها از دسترسی فقط‌خواندنی پشتیبانی می‌کنند. در این حالت، مقدار پیش‌فرض read-only=off کار نمی‌کند و گزینه باید به طور صریح مشخص شود.

اگر auto-read-only=on تنظیم شود، ممکن است QEMU حتی در صورت درخواست read-only=off به حالت فقط‌خواندنی بازگردد، یا حتی در صورت نیاز بین حالت‌ها جابجا شود؛ مثلاً بسته به اینکه آیا فایل تصویر قابل نوشتن است یا کاربری با دسترسی نوشتن به گره متصل است یا خیر.
سیستم قفل کردن تصویر در QEMU را با وادار کردن گره به استفاده از دسترسی اشتراکی ضعیف‌تر برای مجوزهایی که معمولاً درخواست دسترسی انحصاری می‌کردند، نادیده می‌گیرد. هنگامی که احتمال باز بودن هم‌زمان یک فایل توسط چندین نمونه وجود دارد (چه این فراخوانی QEMU نمونه اول باشد یا دوم)، هر دو نمونه باید دسترسی اشتراکی را مجاز کنند تا نمونه دوم در باز کردن فایل موفق شود.

فعال کردن force-share=on نیازمند read-only=on است.

با تنظیم cache.direct=on می‌توان از حافظه نهان صفحه (page cache) میزبان اجتناب کرد. این کار تلاش می‌کند تا ورودی/خروجی دیسک را مستقیماً به حافظه مهمان انجام دهد. QEMU ممکن است همچنان یک کپی داخلی از داده‌ها را انجام دهد.
در صورتی که یکپارچگی داده‌ها در هنگام خرابی‌های سیستم میزبان برایتان اهمیتی ندارد، می‌توانید از cache.no-flush=on استفاده کنید. این گزینه به QEMU اعلام می‌کند که هرگز نیازی به نوشتن داده‌ها بر روی دیسک ندارد و در عوض می‌تواند موارد را در حافظه نهان نگه دارد. در صورت بروز هرگونه مشکل، مانند قطع برق میزبان، قطع تصادفی اتصال فضای ذخیره‌سازی و غیره، تصویر دیسک شما به احتمال بسیار زیاد غیرقابل استفاده خواهد شد.
مقدار discard یکی از گزینه‌های "ignore" (یا "off") یا "unmap" (یا "on") است و مشخص می‌کند که آیا درخواست‌های discard (که به عنوان trim یا unmap نیز شناخته می‌شوند) نادیده گرفته شوند یا به سیستم فایل ارسال گردند. برخی از انواع ماشین‌ها ممکن است از درخواست‌های discard پشتیبانی نکنند.
مقدار detect-zeroes می‌تواند "off"، "on" یا "unmap" باشد و تبدیل خودکار عملیات ساده‌ی نوشتن صفر توسط سیستم‌عامل به دستورات بهینه‌شده نوشتن صفر مخصوص درایور را فعال می‌کند. در صورتی که discard روی "unmap" تنظیم شده باشد، حتی می‌توانید "unmap" را انتخاب کنید تا امکان تبدیل نوشتن صفر به عملیات unmap فراهم شود.
این درایور بلوکی در سطح پروتکل برای دسترسی به فایل‌های معمولی است.
مسیر فایل تصویر در سیستم فایل محلی
مشخص‌کننده backend مربوط به AIO (شامل threads/native/io_uring، پیش‌فرض: threads)
مشخص می‌کند که آیا فایل تصویر با قفل‌های Linux OFD / POSIX محافظت می‌شود یا خیر. حالت پیش‌فرض در صورت موجود بودن، استفاده از رابط Linux Open File Descriptor است، در غیر این صورت هیچ قفلی اعمال نمی‌شود. (شامل auto/on/off، پیش‌فرض: auto)

مثال:

-blockdev driver=file,node-name=disk,filename=disk.img
گزینه‌های ویژهٔ راه‌انداز برای raw این راه‌انداز بلوکی قالب تصویر برای تصاویر خام (raw) است. معمولاً در بالای یک راه‌انداز بلوکی در سطح پروتکل مانند file قرار می‌گیرد.
ارجاع به یا تعریف گره راه‌انداز بلوکی منبع داده (به عنوان مثال یک گره راه‌انداز file)

مثال ۱:

-blockdev driver=file,node-name=disk_file,filename=disk.img
-blockdev driver=raw,node-name=disk,file=disk_file

مثال ۲:

-blockdev driver=raw,node-name=disk,file.driver=file,file.filename=disk.img
گزینه‌های ویژهٔ راه‌انداز برای qcow2
این راه‌انداز بلوکی قالب تصویر برای تصاویر qcow2 است. معمولاً در بالای یک راه‌انداز بلوکی در سطح پروتکل مانند file قرار می‌گیرد.
ارجاع به یا تعریف گره راه‌انداز بلوکی منبع داده (به عنوان مثال یک گره راه‌انداز file)
ارجاع به یا تعریف دستگاه بلوکی فایل پشتیبان (backing file) (پیش‌فرض از فایل تصویر گرفته می‌شود). فرستادن مقدار null در اینجا به منظور غیرفعال کردن فایل پشتیبانِ پیش‌فرض مجاز است.
تعیین فعال بودن ویژگی شمارنده‌های مرجع تاخیری (lazy refcounts) (به صورت on/off؛ پیش‌فرض از فایل تصویر گرفته می‌شود)
حداکثر اندازهٔ کل حافظه‌های پنهان جدول L2 و بلوک refcount بر حسب بایت (پیش‌فرض: مجموع l2-cache-size و refcount-cache-size)
حداکثر اندازهٔ حافظهٔ پنهان جدول L2 بر حسب بایت (پیش‌فرض: در صورت مشخص نشدن cache-size - مقدار 32M در پلتفرم‌های لینوکس و 8M در پلتفرم‌های غیر لینوکسی؛ در غیر این صورت، تا حد امکان بزرگ در محدودهٔ cache-size، ضمن در نظر گرفتن اندازهٔ درخواستی یا کمینهٔ حافظهٔ پنهان refcount)
حداکثر اندازهٔ حافظهٔ پنهان بلوک refcount بر حسب بایت (پیش‌فرض: ۴ برابر اندازهٔ کلاستر؛ یا اگر cache-size مشخص شده باشد، بخشی از آن که برای حافظهٔ پنهان L2 استفاده نشده است)
پاک‌سازی مدخل‌های استفاده‌نشده در حافظه‌های پنهان L2 و refcount. این بازه زمانی بر حسب ثانیه است. مقدار پیش‌فرض در پلتفرم‌های پشتیبانی‌شده ۶۰۰ و در پلتفرم‌های دیگر ۰ است. تنظیم آن روی ۰ این قابلیت را غیرفعال می‌کند.
اینکه آیا درخواست‌های discard به دستگاه qcow2 باید به منبع داده هدایت شوند یا خیر (on/off؛ پیش‌فرض: در صورت مشخص شدن discard=unmap مقدار on، در غیر این صورت off)
اینکه آیا هنگام آزادسازی کلاسترها در فایل qcow2 بر اثر عملیات تصویر لحظه‌ای (مانند حذف یک snapshot)، درخواست‌های discard برای منبع داده ارسال شوند یا خیر (on/off؛ پیش‌فرض: on)
اینکه آیا در سایر مواردی که یک کلاستر آزاد می‌شود، درخواست‌های discard برای منبع داده صادر شوند یا خیر (on/off؛ پیش‌فرض: off)
در صورت فعال بودن، کلاسترهای داده هنگامی که دیگر استفاده نمی‌شوند (مثلاً دور ریخته می‌شوند (discard) یا به کلاسترهای صفر تبدیل می‌شوند) همچنان از پیش تخصیص‌یافته باقی می‌مانند. طبق معمول، اینکه داده‌های قدیمی دور ریخته شوند یا در سطح پروتکل (یعنی در فایل تصویر) نگهداری گردند، به تنظیمات گزینهٔ pass-discard-request بستگی دارد. نگه‌داشتن کلاسترها در وضعیت از پیش تخصیص‌یافته از قطعه‌قطعه شدن (fragmentation) فایل qcow2 جلوگیری می‌کند که در غیر این صورت بر اثر آزادسازی و تخصیص مجدد بعدی رخ می‌داد. گذشته از افت احتمالی کارایی، چنین قطعه‌قطعه شدنی می‌تواند به افزایش تخصیص کلاسترها پس از انتهای فایل تصویر منجر شود که نتیجهٔ آن رشد طول فیزیکی فایل تصویر بسیار فراتر از اندازهٔ دیسک مهمان (guest) خواهد بود. اگر اندازهٔ فایل تصویر اهمیت دارد (مثلاً هنگام ذخیرهٔ مستقیم تصاویر qcow2 روی دستگاه‌های بلوکی)، باید فعال کردن این گزینه را در نظر بگیرید.
تعیین اینکه کدام بررسی‌های هم‌پوشانی برای نوشتن روی تصویر انجام شوند (none/constant/cached/all؛ پیش‌فرض: cached). برای جزئیات یا کنترل دقیق‌تر به مستندات QAPI مربوط به blockdev-add مراجعه کنید.

مثال ۱:

-blockdev driver=file,node-name=my_file,filename=/tmp/disk.qcow2
-blockdev driver=qcow2,node-name=hda,file=my_file,overlap-check=none,cache-size=16777216

مثال ۲:

-blockdev driver=qcow2,node-name=disk,file.driver=http,file.filename=http://example.com/image.qcow2
گزینه‌های ویژهٔ سایر راه‌اندازها
لطفاً به مستندات QAPI مربوط به دستور QMP به نام blockdev-add مراجعه کنید.
تعریف یک درایو جدید. این کار شامل ایجاد یک گره راه‌انداز بلوکی (سمت backend) و همچنین یک دستگاه مهمان (guest device) است، و عمدتاً یک میان‌بُر برای تعریف گزینه‌های متناظر -blockdev و -device محسوب می‌شود.

دستور -drive تمام گزینه‌هایی را که توسط -blockdev پذیرفته می‌شوند قبول می‌کند. علاوه بر این، گزینه‌های زیر را می‌شناسد:

این گزینه مشخص می‌کند چه تصویر دیسکی (فصل Disk Images <#disk-images> در System Emulation Users Guide را ببینید) برای این درایو استفاده شود. اگر نام فایل شامل ویرگول است، باید آن را دو بار تکرار کنید (برای مثال، "file=my,,file" برای استفاده از فایل "my,file").

فایل‌های خاص مانند دستگاه‌های iSCSI را می‌توان با استفاده از URLهای ویژهٔ پروتکل مشخص کرد. برای اطلاعات بیشتر بخش مربوط به "Device URL Syntax" را ببینید.

این گزینه مشخص می‌کند که درایو به کدام نوع رابط متصل است. انواع موجود عبارتند از: ide، scsi، sd، mtd، floppy، pflash، virtio، none.
این گزینه‌ها با تعیین شماره گذرگاه (bus) و شناسهٔ واحد (unit id)، محل اتصال درایو را مشخص می‌کنند.
این گزینه با استفاده از یک نمایه (index) در فهرست اتصالات موجود از یک نوع رابط مشخص، محل اتصال درایو را تعیین می‌کند.
این گزینه نوع رسانه را مشخص می‌کند: disk یا cdrom.
مقدار snapshot برابر "on" یا "off" است و حالت snapshot را برای درایو مشخص‌شده کنترل می‌کند (-snapshot را ببینید)..TP cache=cache مقدار cache یکی از مقادیر "none"، "writeback"، "unsafe"، "directsync" یا "writethrough" است و نحوه استفاده از کَش میزبان برای دسترسی به داده‌های بلوکی را کنترل می‌کند. این یک میان‌بُر است که گزینه‌های cache.direct و cache.no-flush (مانند آنچه در -blockdev است) و علاوه بر آن cache.writeback را تنظیم می‌کند که مقداری پیش‌فرض برای گزینه write-cache دستگاه‌های بلوکی مهمان (مانند آنچه در -device است) فراهم می‌آورد. این حالت‌ها با تنظیمات زیر مطابقت دارند:
cache.writeback cache.direct cache.no-flush
writeback on off off
none on on off
writethrough off off off
directsync off on off
unsafe on off on

حالت پیش‌فرض cache=writeback است.

مقدار aio یکی از گزینه‌های "threads"، "native" یا "io_uring" است و میان ورودی/خروجی (I/O) دیسک مبتنی بر pthread،‏ Linux AIO محلی، یا رابط برنامه‌نویسی Linux io_uring انتخاب می‌کند.
مشخص می‌کند که به جای تشخیص خودکار قالب، کدام قالب دیسک استفاده شود. می‌توان برای جلوگیری از تفسیر سرایند قالب غیرقابل‌اعتماد، از format=raw استفاده کرد.
مشخص می‌کند که هنگام بروز خطاهای نوشتن و خواندن چه کنشی انجام شود. کنش‌های معتبر عبارتند از: "ignore" (نادیده گرفتن خطا و تلاش برای ادامه کار)، "stop" (مکث QEMU)، "report" (گزارش خطا به مهمان)، "enospc" (مکث QEMU تنها در صورت پر بودن دیسک میزبان؛ در غیر این صورت گزارش خطا به مهمان). تنظیمات پیش‌فرض werror=enospc و rerror=report است.
گزینه copy-on-read به صورت "on" یا "off" است و تعیین می‌کند که آیا بخش‌های خوانده‌شده از فایل پشتیبان (backing file) در فایل ایمیج کپی شوند یا خیر.
محدودیت‌های نرخ پهنای باند را بر حسب بایت بر ثانیه، چه برای همه انواع درخواست‌ها و چه منحصراً برای خواندن یا نوشتن، مشخص می‌کند. مقادیر کوچک می‌توانند منجر به اتمام مهلت زمانی (timeout) یا قفل شدن سیستم مهمان شوند. حداقل مقدار امن برای دیسک‌ها 2 MiB/s است.
جهش‌ها (bursts) را بر حسب بایت بر ثانیه، چه برای همه انواع درخواست‌ها یا فقط برای خواندن یا نوشتن مشخص می‌کند. جهش‌ها به ورودی/خروجی مهمان اجازه می‌دهند تا به طور موقت بالاتر از حد مجاز اوج بگیرد.
محدودیت‌های نرخ درخواست را بر حسب تعداد درخواست در ثانیه، چه برای همه انواع درخواست‌ها یا فقط برای خواندن یا نوشتن مشخص می‌کند.
جهش‌ها را بر حسب تعداد درخواست در ثانیه، چه برای همه انواع درخواست‌ها یا فقط برای خواندن یا نوشتن مشخص می‌کند. جهش‌ها به ورودی/خروجی مهمان اجازه می‌دهند تا به طور موقت فراتر از حد مجاز اوج بگیرد.
باعث می‌شود که هر is بایت از یک درخواست، به عنوان یک درخواست جدید برای محدودسازی iops محاسبه شود. از این گزینه برای جلوگیری از دور زدن محدودیت‌های iops توسط مهمان از طریق ارسال درخواست‌های کمتر اما بزرگ‌تر استفاده کنید.
پیوستن به یک گروه سهمیه‌بندی محدودسازی با نام g. تمام درایوهایی که عضو یک گروه هستند، محاسبات سهمیه آن‌ها با یکدیگر انجام می‌شود. از این گزینه برای جلوگیری از دور زدن محدودیت‌ها توسط مهمان با استفاده از چندین دیسک کوچک به جای یک دیسک بزرگ استفاده کنید.

به طور پیش‌فرض، حالت cache.writeback=on استفاده می‌شود. این حالت به محض قرار گرفتن داده‌ها در page cache میزبان، پایان نوشتن داده را اعلام می‌کند. تا زمانی که سیستم‌عامل مهمان مطمئن شود کَش‌های دیسک را در مواقع لزوم به درستی تخلیه (flush) می‌کند، این وضعیت امن است. اگر سیستم‌عامل مهمان کَش‌های ناپایدار نوشتن دیسک را به درستی مدیریت نکند و سیستم میزبان از کار بیفتد یا برق آن قطع شود، ممکن است داده‌های مهمان آسیب ببینند.

برای چنین سیستم‌های مهمانی، باید استفاده از cache.writeback=off را در نظر بگیرید. این به آن معناست که از page cache میزبان برای خواندن و نوشتن داده‌ها استفاده می‌شود، اما اعلان اتمام نوشتن تنها زمانی به مهمان ارسال خواهد شد که QEMU مطمئن شود هر نوشتن به طور کامل روی دیسک تخلیه (flush) شده است. توجه داشته باشید که این موضوع تأثیر چشمگیری بر کارایی دارد.

هنگام استفاده از گزینه -snapshot، همواره از کَشینگ ناامن (unsafe) استفاده می‌شود.

گزینه Copy-on-read از دسترسی‌های مکرر به بخش‌های یکسان در فایل پشتیبان جلوگیری می‌کند و هنگامی که فایل پشتیبان روی یک شبکه کُند قرار دارد، بسیار مفید است. به طور پیش‌فرض copy-on-read خاموش (off) است.

به جای -cdrom می‌توانید از این دستور استفاده کنید:

qemu-system-x86_64 -drive file=file,index=2,media=cdrom

به جای -hda، -hdb، -hdc، -hdd می‌توانید از دستورات زیر استفاده کنید:

qemu-system-x86_64 -drive file=file,index=0,media=disk
qemu-system-x86_64 -drive file=file,index=1,media=disk
qemu-system-x86_64 -drive file=file,index=2,media=disk
qemu-system-x86_64 -drive file=file,index=3,media=disk

می‌توانید یک ایمیج را با استفاده از توصیف‌کننده‌های فایل (fd) از پیش بازشده از یک fd set باز کنید:

qemu-system-x86_64 \
 -add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \
 -add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \
 -drive file=/dev/fdset/2,index=0,media=disk
می‌توانید یک CDROM را به اسلیو (slave) مربوط به ide0 متصل کنید:
qemu-system-x86_64 -drive file=file,if=ide,index=1,media=cdrom

اگر آرگومان "file=" را مشخص نکنید، یک درایو خالی تعریف می‌کنید:

qemu-system-x86_64 -drive if=ide,index=1,media=cdrom

به‌جای -fda و -fdb، می‌توانید از موارد زیر استفاده کنید:

qemu-system-x86_64 -drive file=file,index=0,if=floppy
qemu-system-x86_64 -drive file=file,index=1,if=floppy

به‌طور پیش‌فرض، رابط "ide" است و شاخص (index) به‌طور خودکار افزایش می‌یابد:

qemu-system-x86_64 -drive file=a -drive file=b

به این صورت تفسیر می‌شود:

qemu-system-x86_64 -hda a -hdb b
استفاده از file به‌عنوان ایمیج حافظه فلش روی بُرد (on-board).
استفاده از file به‌عنوان ایمیج کارت SecureDigital.
نوشتن روی فایل‌های موقت به‌جای فایل‌های ایمیج دیسک. در این حالت، داده‌ها روی ایمیج خام دیسک مورد استفاده شما بازنویسی نمی‌شوند. با این حال می‌توانید با فشردن C-a s بازنویسی را اجبار کنید (فصل Disk Images <#disk-images> در راهنمای کاربران شبیه‌سازی سیستم را ببینید).

هشدار:

گزینه snapshot با -blockdev ناسازگار است (به‌جای آن از qemu-img برای ایجاد دستی ایمیج‌های snapshot جهت ضمیمه کردن به blockdev خود استفاده کنید). اگر اعلان‌های ترکیبی از -blockdev و -drive دارید، می‌توانید به‌جای این گزینه سراسری از ویژگی 'snapshot' در اعلان‌های drive خود استفاده کنید.
تعریف یک دستگاه سیستم‌فایل جدید. گزینه‌های معتبر عبارتند از:
دسترسی‌ها به سیستم‌فایل توسط QEMU انجام می‌شود.
سیستم‌فایل ساختگی (synthetic)، که تنها توسط QTests استفاده می‌شود.
شناسه این دستگاه را مشخص می‌کند.
مسیر برون‌سپاری (export) را برای دستگاه سیستم‌فایل مشخص می‌کند. فایل‌های زیر این مسیر در دسترس کلاینت 9p در سیستم‌عامل مهمان قرار خواهند گرفت.
مدل امنیتی مورد استفاده برای این مسیر برون‌سپاری را مشخص می‌کند. مدل‌های امنیتی پشتیبانی‌شده عبارتند از "passthrough"، "mapped-xattr"، "mapped-file" و "none". در مدل امنیتی "passthrough"، فایل‌ها با همان اعتبارسنجی‌هایی (credentials) ذخیره می‌شوند که در سیستم مهمان ایجاد شده‌اند. این امر مستلزم اجرای QEMU با دسترسی ریشه (root) است. در مدل امنیتی "mapped-xattr"، برخی از ویژگی‌های فایل مانند uid، gid، بیت‌های حالت (mode bits) و مقصد پیوند به‌صورت ویژگی‌های فایل (xattr) ذخیره می‌شوند. برای "mapped-file" این ویژگی‌ها در دایرکتوری پنهان .virtfs_metadata ذخیره می‌شوند. دایرکتوری‌های برون‌سپاری‌شده توسط این مدل امنیتی نمی‌توانند با سایر ابزارهای یونیکس تعامل داشته باشند. مدل امنیتی "none" مشابه passthrough است، با این تفاوت که سرور در صورت عدم موفقیت در تنظیم ویژگی‌های فایل مانند مالکیت، خطایی گزارش نمی‌کند. مدل امنیتی تنها برای fsdriver از نوع local الزامی است.
این یک آرگومان اختیاری است. تنها مقدار پشتیبانی‌شده "immediate" است. این بدان معناست که از کش صفحه (page cache) میزبان برای خواندن و نوشتن داده‌ها استفاده خواهد شد، اما اعلان نوشتن تنها زمانی به مهمان ارسال می‌شود که ذخیره‌سازی داده‌ها توسط زیرسیستم ذخیره‌سازی گزارش شده باشد.
برون‌سپاری اشتراک 9p را به‌صورت یک اتصال (mount) فقط‌خواندنی برای مهمان‌ها فعال می‌کند. به‌طور پیش‌فرض، دسترسی خواندن و نوشتن (read-write) اعطا می‌شود.
حالت (mode) پیش‌فرض را برای فایل‌های تازه ایجادشده روی میزبان مشخص می‌کند. فقط با مدل‌های امنیتی "mapped-xattr" و "mapped-file" کار می‌کند.
حالت (mode) پیش‌فرض را برای دایرکتوری‌های تازه ایجادشده روی میزبان مشخص می‌کند. فقط با مدل‌های امنیتی "mapped-xattr" و "mapped-file" کار می‌کند.
محدودیت‌های کنترل نرخ پهنای باند (throttling) را بر حسب بایت بر ثانیه، برای همه انواع درخواست‌ها یا فقط برای خواندن یا نوشتن مشخص می‌کند.
جهش‌ها (bursts) را بر حسب بایت بر ثانیه، برای همه انواع درخواست‌ها یا فقط برای خواندن یا نوشتن مشخص می‌کند. جهش‌ها به I/O سیستم مهمان اجازه می‌دهند تا به‌طور موقت از حد مجاز فراتر رود.
محدودیت‌های نرخ درخواست را بر حسب درخواست بر ثانیه، برای همه انواع درخواست‌ها یا فقط برای خواندن یا نوشتن مشخص می‌کند.
جهش‌ها (bursts) را بر حسب درخواست بر ثانیه، برای همه انواع درخواست‌ها یا فقط برای خواندن یا نوشتن مشخص می‌کند. جهش‌ها به I/O سیستم مهمان اجازه می‌دهند تا به‌طور موقت از حد مجاز فراتر رود.
باعث می‌شود به ازای هر is بایت از یک درخواست، برای اهداف محدودسازی نرخ iops یک درخواست جدید محاسبه شود.
حداکثر تعداد FIDهای هم‌روند xattr مجاز برای این برون‌سپاری را مشخص می‌کند. مقدار پیش‌فرض 1024 است. تنظیم روی 0 به معنای مجاز بودن تعداد نامحدود FIDهای xattr خواهد بود. این محدودیت با تعیین سقف برای تعداد FIDهای هم‌زمان xattr، از حملات مصرف کامل حافظه میزبان (memory exhaustion) جلوگیری می‌کند.

گزینه -fsdev به همراه راه‌انداز دستگاه (driver) با نام "virtio-9p-..." استفاده می‌شود.

گزینه‌های راه‌انداز virtio-9p-... عبارتند از:
گونه مورد استفاده را مشخص می‌کند. مقادیر پشتیبانی‌شده بسته به نوع ماشین، "pci"، "ccw" یا "device" هستند.
مقدار id مشخص‌شده به همراه گزینه -fsdev را تعیین می‌کند.
نام تگ مورد استفاده توسط مهمان برای متصل کردن (mount) این نقطه برون‌سپاری را مشخص می‌کند.
-virtfs synth,mount_tag=mount_tag[,max_xattr=max] دستگاه سیستم‌فایل مجازی جدیدی را تعریف کرده و با استفاده از virtio-9p-device (معروف به 9pfs) در دسترس سیستم‌عامل مهمان قرار می‌دهد؛ این کار بدین معناست که یک دایرکتوری مشخص روی میزبان با استفاده از پروتکل شبکه‌ای 9P برای ارتباط میان میزبان و مهمان‌ها، به‌صورت یک سیستم‌فایل عبوری (pass-through) مستقیماً برای مهمان قابل دسترسی می‌شود و حتی در صورت تمایل، می‌تواند به‌طور هم‌زمان میان چندین مهمان به اشتراک گذاشته شود.

توجه داشته باشید که -virtfs در واقع تنها یک میان‌بُر کاربردی برای فرم تعمیم‌یافتهٔ آن یعنی -fsdev -device virtio-9p-pci است.

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

دسترسی‌ها به سیستم‌فایل توسط QEMU انجام می‌شود.
سیستم‌فایل ساختگی (synthetic)، که تنها توسط QTests استفاده می‌شود.
شناسهٔ دستگاه سیستم‌فایل را مشخص می‌کند.
مسیر اشتراک‌گذاری (export) را برای دستگاه سیستم‌فایل مشخص می‌کند. فایل‌های زیر این مسیر در دسترس کلاینت 9p روی سیستم مهمان خواهند بود.
مدل امنیتی مورد استفاده برای این مسیر اشتراک‌گذاری را مشخص می‌کند. مدل‌های امنیتی پشتیبانی‌شده عبارتند از "passthrough"،‏ "mapped-xattr"،‏ "mapped-file" و "none". در مدل امنیتی "passthrough"، فایل‌ها با همان اطلاعات هویتی و اعتباری (credentials) که در مهمان ایجاد شده‌اند ذخیره می‌شوند. این کار مستلزم اجرای QEMU به‌عنوان کاربر ریشه (root) است. در مدل امنیتی "mapped-xattr"، برخی از ویژگی‌های فایل مانند uid، gid، بیت‌های حالت (mode bits) و مقصد پیوند به‌عنوان ویژگی‌های فایل ذخیره می‌شوند. در مورد "mapped-file" این ویژگی‌ها در دایرکتوری پنهان .virtfs_metadata ذخیره می‌گردند. دایرکتوری‌های به اشتراک گذاشته‌شده با این مدل امنیتی نمی‌توانند با سایر ابزارهای یونیکس تعامل داشته باشند. مدل امنیتی "none" مشابه passthrough است، با این تفاوت که در صورت عدم موفقیت در تنظیم ویژگی‌های فایل مانند مالکیت، سرور خطایی گزارش نمی‌کند. مشخص کردن مدل امنیتی تنها برای fsdriver محلی (local) اجباری است.
این یک آرگومان اختیاری است. تنها مقدار پشتیبانی‌شده "immediate" است. بدین معنی که از حافظهٔ موقت صفحه (page cache) میزبان برای خواندن و نوشتن داده‌ها استفاده می‌شود، اما اعلان نوشتن تنها زمانی به مهمان ارسال خواهد شد که زیرسیستم ذخیره‌سازی گزارش دهد داده‌ها نوشته شده‌اند.
اشتراک‌گذاری 9p را به‌صورت نقطهٔ اتصال فقط‌خواندنی (readonly mount) برای مهمان‌ها فعال می‌کند. به‌طور پیش‌فرض، دسترسی خواندن و نوشتن اعطا می‌شود.
حالت دسترسی پیش‌فرض (mode) را برای فایل‌های تازه ایجادشده روی میزبان مشخص می‌کند. تنها با مدل‌های امنیتی "mapped-xattr" و "mapped-file" کار می‌کند.
حالت دسترسی پیش‌فرض (mode) را برای دایرکتوری‌های تازه ایجادشده روی میزبان مشخص می‌کند. تنها با مدل‌های امنیتی "mapped-xattr" و "mapped-file" کار می‌کند.
نام برچسبی (tag) را مشخص می‌کند که مهمان برای سوار کردن (mount) این نقطه اشتراک استفاده خواهد کرد.
حداکثر تعداد FIDهای هم‌زمان xattr مجاز برای این اشتراک‌گذاری را مشخص می‌کند. مقدار پیش‌فرض 1024 است. مقدار 0 را برای مجاز ساختن تعداد نامحدودی از FIDهای xattr تنظیم کنید. این محدودیت با ایجاد سقف برای تعداد FIDهای هم‌زمان xattr، از حملات تخلیهٔ حافظهٔ میزبان (memory exhaustion) جلوگیری می‌کند.
نحوهٔ برخورد با چندین دستگاه را که در همان اشتراک 9p به اشتراک گذاشته شده‌اند مشخص می‌کند تا از تداخل شناسه‌های فایل (file ID collisions) در مهمان جلوگیری شود. رفتارهای پشتیبانی‌شده عبارتند از "remap" (پیش‌فرض)، "forbid" یا "warn".

remap : احتمال اینکه بیش از یک دستگاه با اشتراک 9p یکسان به اشتراک گذاشته شده باشد را در نظر می‌گیرد. بنابراین، شماره‌های inode از میزبان به گونه‌ای برای مهمان بازنگاشت می‌شوند که از تداخل شناسه‌های فایل در مهمان جلوگیری شود. بازنگاشت inodeها در چنین مواردی لازم است زیرا شناسه‌های اصلی دستگاه از میزبان هرگز به مهمان ارسال و آشکار نمی‌شوند. در عوض، تمام فایل‌های به اشتراک گذاشته شده با virtfs همیشه شناسهٔ دستگاه یکسانی در مهمان دارند. بنابراین، دو فایل با شماره‌های inode یکسان اما از دستگاه‌های در واقع متفاوت روی میزبان، در غیر این صورت باعث تداخل شناسه‌های فایل و در نتیجه رفتارهای نادرست بالقوه شدید در مهمان می‌شوند.

warn : ساختار virtfs 9p انتظار دارد تنها یک دستگاه با همان اشتراک به اشتراک گذاشته شود. با این حال اگر بیش از یک دستگاه از طریق همان اشتراک 9p به اشتراک گذاشته شده و قابل دسترس باشد، تنها یک پیام هشدار (یک‌بار) توسط qemu در سمت میزبان ثبت می‌شود. در این حالت هیچ اقدام دیگری برای جلوگیری از تداخل شناسه‌های فایل در مهمان انجام نمی‌شود. بنابراین این مسئله می‌تواند منجر به رفتارهای نادرست شدیدی مانند دسترسی به فایل‌های اشتباه و خرابی داده‌ها در درخت به اشتراک گذاشته شده شود.

forbid : همانند "warn" فرض می‌کند که فقط یک دستگاه در همان اشتراک 9p به اشتراک گذاشته شده است، با این حال نه تنها یک پیام هشدار ثبت می‌کند، بلکه دسترسی به دستگاه‌های اضافی را در مهمان نیز رد می‌کند. البته توجه داشته باشید که "forbid" در حال حاضر تمام عملیات‌های ممکن دسترسی به فایل را مسدود نمی‌کند (به‌عنوان مثال، ()readdir همچنان ورودی‌هایی از دستگاه‌های دیگر را بازمی‌گرداند).

پیکربندی پارامترهای نشست iSCSI.
فعال‌سازی شبیه‌سازی USB در انواع ماشین‌هایی که کنترل‌کنندهٔ میزبان USB داخلی (on-board) دارند (اگر به‌طور پیش‌فرض فعال نباشد). توجه داشته باشید که کنترل‌کننده‌های میزبان USB داخلی ممکن است از USB 3.0 پشتیبانی نکنند. در این صورت، در ماشین‌های دارای PCI می‌توان به‌جای آن از -device qemu-xhci استفاده کرد.
افزودن دستگاه USB با نام devname، و در صورت امکان و لزوم فعال‌سازی یک کنترل‌کنندهٔ USB داخلی (دقیقاً مانند روشی که از طریق -machine usb=on انجام می‌شود). توجه داشته باشید که این گزینه اصولاً تنها جهت راحتی کاربر در نظر گرفته شده است. کنترل دقیق‌تر را می‌توان با انتخاب یک کنترل‌کنندهٔ میزبان USB (در صورت نیاز) و دستگاه USB مورد نظر از طریق گزینهٔ -device به‌دست آورد. برای مثال، به‌جای استفاده از -usbdevice mouse می‌توان از -device qemu-xhci -device usb-mouse برای اتصال ماوس USB به یک کنترل‌کنندهٔ USB 3.0 استفاده کرد (حداقل در ماشین‌هایی که از PCI پشتیبانی می‌کنند و هنوز کنترل‌کنندهٔ USB به‌طور پیش‌فرض در آن‌ها فعال نشده است). برای جزئیات بیشتر، فصل مربوط به اتصال دستگاه‌های USB را در <#connecting-usb-devices> در راهنمای کاربران شبیه‌سازی سیستم (System Emulation Users Guide) ببینید. دستگاه‌های ممکن برای devname عبارتند از:
دستگاه بریل (Braille). این گزینه از BrlAPI برای نمایش خروجی بریل روی یک دستگاه واقعی یا مجازی استفاده می‌کند (یعنی به‌طور خودکار در کنار دستگاه USB با نام usb-braille، یک chardev متناظر با نام braille نیز می‌سازد).
صفحه‌کلید استاندارد USB. در صورت فعال بودن، صفحه‌کلید PS/2 را (در صورت وجود) جایگزین خواهد کرد.
ماوس مجازی. در صورت فعال شدن، شبیه‌سازی ماوس PS/2 را جایگزین خواهد کرد.
دستگاه اشاره‌گر که از مختصات مطلق استفاده می‌کند (مانند صفحه‌نمایش لمسی). این بدان معناست که QEMU می‌تواند موقعیت ماوس را بدون نیاز به تسخیر (grab) اشاره‌گر گزارش دهد. همچنین در صورت فعال شدن، شبیه‌سازی ماوس PS/2 را جایگزین می‌کند.
تبلت USB واکام (Wacom PenPartner).

انتخاب نوع نمایشگر جهت استفاده. این کار ممکن است بر انتخاب پس‌دانهٔ (backend) صوتی پیش‌فرض نیز تأثیر بگذارد.

از -display help برای فهرست کردن انواع نمایشگر موجود استفاده کنید. مقادیر معتبر برای type عبارتند از:

اجرای QEMU به‌عنوان سرور Spice و راه‌اندازی برنامهٔ کلاینت پیش‌فرض Spice. سرور Spice کنسول‌های سریال و مانیتورهای QEMU را تغییر مسیر (redirect) می‌دهد. (از نسخهٔ 4.0)
برون‌ریزی نمایشگر روی رابط‌های D-Bus. (از نسخهٔ 7.0)

اگر هیچ پس‌دانهٔ صوتی مشخص نشده باشد و پس‌دانهٔ نمایشگر dbus تعیین شده باشد، پس‌دانهٔ صوتی dbus به‌طور پیش‌فرض استفاده می‌شود.

اتصال با نام "org.qemu" ثبت می‌شود (و در صورتی که این نام قبلاً در تصاحب دیگری باشد، در صف قرار می‌گیرد).

addr=<dbusaddr> : آدرس گذرگاه D-Bus برای اتصال.

p2p=yes|no : استفاده از اتصال همتا به همتا (peer-to-peer)، پذیرفته‌شده از طریق add_client در QMP.

gl=on|off|core|es : استفاده از OpenGL برای رندر (رابط D-Bus بافر فریم‌ها را با توصیف‌کننده‌های فایل DMABUF به اشتراک می‌گذارد).

نمایش خروجی ویدیو از طریق SDL (معمولاً در یک پنجرهٔ گرافیکی جداگانه؛ سایر حالت‌ها را در مستندات SDL ببینید). پارامترهای معتبر عبارتند از:

grab-mod=<mods> : برای انتخاب کلیدهای تبدیلگر (modifier) به‌منظور تغییر وضعیت تسخیر ماوس در ترکیب با کلید "g" استفاده می‌شود. <mods> می‌تواند lshift-lctrl-lalt یا rctrl باشد.

gl=on|off|core|es : استفاده از OpenGL برای نمایش

show-cursor=on|off : اجبار به نمایش مکان‌نمای ماوس

window-close=on|off : امکان خروج از qemu با دکمهٔ بستن پنجره

نمایش خروجی ویدیو در یک پنجرهٔ GTK. این رابط منوهای کشویی و سایر عناصر رابط کاربری را برای پیکربندی و کنترل ماشین مجازی در زمان اجرا فراهم می‌کند. پارامترهای معتبر عبارتند از:

full-screen=on|off : شروع در حالت تمام‌صفحه

gl=on|off : استفاده از OpenGL برای نمایش

grab-on-hover=on|off : تسخیر ورودی صفحه‌کلید هنگام قرار گرفتن ماوس روی پنجره

رابط‌های گرافیکی مختلف (مانند VGA و دستگاه‌های نویسه‌ای کنسول مجازی) به‌طور پیش‌فرض.

show-cursor=on|off : اجبار به نمایش مکان‌نمای ماوس

window-close=on|off : امکان خروج از qemu با دکمهٔ بستن پنجره

show-menubar=on|off : نمایش نوار منوی پنجرهٔ اصلی، پیش‌فرض "on" است

نمایش خروجی ویدیو از طریق curses. برای مدل‌های دستگاه گرافیکی که از حالت متنی پشتیبانی می‌کنند، QEMU می‌تواند این خروجی را با استفاده از رابط curses/ncurses نمایش دهد. هنگامی که دستگاه گرافیکی در حالت گرافیکی است یا اگر دستگاه از حالت متنی پشتیبانی نکند، چیزی نمایش داده نمی‌شود. معمولاً فقط مدل‌های دستگاه VGA از حالت متنی پشتیبانی می‌کنند. مجموعه نویسه‌های (charset) فونت استفاده‌شده توسط مهمان را می‌توان با گزینهٔ charset مشخص کرد، مثلاً charset=CP850 برای رمزگذاری IBM CP850. مقدار پیش‌فرض CP437 است.
نمایش خروجی ویدیو در یک پنجرهٔ Cocoa. فقط مخصوص Mac. این رابط منوهای کشویی و سایر عناصر رابط کاربری را برای پیکربندی و کنترل ماشین مجازی در زمان اجرا فراهم می‌کند. پارامترهای معتبر عبارتند از:
این کار نیازمند مجوزهای دسترسی‌پذیری (accessibility) است، زیرا رویدادهای کلید را به‌طور سراسری تسخیر می‌کند. (پیش‌فرض: off) به https://support.apple.com/en-in/guide/mac-help/mh32356/mac مراجعه کنید.
با موقعیتشان روی صفحه‌کلیدهای غیر Mac مطابقت پیدا کند و بتوانید از Meta/Super و Alt در جایی که انتظار دارید استفاده کنید. (پیش‌فرض: off)

show-cursor=on|off : اجبار به نمایش مکان‌نمای ماوس

left-command-key=on|off : غیرفعال‌سازی هدایت کلید فرمان (Command) چپ به سیستم میزبان

full-screen=on|off : شروع در حالت تمام‌صفحه

برون‌سپاری تمام عملیات OpenGL به یک دستگاه DRI محلی. برای هرگونه نمایش گرافیکی، این نمایشگر باید با نمایشگرهای VNC یا SPICE جفت شود.
راه‌اندازی سرور VNC روی نمایشگر <display>
عدم نمایش خروجی ویدیو. سیستم مهمان همچنان یک کارت گرافیک شبیه‌سازی‌شده را خواهد دید، اما خروجی آن به کاربر QEMU نمایش داده نخواهد شد. این گزینه با گزینهٔ -nographic تفاوت دارد زیرا فقط روی خروجی ویدیو تأثیر می‌گذارد؛ -nographic مقصد داده‌های درگاه‌های سریال و موازی را نیز تغییر می‌دهد. -nographic به طور معمول، اگر QEMU با پشتیبانی از پنجره گرافیکی کامپایل شده باشد، خروجی‌هایی مانند گرافیک مهمان، کنسول مهمان، و مانیتور QEMU را در یک پنجره نمایش می‌دهد. با این گزینه، می‌توانید خروجی گرافیکی را به طور کامل غیرفعال کنید تا QEMU یک برنامه خط فرمانی ساده باشد. درگاه سریال شبیه‌سازی‌شده به کنسول هدایت شده و با مانیتور تسهیم (mux) می‌شود (مگر اینکه به طور صریح به جای دیگری هدایت شده باشد). بنابراین، همچنان می‌توانید از QEMU برای اشکال‌زدایی هسته لینوکس به همراه یک کنسول سریال استفاده کنید. برای دریافت راهنما در مورد جابه‌جایی میان کنسول و مانیتور از C-a h استفاده کنید.
پروتکل میزکار از راه دور spice را فعال می‌کند. گزینه‌های معتبر عبارتند از:
تنظیم درگاه TCP که spice برای کانال‌های متن ساده (plaintext) روی آن گوش می‌دهد.
تنظیم آدرس IP که spice روی آن گوش می‌دهد. پیش‌فرض هر آدرسی است.
اجبار به استفاده از نسخه مشخص‌شده IP.
شناسه شیء secret حاوی گذرواژه‌ای که برای احراز هویت به آن نیاز دارید را تنظیم می‌کند.
کلاینت را ملزم می‌کند تا برای احراز هویت با spice از SASL استفاده کند. انتخاب دقیق روش احراز هویتِ مورد استفاده، از طریق فایل پیکربندی SASL سیستم یا کاربر برای سرویس 'qemu' کنترل می‌شود. این فایل معمولاً در /etc/sasl2/qemu.conf یافت می‌شود. در صورت اجرای QEMU به عنوان یک کاربر بدون امتیاز، می‌توان از متغیر محیطی SASL_CONF_PATH استفاده کرد تا مکان‌های جایگزین را برای پیکربندی سرویس جستجو کند. اگرچه برخی از روش‌های احراز هویت SASL می‌توانند رمزنگاری داده‌ها را نیز فراهم کنند (مانند GSSAPI)، توصیه می‌شود که SASL همواره با تنظیمات 'tls' و 'x509' ترکیب شود تا استفاده از SSL و گواهی‌های کارساز فعال گردد. این کار رمزنگاری داده‌ها را تضمین کرده و از به خطر افتادن اطلاعات احراز هویت جلوگیری می‌کند.
به کلاینت اجازه می‌دهد بدون احراز هویت متصل شود.
غیرفعال کردن رونوشت و جای‌گذاری (copy paste) بین کلاینت و مهمان.
غیرفعال کردن انتقال فایل مبتنی بر spice-vdagent بین کلاینت و مهمان.
تنظیم درگاه TCP که spice برای کانال‌های رمزگذاری‌شده روی آن گوش می‌دهد.
تنظیم دایرکتوری فایل‌های x509. نام فایل‌های یکسانی مانند -vnc $display,x509=$dir را انتظار دارد.
نام فایل‌های x509 را می‌توان به صورت جداگانه نیز پیکربندی کرد.
مشخص کردن این‌که از کدام رمزها (ciphers) استفاده شود.
اجبار کانال مشخص‌شده به استفاده با یا بدون رمزنگاری TLS. این گزینه‌ها را می‌توان چندین بار برای پیکربندی کانال‌های متعدد مشخص کرد. از نام ویژه "default" می‌توان برای تنظیم حالت پیش‌فرض استفاده کرد. برای کانال‌هایی که صراحتاً به یک حالت وادار نشده‌اند، کلاینت spice مجاز است بسته به تمایل خود tls یا plaintext را برگزیند.
پیکربندی فشرده‌سازی تصویر (بدون اتلاف). پیش‌فرض auto_glz است.
پیکربندی فشرده‌سازی تصویر wan (با اتلاف برای پیوندهای کند). پیش‌فرض auto است.
پیکربندی تشخیص جریان ویدیو. پیش‌فرض off است.
فعال/غیرفعال کردن ارسال رویدادهای ماوس از طریق vdagent. پیش‌فرض on است.
فعال/غیرفعال کردن فشرده‌سازی جریان صوتی (با استفاده از celt 0.5.1). پیش‌فرض on است.
فعال/غیرفعال کردن مهاجرت یکپارچه (seamless migration) در spice. پیش‌فرض off است.
تعیین کدک ترجیحی که کارساز Spice باید با رمزگذار Gstreamer استفاده کند. این گزینه تنها زمانی کاربرد دارد که gl=on مشخص شده باشد. اگر هیچ کدکی تعیین نشود، کدک gstreamer:h264 به عنوان پیش‌فرض استفاده خواهد شد. و برای حالتی که gl=off باشد، کدک پیش‌فرضِ مورد استفاده توسط کارساز Spice تعیین می‌شود.
تعیین حداکثر نرخ نوسازی (یا FPS) که درخواست‌های رمزگذاری باید با آن به کارساز Spice ارسال شوند. پیش‌فرض 30 است.
فعال/غیرفعال کردن بافتار OpenGL. پیش‌فرض off است.
گره رندر DRM برای رندرینگ OpenGL. اگر مشخص نشود، اولین مورد دردسترس انتخاب خواهد شد. (از نسخه 2.9)
انتخاب نوع کارت VGA برای شبیه‌سازی. مقادیر معتبر برای type عبارتند از:
کارت گرافیک Cirrus Logic GD5446. تمام نسخه‌های Windows با شروع از Windows 95 باید این کارت گرافیک را شناخته و از آن استفاده کنند. برای عملکرد بهینه، از عمق رنگ ۱۶ بیتی در سیستم‌عامل مهمان و میزبان استفاده کنید. (این کارت پیش از QEMU 2.2 پیش‌فرض بود)
کارت VGA استاندارد با افزونه‌های Bochs VBE. اگر سیستم‌عامل مهمان شما از افزونه‌های VESA 2.0 VBE پشتیبانی می‌کند (مانند Windows XP) و می‌خواهید از حالت‌های تفکیک‌پذیری بالا (>= 1280x1024x16) استفاده کنید، باید از این گزینه استفاده کنید. (این کارت از QEMU 2.2 پیش‌فرض است)
آداپتور سازگار با VMWare SVGA-II. اگر کارساز XFree86/XOrg به اندازه کافی جدید یا مهمان Windows دارای درایور این کارت دارید، از آن استفاده کنید.
کارت گرافیک شبه‌مجازی (paravirtual) QXL. با VGA سازگار است (شامل پشتیبانی از VESA 2.0 VBE). با این حال هنگام نصب بودن درایورهای مهمان qxl بهترین عملکرد را دارد. انتخاب توصیه‌شده هنگام استفاده از پروتکل spice.
(فقط sun4m) فریم‌بافر Sun TCX. این فریم‌بافر پیش‌فرض برای ماشین‌های sun4m است و هر دو عمق رنگ ۸ بیتی و ۲۴ بیتی را در تفکیک‌پذیری ثابت 1024x768 ارائه می‌دهد.
(فقط sun4m) فریم‌بافر Sun cgthree. این یک فریم‌بافر ساده ۸ بیتی برای ماشین‌های sun4m است که در هر دو تفکیک‌پذیری 1024x768 (در OpenBIOS) و 1152x900 (در OBP) در دسترس بوده و برای کاربرانی در نظر گرفته شده که مایل به اجرای نسخه‌های قدیمی‌تر Solaris هستند.
کارت گرافیک Virtio VGA.
غیرفعال کردن کارت VGA.
شروع در حالت تمام‌صفحه.
تنظیم تفکیک‌پذیری گرافیکی اولیه و عمق رنگ (فقط PPC و SPARC).

برای PPC مقدار پیش‌فرض 800x600x32 است.

برای SPARC با دستگاه گرافیکی TCX، مقدار پیش‌فرض 1024x768x8 به همراه گزینه 1024x768x24 است. برای cgthree، مقدار پیش‌فرض 1024x768x8 به همراه گزینه 1152x900x8 برای کاربرانی است که مایل به استفاده از OBP هستند.

به طور معمول، اگر QEMU با پشتیبانی از پنجره گرافیکی کامپایل شده باشد، خروجی‌هایی مانند گرافیک مهمان، کنسول مهمان، و مانیتور QEMU را در یک پنجره نمایش می‌دهد. با این گزینه، می‌توانید کاری کنید که QEMU روی نمایشگر VNC گوش فرا دهد و تصویر نمایشگر VGA را روی نشست VNC هدایت کند. هنگام استفاده از این گزینه، فعال کردن دستگاه تبلت usb بسیار مفید است (گزینه -device usb-tablet). هنگام استفاده از نمایشگر VNC، در صورتی که از en-us استفاده نمی‌کنید، باید از پارامتر -k برای تنظیم چیدمان صفحه‌کلید استفاده کنید. نحو معتبر برای display عبارت است از:
to=L با این گزینه، چنانچه نمایشگرِ در ابتدا تعیین‌شدهٔ "-vnc display"; در دسترس نباشد، برای نمونه زمانی که پورت 5900+display توسط برنامهٔ دیگری اشغال شده باشد، QEMU نمایشگرهای VNC بعدی در دسترس را تا شمارهٔ L امتحان خواهد کرد. مقدار پیش‌فرض to=0 است.
اتصالات TCP تنها از مبدأ host روی نمایشگر d مجاز خواهند بود. طبق قرارداد، پورت TCP برابر با 5900+d است. به‌صورت اختیاری، host می‌تواند حذف شود که در این حالت کارساز اتصالات را از هر میزبانی خواهد پذیرفت.
اتصالات روی سوکت‌های دامنهٔ یونیکس (UNIX domain sockets) مجاز خواهند بود که در آن path مسیر سوکت یونیکس برای گوش دادن به اتصالات ورودی است.
پروتکل VNC مقداردهی اولیه می‌شود اما راه‌اندازی نمی‌گردد. دستور change در مانیتور می‌تواند بعداً برای راه‌اندازی کارساز VNC استفاده شود.

به دنبال مقدار نمایشگر، می‌تواند یک یا چند پرچمِ گزینه که با ویرگول جدا شده‌اند قرار گیرد. گزینه‌های معتبر عبارتند از:

اتصال به یک کلاینت گوش‌به‌زنگ VNC از طریق یک اتصال «معکوس» ("reverse"). کلاینت توسط display مشخص می‌شود. برای اتصالات شبکهٔ معکوس (host:d,``reverse``)، آرگومان d شمارهٔ یک پورت TCP است، نه شمارهٔ نمایشگر.
یک پورت شنود TCP اضافی اختصاص داده شده به اتصالات وب‌سوکت VNC باز می‌کند. اگر گزینهٔ websocket به تنهایی داده شود، پورت وب‌سوکت برابر با 5700+display خواهد بود. یک پورت جایگزین را می‌توان با نحو websocket=port مشخص کرد.

اگر host مشخص شده باشد، اتصالات تنها از این میزبان مجاز خواهند بود. می‌توان نشانی شنود وب‌سوکت را به‌صورت مستقل با استفاده از نحو websocket=host:port کنترل کرد.

وب‌سوکت می‌تواند روی سوکت دامنهٔ یونیکس مجاز شود، با استفاده از نحو websocket=unix:path، که در آن path مسیر سوکت یونیکس برای گوش دادن به اتصالات است.

چنانچه هیچ اعتبارنامهٔ TLS ارائه نشود، اتصال وب‌سوکت در حالت رمزگذاری‌نشده اجرا می‌شود. در صورت ارائهٔ اعتبارنامه‌های TLS، اتصال وب‌سوکت نیازمند اتصالات رمزگذاری‌شدهٔ کلاینت خواهد بود.

الزام به استفاده از احراز هویت مبتنی بر گذرواژه برای اتصالات کلاینت.

گذرواژه باید به‌طور جداگانه با استفاده از دستور set_password در مانیتور QEMU به نشانی <#qemu-monitor> تنظیم شود. نحو تغییر گذرواژه به این صورت است: set_password <protocol> <password> که در آن <protocol> می‌تواند "vnc" یا "spice" باشد.

اگر مایلید انقضای گذرواژهٔ <protocol> را تغییر دهید، باید از دستور expire_password <protocol> <expiration-time> استفاده کنید که در آن زمان انقضا می‌تواند یکی از گزینه‌های زیر باشد: now، never، +seconds یا زمان یونیکس انقضا؛ برای نمونه 60+ برای انقضای گذرواژه در ۶۰ ثانیه بعد، یا 1335196800 برای منقضی شدن گذرواژه در تاریخ "Mon Apr 23 12:00:00 EDT 2012" (زمان یونیکس متناظر با این تاریخ و ساعت).

همچنین می‌توانید از کلیدواژه‌های "now" یا "never" برای زمان انقضا استفاده کنید تا گذرواژهٔ <protocol> بلافاصله یا هیچ‌وقت منقضی نشود.

الزام به استفاده از احراز هویت مبتنی بر گذرواژه برای اتصالات کلاینت، با استفاده از گذرواژهٔ ارائه‌شده توسط شیء secret که با secret-id مشخص می‌شود.
شناسهٔ (ID) مجموعه‌ای از اعتبارنامه‌های TLS را برای ایمن‌سازی کارساز VNC ارائه می‌دهد. این اعتبارنامه‌ها هم بر سوکت معمولی کارساز VNC و هم بر سوکت وب‌سوکت (در صورت فعال بودن) اعمال خواهند شد. تنظیم اعتبارنامه‌های TLS باعث می‌شود سوکت کارساز VNC سازوکار احراز هویت VeNCrypt را فعال کند. این اعتبارنامه‌ها باید پیش‌تر با استفاده از آرگومان -object tls-creds ایجاد شده باشند.
شناسهٔ شیء مجازشماری QAuthZ را ارائه می‌دهد که نام متمایز (distinguished name) گواهی x509 کلاینت در برابر آن اعتبارسنجی خواهد شد. این شیء تنها در زمان استفاده حل‌وفصل می‌شود، بنابراین می‌توان در حین فعال بودن کارساز VNC آن را درجا حذف و دوباره ایجاد کرد. در صورت عدم وجود، پیش‌فرض آن رد دسترسی خواهد بود.
الزام کلاینت به استفاده از SASL برای احراز هویت در کارساز VNC. انتخاب دقیق روش احراز هویت مورد استفاده از طریق فایل پیکربندی SASL سیستم/کاربر برای سرویس 'qemu' کنترل می‌شود. این فایل معمولاً در /etc/sasl2/qemu.conf قرار دارد. در صورت اجرای QEMU در قالب یک کاربر غیرممتاز، می‌توان از متغیر محیطی SASL_CONF_PATH برای جستجوی مکان‌های جایگزین فایل پیکربندی سرویس استفاده کرد. اگرچه برخی روش‌های احراز هویت SASL می‌توانند رمزگذاری داده را نیز فراهم کنند (مانند GSSAPI)، توصیه می‌شود همیشه SASL با تنظیمات 'tls' و 'x509' ترکیب شود تا امکان استفاده از SSL و گواهی‌های کارساز فراهم گردد. این امر رمزگذاری داده را تضمین کرده و از افشای اطلاعات احراز هویت جلوگیری می‌کند. برای جزئیات مربوط به استفاده از احراز هویت SASL، بخش امنیت VNC <#vnc-security> را در راهنمای کاربران شبیه‌سازی سیستم ببینید.
شناسهٔ شیء مجازشماری QAuthZ را ارائه می‌دهد که نام‌کاربری SASL کلاینت در برابر آن اعتبارسنجی خواهد شد. این شیء تنها در زمان استفاده حل‌وفصل می‌شود، بنابراین می‌توان آن را در زمان فعال بودن کارساز VNC درجا حذف و مجدداً ایجاد کرد. در صورت عدم وجود، پیش‌فرض آن رد دسترسی خواهد بود.
روش قدیمی برای فعال‌سازی مجازشماری کلاینت‌ها در برابر نام متمایز x509 و نام‌کاربری SASL. این روش منجر به ایجاد دو شیء authz-list با شناسه‌های vnc.username و vnc.x509dname می‌شود. قوانین مربوط به این اشیاء باید با دستورهای HMP ACL پیکربندی شوند.

این گزینه منسوخ شده است و دیگر نباید استفاده شود. گزینه‌های جدید sasl-authz و tls-authz جایگزین آن هستند.

فعال‌سازی روش‌های فشرده‌سازی با اتلاف (مانند gradient، JPEG و غیره). در صورت فعال بودن این گزینه، کلاینت VNC ممکن است بسته به تنظیمات کدگذاری خود، به‌روزرسانی‌های بافرفریم را با اتلاف دریافت کند. فعال کردن این گزینه می‌تواند پهنای باند زیادی را به بهای کاهش کیفیت ذخیره کند.
غیرفعال‌سازی کدگذاری‌های تطبیقی. کدگذاری‌های تطبیقی به‌طور پیش‌فرض فعال هستند. یک کدگذاری تطبیقی تلاش می‌کند نواحی با به‌روزرسانی مکرر در صفحه را شناسایی کرده و به‌روزرسانی‌های این نواحی را با استفاده از یک کدگذاری با اتلاف (مانند JPEG) ارسال کند. این ویژگی هنگام پخش ویدیوها برای صرفه‌جویی در پهنای باند بسیار مفید است. غیرفعال کردن کدگذاری‌های تطبیقی رفتار ایستای اولیهٔ کدگذاری‌هایی مانند Tight را بازیابی می‌کند.
تنظیم خط‌مشی هم‌رسانی نمایشگر. مقدار 'allow-exclusive' به کلاینت‌ها امکان می‌دهد تا درخواست دسترسی انحصاری کنند. طبق پیشنهاد مشخصات rfb، این سازوکار با قطع سایر اتصالات پیاده‌سازی می‌شود. اتصال هم‌زمان چند کلاینت نیازمند آن است که همهٔ کلاینت‌ها یک نشست اشتراکی درخواست کنند (سوئیچ -shared در vncviewer). این مقدار پیش‌فرض است. مقدار 'force-shared' دسترسی انحصاری کلاینت را غیرفعال می‌کند. برای نشست‌های دسکتاپ اشتراکی که نمی‌خواهید فراموش کردن تعیین -shared توسط یک کاربر باعث قطع اتصال دیگران شود، مفید است. مقدار 'ignore' پرچم shared را کاملاً نادیده می‌گیرد و به همه اجازه می‌دهد بدون قید و شرط متصل شوند. این رفتار با مشخصات rfb هم‌خوانی ندارد اما رفتار سنتی QEMU است.
تنظیم میزان تأخیر صفحه‌کلید برای رویدادهای فشردن (key down) و رها کردن (key up) کلید بر حسب میلی‌ثانیه. مقدار پیش‌فرض 10 است. صفحه‌کلیدها دستگاه‌هایی با پهنای باند کم هستند، بنابراین این کندسازی می‌تواند به دستگاه و سیستم‌عامل مهمان کمک کند تا هماهنگ باقی بمانند و در صورت دریافت دسته‌ای رویدادها، آن‌ها را از دست ندهند. دلایل محتمل برای دریافت دسته‌ای رویدادها شامل اتصالات شبکهٔ ناپایدار یا اسکریپت‌های آزمون خودکار است.
استفاده از audiodev مشخص‌شده در زمانی که کلاینت VNC درخواست انتقال صدا دارد. هنگام عدم استفاده از آرگومان -audiodev، این گزینه باید حذف شود؛ در غیر این صورت باید وجود داشته باشد و یک audiodev معتبر را مشخص کند.
به کلاینت راه دور اجازه می‌دهد تا درخواست‌های کنترل برق نظیر shutdown، reboot یا reset را ارسال کند.
هنگام نصب Windows 2000 برای جلوگیری از باگ پر شدن دیسک از این گزینه استفاده کنید. پس از نصب Windows 2000، دیگر نیازی به این گزینه نخواهید داشت (این گزینه انتقال‌های IDE را کُند می‌کند). مترادفی برای -global ide-device.win2k-install-hack=on است.
بررسی امضای راه‌اندازی (boot signature) فلاپی‌دیسک‌ها را در BIOS غیرفعال می‌کند. ممکن است برای راه‌اندازی از فلاپی‌دیسک‌های قدیمی مورد نیاز باشد. مترادفی برای -m fd-bootchk=off است.
افزودن جدول ACPI با فیلدهای سرایند و محتوای مشخص‌شده از فایل‌های تعیین‌شده. برای file=، تمام جدول ACPI از فایل‌های مشخص‌شده گرفته می‌شود، شامل همهٔ سرایندهای ACPI (که احتمالاً توسط گزینه‌های دیگر بازنویسی می‌شوند). برای data=، تنها بخش داده‌های جدول استفاده می‌شود و تمامی اطلاعات سرایند در خط فرمان مشخص می‌شوند. اگر یک جدول SLIC به QEMU ارائه شود، فیلدهای oem_id و oem_table_id مربوط به SLIC همان موارد را در RSDT و FADT (که به عنوان FACP نیز شناخته می‌شود) بازنویسی می‌کنند تا اطمینان حاصل شود که فیلدها با الزامات مشخصات Microsoft SLIC و مشخصات ACPI مطابقت دارند.
بارگذاری مدخل SMBIOS از یک فایل باینری.
تعیین فیلدهای SMBIOS type 0
تعیین فیلدهای SMBIOS type 1
تعیین فیلدهای SMBIOS type 2
تعیین فیلدهای SMBIOS type 3
تعیین فیلدهای SMBIOS type 4
تعیین فیلدهای SMBIOS type 9
تعیین فیلدهای SMBIOS type 11

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

نحو value=str داده‌های رشته‌ای را به صورت درون‌خطی فراهم می‌کند، در حالی که نحو path=filename داده‌ها را از یک فایل روی دیسک بارگذاری می‌کند. توجه داشته باشید که فایل مجاز نیست حاوی هیچ بایت NUL باشد.

هر دو گزینهٔ value و path می‌توانند چندین بار تکرار شوند و به همان ترتیبی که ظاهر می‌شوند به جدول SMBIOS اضافه خواهند شد.

توجه داشته باشید که در معماری x86، اندازهٔ کل تمام جداول SMBIOS به ۶۵۵۳۵ بایت محدود است. بنابراین داده‌های رشته‌های OEM برای ارسال مقادیر حجیم داده به سیستم‌عامل مهمان مناسب نیستند. در عوض، باید به عنوان نشانگری استفاده شوند تا به سیستم‌عامل مهمان اطلاع دهند داده‌های واقعی را در کجا بیابد، برای مثال با مشخص کردن شناسهٔ سریال یک دستگاه بلوکی.

یک مثال از ارسال سه رشته:

-smbios type=11,value=cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000/,\
                value=anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os,\
                path=/some/file/with/oemstringsdata.txt

در سیستم‌عامل مهمان این مقدار با دستور dmidecode قابل مشاهده است:

$ dmidecode -t 11
Handle 0x0E00, DMI type 11, 5 bytes
OEM Strings
     String 1: cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000
     String 2: anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os
     String 3: myapp:some extra data
تعیین فیلدهای SMBIOS type 17
تعیین فیلدهای SMBIOS type 41

این آرگومان می‌تواند چندین بار تکرار شود. کاربرد اصلی آن این است که اجازه می‌دهد رابط‌های شبکه در لینوکس به صورت enoX ایجاد شوند (که در آن X شمارهٔ نمونه است)، به جای آنکه نام آن‌ها به موقعیت رابط روی گذرگاه PCI وابسته باشد.

نمونه‌ای از کاربرد:

-netdev user,id=internet \
-device virtio-net-pci,mac=50:54:00:00:00:42,netdev=internet,id=internet-dev \
-smbios type=41,designation='Onboard LAN',instance=1,kind=ethernet,pcidev=internet-dev

در سیستم‌عامل مهمان، دستگاه باید به صورت eno1 ظاهر شود:

..parsed-literal:

$ ip -brief l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
eno1             UP             50:54:00:00:00:42 <BROADCAST,MULTICAST,UP,LOWER_UP>

در حال حاضر، دستگاه PCI باید به گذرگاه ریشه (root bus) متصل باشد.

این گزینه یک میان‌بر برای پیکربندی هم‌زمان سخت‌افزار کارت شبکه (NIC) داخلی (پیش‌فرض) مهمان و Backend شبکه میزبان در یک مرحله است. گزینه‌های Backend میزبان مشابه گزینه‌های متناظر -netdev در ادامه هستند. مدل NIC مهمان را می‌توان با model=modelname تنظیم کرد. برای فهرست کردن نوع دستگاه‌های موجود از model=help استفاده کنید. آدرس سخت‌افزاری MAC را می‌توان با mac=macaddr مشخص کرد.

دو مثال زیر دقیقاً عملکرد یکسانی دارند و نشان می‌دهند چگونه می‌توان از -nic برای کوتاه‌تر کردن طول خط فرمان استفاده کرد:

qemu-system-x86_64 -netdev user,id=n1,ipv6=off -device e1000,netdev=n1,mac=52:54:98:76:54:32
qemu-system-x86_64 -nic user,ipv6=off,model=e1000,mac=52:54:98:76:54:32
مشخص می‌کند که هیچ دستگاه شبکه‌ای نباید پیکربندی شود. از این گزینه برای باطل کردن پیکربندی پیش‌فرض (NIC پیش‌فرض با Backend شبکه میزبان "user") که در صورت عدم ارائه گزینه‌های دیگر شبکه فعال می‌شود، استفاده می‌گردد.
یک Backend شبکه passt را پیکربندی می‌کند که برای اجرا به هیچ مجوز دسترسی مدیریتی (مدیر سیستم) نیاز ندارد. گزینه‌های معتبر عبارتند از:
اختصاص یک نام نمادین برای استفاده در دستورهای monitor.
نام فایل برنامه passt برای اجرا. در صورت مشخص نشدن، دستور passt با کمک متغیر محیطی PATH اجرا خواهد شد.
به‌طور پیش‌فرض، مقدار quiet=on است تا پیام‌های اطلاعاتی از passt غیرفعال شوند. quiet=on به‌صورت --quiet به passt ارسال می‌شود.
به‌طور پیش‌فرض، مقدار vhost-user=off است و QEMU از Backend شبکه stream برای ارتباط با passt استفاده می‌کند. اگر vhost-user=on باشد، passt با --vhost-user اجرا شده و QEMU از Backend شبکه vhost-user برای ارتباط با passt استفاده می‌کند.
@mtu
اختصاص MTU از طریق DHCP/NDP
آدرس IPv4 یا IPv6
ماسک IPv4
آدرس MAC مبدأ
آدرس IPv4 یا IPv6 به‌عنوان دروازه (gateway)
رابط (interface) برای آدرس‌ها و مسیرها (routes)
مقید شدن (bind) به آدرس به‌عنوان مبدأ خروجی
مقید شدن به رابط خروجی برای IPv4
مقید شدن به رابط خروجی برای IPv6
آدرس IPv4 یا IPv6 به‌عنوان DNS
دامنه‌های جستجو
نام دامنه کاملاً واجد شرایط (FQDN) برای پیکربندی کلاینت
فعال/غیرفعال کردن فهرست DNS در DHCP/DHCPv6/NDP
فعال/غیرفعال کردن فهرست در DHCP/DHCPv6/NDP
آدرس برای ارجاع به میزبان
آدرس برای ترجمه به آدرس مهمان
هدایت پرس‌وجوهای DNS ارسال‌شده به
سرویس‌دهنده نام (nameserver) میزبان برای هدایت پرس‌وجوها به آن
فعال/غیرفعال کردن TCP
فعال/غیرفعال کردن UDP
فعال/غیرفعال کردن ICMP
فعال/غیرفعال کردن DHCP
فعال/غیرفعال کردن NDP
فعال/غیرفعال کردن DHCPv6
فعال/غیرفعال کردن اعلان‌های مسیر (route advertisements)
مقید شدن به هر آدرسی برای هدایت (forwarding)
فعال/غیرفعال کردن IPv4
فعال/غیرفعال کردن IPv6
پورت‌های TCP برای هدایت
پورت‌های UDP برای هدایت
مقدار string به‌عنوان پارامتر خط فرمان به passt ارسال خواهد شد؛ می‌توان چندین بار از پارامتر param برای ارسال چندین پارامتر به passt استفاده کرد.

برای نمونه، جهت ارسال --trace --log=trace.log:

qemu-system-x86_64 -nic passt,param=--trace,param=--log=trace.log
یک Backend شبکه میزبان در حالت کاربر (user mode) را پیکربندی می‌کند که برای اجرا به هیچ مجوز دسترسی مدیریتی (مدیر سیستم) نیاز ندارد. گزینه‌های معتبر عبارتند از:
اختصاص نام نمادین برای استفاده در دستورهای monitor.
مشخص می‌کند که کدام‌یک از پروتکل‌های IPv4 یا IPv6 باید فعال باشند. در صورت مشخص نشدن هیچ‌کدام، هر دو پروتکل فعال خواهند بود.
آدرس شبکه IP را که مهمان خواهد دید تنظیم می‌کند. به‌صورت اختیاری netmask را به فرم a.b.c.d یا به‌صورت تعداد بیت‌های معتبر بالایی مشخص کنید. پیش‌فرض 10.0.2.0/24 است.
آدرس قابل‌مشاهده میزبان برای مهمان را مشخص می‌کند. پیش‌فرض دومین IP در شبکه مهمان است، یعنی x.x.x.2.
آدرس شبکه IPv6 را که مهمان خواهد دید تنظیم می‌کند (پیش‌فرض fec0::/64 است). پیشوند شبکه در قالب نشانه‌گذاری معمول هگزادسیمال آدرس IPv6 ارائه می‌شود. اندازه پیشوند اختیاری است و به‌صورت تعداد بیت‌های معتبر بالایی مشخص می‌شود (پیش‌فرض ۶۴ است)..TP ipv6-host=addr آدرس IPv6 میزبان که از دید مهمان قابل مشاهده است را مشخص می‌کند. پیش‌فرض، دومین آدرس IPv6 در شبکهٔ مهمان است، یعنی xxxx::2.
اگر این گزینه فعال باشد، مهمان ایزوله خواهد شد؛ بدین معنا که قادر به برقراری ارتباط با میزبان نخواهد بود و هیچ بستهٔ IP مهمان از طریق میزبان به خارج هدایت نخواهد شد. این گزینه بر هیچ‌یک از قواعد هدایت (forwarding) که صراحتاً تنظیم شده‌اند، اثر نمی‌گذارد.
نام میزبان (hostname) کلاینت را که توسط کارساز DHCP داخلی گزارش می‌شود مشخص می‌کند.
نخستین آدرس از ۱۶ آدرس IP را که کارساز DHCP داخلی می‌تواند اختصاص دهد مشخص می‌کند. پیش‌فرض، پانزدهمین تا سی‌ویکمین IP در شبکهٔ مهمان است، یعنی x.x.x.15 تا x.x.x.31.
آدرس کارساز نام مجازی (virtual nameserver) که از دید مهمان قابل مشاهده است را مشخص می‌کند. این آدرس باید با آدرس میزبان متفاوت باشد. پیش‌فرض، سومین IP در شبکهٔ مهمان است، یعنی x.x.x.3.
آدرس کارساز نام مجازی IPv6 را که از دید مهمان قابل مشاهده است مشخص می‌کند. این آدرس باید با آدرس میزبان متفاوت باشد. پیش‌فرض، سومین IP در شبکهٔ مهمان است، یعنی xxxx::3.
یک مدخل برای فهرست جستجوی دامنه که توسط کارساز DHCP داخلی ارسال می‌شود فراهم می‌کند. با مشخص کردن چندبارهٔ این گزینه، بیش از یک پسوند دامنه می‌تواند منتقل شود. در صورت پشتیبانی، این ویژگی باعث می‌شود مهمان در صورتی که یک نام دامنه تحلیل (resolve) نشود، به طور خودکار پسوند(های) داده‌شده را به انتهای آن بیافزاید.

مثال:

qemu-system-x86_64 -nic user,dnssearch=mgmt.example.org,dnssearch=example.org
نام دامنهٔ کلاینت را که توسط کارساز DHCP داخلی گزارش می‌شود مشخص می‌کند.
هنگام استفاده از پشتهٔ شبکهٔ حالت کاربر، یک کارساز TFTP داخلی را فعال می‌کند. فایل‌های موجود در dir به عنوان ریشهٔ یک کارساز TFTP در دسترس قرار می‌گیرند. کلاینت TFTP در مهمان باید در حالت باینری پیکربندی شود (از دستور bin کلاینت TFTP یونیکس استفاده کنید). کارساز TFTP داخلی فقط‌خواندنی است؛ هیچ دستوری را برای نوشتن فایل‌ها پیاده‌سازی نمی‌کند. QEMU روی این دایرکتوری نخواهد نوشت.
در پاسخ BOOTP، عبارت name را به عنوان "TFTP server name" (گزینهٔ ۶۶ در RFC2132) همه‌پخشی (broadcast) می‌کند. این گزینه می‌تواند برای راهنمایی مهمان جهت بارگذاری فایل‌های بوت یا پیکربندی‌ها از کارسازی غیر از آدرس میزبان استفاده شود.
هنگام استفاده از پشتهٔ شبکهٔ حالت کاربر، مقدار file را به عنوان نام فایل BOOTP همه‌پخشی می‌کند. در ترکیب با tftp، این می‌تواند برای بوت تحت شبکهٔ مهمان از یک دایرکتوری محلی استفاده شود.

مثال (با استفاده از pxelinux):

qemu-system-x86_64 -hda linux.img -boot n -device e1000,netdev=n1 \
    -netdev user,id=n1,tftp=/path/to/tftp/files,bootfile=/pxelinux.0
هنگام استفاده از پشتهٔ شبکهٔ حالت کاربر، یک کارساز SMB داخلی را فعال می‌کند تا سیستم‌عامل‌های Windows بتوانند به صورت شفاف به فایل‌های میزبان در dir دسترسی داشته باشند. آدرس IP کارساز SMB می‌تواند روی addr تنظیم شود. به طور پیش‌فرض چهارمین IP در شبکهٔ مهمان استفاده می‌شود، یعنی x.x.x.4.

در سیستم‌عامل Windows مهمان، سطر:

10.0.2.4 smbserver #PRE #NOFNR

باید در فایل LMHOSTS اضافه شود. در این سطر، #PRE درخواست پیش‌حافظه‌سازی (pre-caching) نگاشت را ثبت می‌کند که ارتباط اولیه را در برخی نسخه‌های Windows سرعت می‌بخشد. #NOFNR برای Windows NT 3.1 ضروری است تا مانع ارسال بسته‌های پرسمان NBNS شود که QEMU آن‌ها را مدیریت نمی‌کند، و در سایر نسخه‌ها بدون ایجاد مشکل نادیده گرفته می‌شود.

فایل LMHOSTS بسته به نسخهٔ Windows ممکن است در مکان‌های متفاوتی قرار داشته باشد:

  • C:\WINDOWS\LMHOSTS برای Windows 3x/9x/Me
  • C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS برای Windows NT/2000
  • C:\WINDOWS\SYSTEM32\DRIVERS\ETC\LMHOSTS برای Windows XP و جدیدتر

سپس dir در \\smbserver\qemu قابل دسترسی خواهد بود.

توجه داشته باشید که یک کارساز SAMBA باید روی سیستم‌عامل میزبان نصب شده باشد.

اتصالات ورودی TCP، UDP یا UNIX به درگاه میزبان hostport را به آدرس IP مهمان guestaddr روی درگاه مهمان guestport هدایت مجدد (redirect) می‌کند. اگر guestaddr مشخص نشده باشد، مقدار آن x.x.x.15 خواهد بود (اولین آدرس پیش‌فرضی که توسط کارساز داخلی DHCP تخصیص داده می‌شود). با تعیین hostaddr، این قاعده می‌تواند به یک رابط مشخص میزبان مقید (bind) شود. اگر نوع اتصال تنظیم نشده باشد، TCP استفاده می‌شود. این گزینه می‌تواند چندین بار تکرار شود.

به عنوان مثال، برای هدایت اتصال X11 میزبان از نمایشگر ۱ به نمایشگر ۰ مهمان، از دستور زیر استفاده کنید:

# on the host
qemu-system-x86_64 -nic user,hostfwd=tcp:127.0.0.1:6001-:6000
# this host xterm should open in the guest X11 server
xterm -display :1

برای هدایت اتصالات telnet از درگاه ۵۵۵۵ میزبان به درگاه telnet در مهمان، از دستور زیر استفاده کنید:

# on the host
qemu-system-x86_64 -nic user,hostfwd=tcp::5555-:23
telnet localhost 5555

سپس هنگامی که روی میزبان از telnet localhost 5555 استفاده کنید، به کارساز telnet مهمان متصل می‌شوید.

برای هدایت سوکت unix میزبان ‎/tmp/vm‎ به سوکت tcp مهمان روی درگاه ۲۳، به شکل زیر عمل کنید:

# on the host
qemu-system-x86_64 -nic user,hostfwd=unix:/tmp/vm-:23
اتصالات TCP مهمان به آدرس IP کارساز server روی درگاه port را به دستگاه نویسه‌ای dev یا به برنامه‌ای که توسط cmd:command اجرا شده و برای هر اتصال ایجاد (spawn) می‌شود، ارسال (forward) می‌کند. این گزینه می‌تواند چندین بار تکرار شود.

می‌توانید مستقیماً از یک chardev استفاده کنید و آن را در تمام طول دورهٔ فعالیت QEMU به کار ببرید، مانند مثال زیر:

# باز کردن 10.10.1.1:4321 هنگام راه‌اندازی، اتصال 10.0.2.100:1234 به آن هر زمان که
# مهمان به آن دسترسی پیدا کند
qemu-system-x86_64 -nic user,guestfwd=tcp:10.0.2.100:1234-<tcp:10.10.1.1:4321>

یا می‌توانید در هر اتصال TCP برقرار شده توسط مهمان، دستوری را اجرا کنید تا QEMU مانند یک فرایند inetd برای آن سرور مجازی عمل کند:

# فراخوانی "netcat 10.10.1.1 4321" در هر اتصال TCP به 10.0.2.100:1234
# و اتصال جریان TCP به stdin/stdout آن
qemu-system-x86_64 -nic  'user,id=n1,guestfwd=tcp:10.0.2.100:1234-cmd:netcat 10.10.1.1 4321'
پیکربندی یک بک‌اند شبکهٔ TAP میزبان با شناسهٔ id.

از فایل اسکریپت شبکه file برای پیکربندی آن و از فایل اسکریپت شبکه dfile برای لغو پیکربندی استفاده کنید. اگر name مشخص نشده باشد، سیستم‌عامل به‌طور خودکار نامی ارائه می‌دهد. اسکریپت پیش‌فرض پیکربندی شبکه /etc/qemu-ifup و اسکریپت پیش‌فرض لغو پیکربندی شبکه /etc/qemu-ifdown است. از script=no یا downscript=no برای غیرفعال کردن اجرای اسکریپت استفاده کنید.

اگر QEMU را به‌عنوان کاربری بدون امتیاز اجرا می‌کنید، از برنامهٔ کمکی شبکه (helper) برای پیکربندی واسط TAP و اتصال آن به bridge استفاده کنید. فایل اجرایی پیش‌فرض برنامه کمکی شبکه /path/to/qemu-bridge-helper و دستگاه bridge پیش‌فرض br0 است.

می‌توان از fd=h برای مشخص کردن هندل (handle) یک واسط TAP میزبان که از پیش باز شده است استفاده کرد.

مثال‌ها:

# اجرای یک نمونه QEMU با اسکریپت شبکه پیش‌فرض
qemu-system-x86_64 linux.img -nic tap
# اجرای یک نمونه QEMU با دو NIC، که هر کدام به یک
# دستگاه TAP متصل شده‌اند
qemu-system-x86_64 linux.img \
        -netdev tap,id=nd0,ifname=tap0 -device e1000,netdev=nd0 \
        -netdev tap,id=nd1,ifname=tap1 -device rtl8139,netdev=nd1
# اجرای یک نمونه QEMU با برنامه کمکی پیش‌فرض شبکه برای
# اتصال یک دستگاه TAP به bridge br0
qemu-system-x86_64 linux.img -device virtio-net-pci,netdev=n1 \
        -netdev tap,id=n1,"helper=/path/to/qemu-bridge-helper"
اتصال یک واسط شبکهٔ TAP میزبان به یک دستگاه bridge میزبان.

از helper شبکه برای پیکربندی واسط TAP و متصل کردن آن به bridge استفاده کنید. فایل اجرایی پیش‌فرض برنامه کمکی شبکه /path/to/qemu-bridge-helper و دستگاه bridge پیش‌فرض br0 است.

مثال‌ها:

# اجرای یک نمونه QEMU با برنامه کمکی پیش‌فرض شبکه برای
# اتصال یک دستگاه TAP به bridge br0
qemu-system-x86_64 linux.img -netdev bridge,id=n1 -device virtio-net,netdev=n1
# اجرای یک نمونه QEMU با برنامه کمکی پیش‌فرض شبکه برای
# اتصال یک دستگاه TAP به bridge qemubr0
qemu-system-x86_64 linux.img -netdev bridge,br=qemubr0,id=n1 -device virtio-net,netdev=n1
این بک‌اند شبکهٔ میزبان می‌تواند برای اتصال شبکهٔ مهمان به یک ماشین مجازی دیگر QEMU با استفاده از اتصال سوکت TCP استفاده شود. اگر listen مشخص شده باشد، QEMU منتظر اتصالات ورودی روی port می‌ماند (host اختیاری است). از connect برای اتصال به یک نمونهٔ دیگر QEMU که از گزینهٔ listen استفاده می‌کند، به کار می‌رود. fd=h یک سوکت TCP از پیش باز شده را مشخص می‌کند.

مثال:

# اجرای نخستین نمونه QEMU
qemu-system-x86_64 linux.img \
                 -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
                 -netdev socket,id=n1,listen=:1234
# متصل کردن شبکه این نمونه به شبکه نخستین نمونه
qemu-system-x86_64 linux.img \
                 -device e1000,netdev=n2,mac=52:54:00:12:34:57 \
                 -netdev socket,id=n2,connect=127.0.0.1:1234
پیکربندی یک بک‌اند شبکهٔ میزبان سوکت برای به اشتراک‌گذاری ترافیک شبکهٔ مهمان با سایر ماشین‌های مجازی QEMU با استفاده از یک سوکت چندپخشی (multicast) مبتنی بر UDP، که عملاً یک گذرگاه (bus) برای هر QEMU با آدرس مالتی‌کست maddr و port یکسان می‌سازد. نکات:
1.
چندین QEMU می‌توانند روی میزبان‌های متفاوتی اجرا شوند و از گذرگاه یکسانی بهره ببرند (با فرض پیکربندی درست مالتی‌کست برای این میزبان‌ها).
2.
پشتیبانی از mcast با User Mode Linux سازگار است (آرگومان ethN=mcast)، نشانی http://user-mode-linux.sf.net را ببینید.
3.
از fd=h برای مشخص کردن یک سوکت مالتی‌کست UDP که از پیش باز شده است استفاده کنید.

مثال:

# اجرای یک نمونه QEMU
qemu-system-x86_64 linux.img \
                 -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
                 -netdev socket,id=n1,mcast=230.0.0.1:1234
# اجرای نمونه دیگری از QEMU روی همان "bus"
qemu-system-x86_64 linux.img \
                 -device e1000,netdev=n2,mac=52:54:00:12:34:57 \
                 -netdev socket,id=n2,mcast=230.0.0.1:1234
# اجرای یک نمونه دیگر از QEMU روی همان "bus"
qemu-system-x86_64 linux.img \
                 -device e1000,netdev=n3,mac=52:54:00:12:34:58 \
                 -netdev socket,id=n3,mcast=230.0.0.1:1234

مثال (سازگاری با User Mode Linux):

# اجرای نمونه QEMU (توجه کنید که نشانی mcast انتخاب شده، پیش‌فرض UML است)
qemu-system-x86_64 linux.img \
                 -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
                 -netdev socket,id=n1,mcast=239.192.168.1:1102
# اجرای UML
/path/to/linux ubd0=/path/to/root_fs eth0=mcast
مثال (ارسال بسته‌ها از آدرس 1.2.3.4 میزبان):
qemu-system-x86_64 linux.img \
                 -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
                 -netdev socket,id=n1,mcast=239.192.168.1:1102,localaddr=1.2.3.4
پیکربندی یک backend شبکه برای اتصال به یک ماشین مجازی QEMU دیگر یا یک پراکسی با استفاده از سوکت TCP/IP.
اگر on باشد، یک سوکت سرور ایجاد می‌کند
آدرس سوکت برای شنود (server=on) یا اتصال به آن (server=off)
در صورت وجود، این بازه‌ای از آدرس‌های ممکن است که پورت آن بین port و maxport قرار دارد.
اگر on باشد، تضمین می‌شود که host و port عددی هستند، در غیر این صورت برای تفکیک نام تلاش خواهد شد (پیش‌فرض: off)
فعال‌سازی keep-alive هنگام اتصال به این سوکت. برای سوکت‌های غیرفعال (passive) پشتیبانی نمی‌شود.
فعال‌سازی multipath TCP
پذیرش یا عدم پذیرش آدرس‌های IPv4؛ پیش‌فرض تلاش برای هر دو IPv4 و IPv6 است
پذیرش یا عدم پذیرش آدرس‌های IPv6؛ پیش‌فرض تلاش برای هر دو IPv4 و IPv6 است
برای یک سوکت کلاینت، اگر اتصال سوکت قطع شود، پس از تعداد میلی‌ثانیه‌های مشخص‌شده برای اتصال مجدد تلاش می‌کند. تنظیم این مقدار بر روی صفر، این قابلیت را غیرفعال می‌کند. (پیش‌فرض: 0)

مثال (دو سیستم‌عامل مهمان متصل‌شده با استفاده از سوکت TCP/IP):

# first VM
qemu-system-x86_64 linux.img \
              -device virtio-net,netdev=net0,mac=52:54:00:12:34:56 \
              -netdev stream,id=net0,server=on,addr.type=inet,addr.host=localhost,addr.port=1234
# second VM
qemu-system-x86_64 linux.img \
              -device virtio-net,netdev=net0,mac=52:54:00:12:34:57 \
              -netdev stream,id=net0,server=off,addr.type=inet,addr.host=localhost,addr.port=1234,reconnect-ms=5000
پیکربندی یک backend شبکه برای اتصال به یک ماشین مجازی QEMU دیگر یا یک پراکسی با استفاده از سوکت جریانی unix domain.
اگر on باشد، یک سوکت سرور ایجاد می‌کند
مسیر فایل‌سیستم مورد استفاده
اگر on باشد، یک آدرس سوکت انتزاعی (abstract) در لینوکس است.
اگر نادرست (false) باشد، آدرس سوکت انتزاعی را با تعداد کافی بایت تهی (null bytes) پر می‌کند تا عضو sun_path در struct sockaddr_un پر شود.
برای یک سوکت کلاینت، اگر اتصال سوکت قطع شود، پس از تعداد میلی‌ثانیه‌های مشخص‌شده برای اتصال مجدد تلاش می‌کند. تنظیم این مقدار بر روی صفر، این قابلیت را غیرفعال می‌کند. (پیش‌فرض: 0)

مثال (استفاده از passt به عنوان جایگزین -netdev user):

# start passt server as a non privileged user
passt
UNIX domain socket bound at /tmp/passt_1.socket
# start QEMU to connect to passt
qemu-system-x86_64 linux.img \
              -device virtio-net,netdev=net0 \
              -netdev stream,id=net0,server=off,addr.type=unix,addr.path=/tmp/passt_1.socket

مثال (دو سیستم‌عامل مهمان متصل‌شده با استفاده از سوکت جریانی unix domain):

# first VM
qemu-system-x86_64 linux.img \
              -device virtio-net,netdev=net0,mac=52:54:00:12:34:56 \
              netdev stream,id=net0,server=on,addr.type=unix,addr.path=/tmp/qemu0
# second VM
qemu-system-x86_64 linux.img \
              -device virtio-net,netdev=net0,mac=52:54:00:12:34:57 \
              -netdev stream,id=net0,server=off,addr.type=unix,addr.path=/tmp/qemu0,reconnect-ms=5000
پیکربندی یک backend شبکه برای اتصال به یک ماشین مجازی QEMU دیگر یا یک پراکسی با استفاده از توصیف‌گر فایل سوکت جریانی.
اگر on باشد، یک سوکت سرور ایجاد می‌کند
شماره توصیف‌گر فایل برای استفاده به عنوان سوکت
برای یک سوکت کلاینت، اگر اتصال سوکت قطع شود، پس از تعداد میلی‌ثانیه‌های مشخص‌شده برای اتصال مجدد تلاش می‌کند. تنظیم این مقدار بر روی صفر، این قابلیت را غیرفعال می‌کند. (پیش‌فرض: 0)
پیکربندی یک backend شبکه برای اتصال به یک آدرس چندپخشی (multicast).
آدرس چندپخشی (multicast)
مشخص کردن آدرس میزبان برای ارسال بسته‌ها از آن

مثال:

# launch one QEMU instance
qemu-system-x86_64 linux.img \
              -device virtio-net,netdev=net0,mac=52:54:00:12:34:56 \
              -netdev dgram,id=net0,remote.type=inet,remote.host=224.0.0.1,remote.port=1234
# launch another QEMU instance on same "bus"
qemu-system-x86_64 linux.img \
              -device virtio-net,netdev=net0,mac=52:54:00:12:34:57 \
              -netdev dgram,id=net0,remote.type=inet,remote.host=224.0.0.1,remote.port=1234
# launch yet another QEMU instance on same "bus"
qemu-system-x86_64 linux.img \
              -device virtio-net,netdev=net0,mac=52:54:00:12:34:58 \
              -netdev dgram,id=net0,remote.type=inet,remote.host=224.0.0.1,remote.port=1234
پیکربندی یک backend شبکه برای اتصال به یک آدرس چندپخشی (multicast) با استفاده از توصیف‌گر فایل سوکت UDP.
آدرس چندپخشی (multicast)
توصیف‌گر فایل برای استفاده جهت ارسال بسته‌ها
پیکربندی یک backend شبکه برای اتصال به یک ماشین مجازی QEMU دیگر یا یک پراکسی با استفاده از سوکت داده‌گرامی (datagram oriented) در unix domain.
آدرس IP برای ارسال بسته‌ها از آن.TP remote.host=addr,remote.port=port آدرس IP مقصد

مثال (دو میهمان متصل‌شده با استفاده از یک سوکت UDP/IP):

# first VM
qemu-system-x86_64 linux.img \
              -device virtio-net,netdev=net0,mac=52:54:00:12:34:56 \
              -netdev dgram,id=net0,local.type=inet,local.host=localhost,local.port=1234,remote.type=inet,remote.host=localhost,remote.port=1235
# second VM
qemu-system-x86_64 linux.img \
              -device virtio-net,netdev=net0,mac=52:54:00:12:34:56 \
              -netdev dgram,id=net0,local.type=inet,local.host=localhost,local.port=1235,remote.type=inet,remote.host=localhost,remote.port=1234
پیکربندی یک پس‌زمینهٔ شبکه برای اتصال به یک ماشین مجازی QEMU دیگر یا یک پراکسی با استفاده از سوکت unix مبتنی بر دیتاگرام.
مسیر فایل‌سیستم مورد استفاده برای مقید کردن (bind) سوکت
مسیر فایل‌سیستم مورد استفاده به‌عنوان مقصد (رجوع کنید به sendto(2))

مثال (دو میهمان متصل‌شده با استفاده از یک سوکت UDP/UNIX):

# first VM
qemu-system-x86_64 linux.img \
              -device virtio-net,netdev=net0,mac=52:54:00:12:34:56 \
              -netdev dgram,id=net0,local.type=unix,local.path=/tmp/qemu0,remote.type=unix,remote.path=/tmp/qemu1
# second VM
qemu-system-x86_64 linux.img \
              -device virtio-net,netdev=net0,mac=52:54:00:12:34:57 \
              -netdev dgram,id=net0,local.type=unix,local.path=/tmp/qemu1,remote.type=unix,remote.path=/tmp/qemu0
پیکربندی یک پس‌زمینهٔ شبکه برای اتصال به یک ماشین مجازی QEMU دیگر یا یک پراکسی با استفاده از یک توصیف‌گر فایل سوکت مبتنی بر دیتاگرام.
توصیف‌گر فایل مورد استفاده برای ارسال بسته‌ها
پیکربندی پس‌زمینهٔ شبکهٔ میزبان مبتنی بر شبه‌سیم (pseudowire) پروتکل L2TPv3. پروتکل L2TPv3 (RFC3931) یک پروتکل محبوب برای انتقال فریم‌های دادهٔ Ethernet (و سایر لایه‌های ۲) بین دو سیستم است. این قابلیت در مسیریاب‌ها، فایروال‌ها و هستهٔ لینوکس (از نسخهٔ ۳.۳ به بعد) وجود دارد.

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

آدرس مبدأ (اجباری)
آدرس مقصد (اجباری)
انتخاب کپسوله‌سازی udp (پیش‌فرض ip است).
پورت udp مبدأ.
پورت udp مقصد.
اجبار به استفاده از v6، در غیر این صورت پیش‌فرض v4 است.
کوکی‌ها شکل ضعیفی از امنیت در مشخصات l2tpv3 هستند. کاربرد آن‌ها بیشتر جلوگیری از پیکربندی نادرست است. به‌طور پیش‌فرض ۳۲ بیتی هستند.
تنظیم اندازهٔ کوکی به ۶۴ بیت به‌جای مقدار پیش‌فرض ۳۲ بیت
اجبار به استفاده از یک L2TPv3 'تقلیل‌یافته' بدون شمارنده، مطابق با draft-mkonstan-l2tpext-keyed-ipv6-tunnel-00
دور زدن مشکل مدیریت معیوب شمارنده در طرف مقابل (peer). این گزینه همچنین ممکن است در شبکه‌های دارای به‌هم‌ریختگی ترتیب بسته‌ها کمک کند.
افزودن یک آفست اضافی بین سرایند (header) و داده

برای مثال، جهت اتصال یک ماشین مجازی در حال اجرا روی میزبان 4.3.2.1 از طریق L2TPv3 به پل br-lan روی میزبان لینوکس راه‌دور 1.2.3.4:

# Setup tunnel on linux host using raw ip as encapsulation
# on 1.2.3.4
ip l2tp add tunnel remote 4.3.2.1 local 1.2.3.4 tunnel_id 1 peer_tunnel_id 1 \
    encap udp udp_sport 16384 udp_dport 16384
ip l2tp add session tunnel_id 1 name vmtunnel0 session_id \
    0xFFFFFFFF peer_session_id 0xFFFFFFFF
ifconfig vmtunnel0 mtu 1500
ifconfig vmtunnel0 up
brctl addif br-lan vmtunnel0
# on 4.3.2.1
# launch QEMU instance - if your network has reorder or is very lossy add ,pincounter
qemu-system-x86_64 linux.img -device e1000,netdev=n1 \
    -netdev l2tpv3,id=n1,src=4.2.3.1,dst=1.2.3.4,udp=on,srcport=16384,dstport=16384,rxsession=0xffffffff,txsession=0xffffffff,counter=on
پیکربندی پس‌زمینهٔ VDE برای اتصال به درگاه (PORT) شمارهٔ n از یک سوییچ vde در حال اجرا روی میزبان و گوش‌به‌زنگ برای اتصالات ورودی روی socketpath. از GROUP groupname و MODE octalmode برای تغییر مالکیت و دسترسی‌های پیش‌فرض درگاه ارتباطی استفاده کنید. این گزینه تنها در صورتی موجود است که QEMU با فعال بودن پشتیبانی از vde کامپایل شده باشد.

مثال:

# launch vde switch
vde_switch -F -sock /tmp/myswitch
# launch QEMU instance
qemu-system-x86_64 linux.img -nic vde,sock=/tmp/myswitch
پیکربندی پس‌زمینهٔ AF_XDP برای اتصال به یک رابط شبکه 'name' با استفاده از سوکت AF_XDP. یک حالت اتصال برنامهٔ خاص برای برنامهٔ پیش‌فرض XDP را می‌توان با 'mode' تحمیل کرد، که مقدار پیش‌فرض آن best-effort است و در آن احتمالاً پربازده‌ترین حالت استفاده خواهد شد. تعداد صف‌های 'n' معمولاً باید با تعداد صف‌های رابط مطابقت داشته باشد؛ مقدار پیش‌فرض ۱ است. ترافیکی که به صف‌های پیکربندی‌نشدهٔ دستگاه می‌رسد به پس‌زمینهٔ شبکه تحویل داده نخواهد شد.
# set number of queues to 4
ethtool -L eth0 combined 4
# launch QEMU instance
qemu-system-x86_64 linux.img -device virtio-net-pci,netdev=n1 \
    -netdev af-xdp,id=n1,ifname=eth0,queues=4

گزینهٔ 'start-queue' را می‌توان در حالتی که نیاز به استفاده از یک بازهٔ مشخص از صف‌ها [m, m + n] باشد، مشخص نمود. به‌عنوان مثال، ممکن است این امر برای استفاده از برخی NICها در حالت native ضروری باشد. هسته به درایور اجازه می‌دهد مجموعه‌ای جداگانه از صف‌های XDP را فراتر از صف‌های عادی ایجاد کند، و فقط این صف‌ها می‌توانند برای سوکت‌های AF_XDP به کار روند. کارت‌های شبکه‌ای که به این صورت کار می‌کنند، ممکن است نیاز به یک بازهدایت ترافیک اضافی با ethtool به این صف‌های خاص داشته باشند.

# تنظیم تعداد صف‌ها به 1
ethtool -L eth0 combined 1
# هدایت تمام ترافیک به صف دوم (شناسه: 1)
# نکته: ممکن است درایورها به جفت کلید/ماسک غیرخالی نیاز داشته باشند.
ethtool -N eth0 flow-type ether \
    dst 00:00:00:00:00:00 m FF:FF:FF:FF:FF:FE action 1
ethtool -N eth0 flow-type ether \
    dst 00:00:00:00:00:01 m FF:FF:FF:FF:FF:FE action 1
# راه‌اندازی نمونهٔ QEMU
qemu-system-x86_64 linux.img -device virtio-net-pci,netdev=n1 \
    -netdev af-xdp,id=n1,ifname=eth0,queues=1,start-queue=1

برنامهٔ XDP می‌تواند به‌صورت خارجی نیز بارگذاری شود. در این حالت گزینهٔ 'inhibit' باید بر روی 'on' تنظیم گردد. با فعال بودن 'inhibit'، می‌توان از هر یک از گزینه‌های 'sock-fds' یا 'map-path' استفاده کرد. مقدار 'sock-fds' می‌تواند توصیف‌کننده‌های فایلی برای سوکت‌های XDP از پیش باز شده اما bind‌نشده را که قبلاً به یک socket map برای صف‌های متناظر افزوده شده‌اند فراهم کند. یک سوکت به ازای هر صف.

qemu-system-x86_64 linux.img -device virtio-net-pci,netdev=n1 \
    -netdev af-xdp,id=n1,ifname=eth0,queues=3,inhibit=on,sock-fds=15:16:17

برای گزینهٔ 'inhibit' که بر روی 'on' تنظیم شده و همراه با 'map-path' به کار می‌رود، انتظار می‌رود که برنامهٔ XDP به همراه socket map از قبل روی دستگاه شبکه بارگذاری شده و نگاشت در فایل‌سیستم BPF پین شده باشد. سپس مسیر نگاشت پین‌شده به QEMU ارسال می‌شود که توصیف‌کننده‌های فایل را ایجاد کرده و آنها را در socket map موجود درج می‌کند.

qemu-system-x86_64 linux.img -device virtio-net-pci,netdev=n1 \
    -netdev af-xdp,id=n1,ifname=eth0,queues=2,inhibit=on,map-path=/sys/fs/bpf/xsks_map

علاوه بر این، می‌توان از 'map-start-index' برای تعیین آفست شروع جهت درج در socket map استفاده کرد. ترکیب هم‌زمان 'map-path' و 'sock-fds' با یکدیگر پشتیبانی نمی‌شود.

ایجاد یک netdev از نوع vhost-user، با پشتیبانی یک chardev id. این chardev باید مبتنی بر unix domain socket باشد. vhost-user از پروتکل مشخصی برای ارسال پیام‌های جایگزین ioctl مربوط به vhost به برنامه‌ای در سمت دیگر سوکت استفاده می‌کند. در مهمان‌های غیر MSI-X، این ویژگی را می‌توان با vhostforce اجبار کرد. از 'queues=n' برای تعیین تعداد صف‌های ایجادشده برای vhost-user چندصفی (multiqueue) استفاده کنید.

مثال:

qemu -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,share=on \
     -numa node,memdev=mem \
     -chardev socket,id=chr0,path=/path/to/socket \
     -netdev type=vhost-user,id=net0,chardev=chr0 \
     -device virtio-net-pci,netdev=net0
ایجاد یک netdev از نوع vhost-vdpa.

دستگاه vDPA دستگاهی است که از یک مسیر داده (datapath) منطبق با مشخصات virtio همراه با یک مسیر کنترل اختصاصی سازنده (vendor specific) استفاده می‌کند. دستگاه‌های vDPA می‌توانند هم به‌صورت فیزیکی روی سخت‌افزار قرار داشته باشند و هم توسط نرم‌افزار شبیه‌سازی شوند.

ایجاد یک پورت هاب روی هاب شبیه‌سازی‌شده با شناسهٔ hubid.

گزینهٔ netdev از نوع hubport به شما امکان می‌دهد تا به جای یک netdev تکی، یک کارت شبکه (NIC) را به یک هاب شبیه‌سازی‌شده در QEMU متصل کنید. در غیر این صورت، می‌توانید با استفاده از گزینهٔ netdev=nd، این hubport را به یک netdev دیگر با شناسهٔ nd متصل نمایید.

گزینهٔ قدیمی (legacy) برای پیکربندی یا ایجاد یک کارت واسط شبکه (NIC) روی برد (یا پیش‌فرض ماشین) و اتصال آن به هاب شبیه‌سازی‌شده با شناسهٔ 0 (یعنی هاب پیش‌فرض)، یا به netdev با شناسهٔ nd. اگر model حذف شود، مدل پیش‌فرض NIC مرتبط با نوع ماشین استفاده می‌شود. توجه داشته باشید که ممکن است مدل پیش‌فرض NIC در نسخه‌های آیندهٔ QEMU تغییر کند، بنابراین اکیداً توصیه می‌شود همیشه یک مدل مشخص شود. به صورت اختیاری، آدرس MAC می‌تواند به mac تغییر کند، نشانی دستگاه به addr تنظیم شود (فقط کارت‌های PCI)، و نامی برای استفاده در دستورهای مانیتور اختصاص یابد. همچنین برای کارت‌های PCI، می‌توانید تعداد v از بردارهای MSI-X را که کارت باید داشته باشد مشخص کنید؛ این گزینه در حال حاضر تنها روی کارت‌های virtio تأثیر می‌گذارد؛ برای غیرفعال کردن MSI-X مقدار v = 0 را تنظیم کنید. اگر هیچ گزینهٔ -net مشخص نشود، یک NIC منفرد ایجاد می‌شود. QEMU می‌تواند چندین مدل مختلف کارت شبکه را شبیه‌سازی کند. از -net nic,model=help برای دریافت فهرستی از دستگاه‌های موجود برای هدف خود استفاده نمایید.
پیکربندی یک بک‌اند شبکهٔ میزبان (با گزینه‌های متناظر با همان گزینهٔ -netdev) و اتصال آن به هاب شبیه‌سازی‌شدهٔ 0 (هاب پیش‌فرض). از name برای تعیین نام پورت هاب استفاده کنید.

شکل کلی یک گزینهٔ دستگاه نویسه‌ای به صورت زیر است:

مؤلفهٔ backend یکی از این موارد است: null، socket، udp، msmouse، hub، vc، ringbuf، file، pipe، console، serial، pty، stdio، braille، parallel، spicevmc، spiceport، dbus. نوع backend مشخص تعیین‌کنندهٔ گزینه‌های قابل اعمال خواهد بود.

برای چاپ تمام انواع موجود backend در chardev از -chardev help استفاده کنید.

تمامی دستگاه‌ها باید یک id داشته باشند که می‌تواند هر رشته‌ای تا حداکثر ۱۲۷ نویسه باشد. این شناسه برای شناسایی یکتای این دستگاه در سایر دستورالعمل‌های خط فرمان استفاده می‌شود.

یک دستگاه نویسه‌ای می‌تواند در حالت چندگانه‌سازی (multiplexing) توسط چندین front-end استفاده شود. برای فعال کردن این حالت mux=on را تعیین کنید. یک مالتی‌پلکسر یک دستگاه "1:N" است که در اینجا انتهای "1" همان backend مشخص‌شدهٔ chardev شما و انتهای "N" بخش‌های مختلف QEMU است که می‌توانند با یک chardev ارتباط برقرار کنند. اگر یک chardev را با id=myid و mux=on ایجاد کنید، QEMU یک مالتی‌پلکسر با شناسهٔ مشخص‌شدهٔ شما ایجاد خواهد کرد و سپس می‌توانید چندین frontend را طوری پیکربندی کنید که از آن شناسهٔ chardev برای ورودی/خروجی خود استفاده کنند. حداکثر تا چهار frontend مختلف می‌توانند به یک chardev چندگانه‌شده متصل شوند. (بدون فعال‌سازی مالتی‌پلکسینگ، یک chardev تنها توسط یک frontend منفرد قابل استفاده است.) به عنوان مثال، می‌توانید از این قابلیت استفاده کنید تا اجازه دهید یک chardev از نوع stdio توسط دو درگاه سریال و مانیتور QEMU استفاده شود:

-chardev stdio,mux=on,id=char0 \
-object monitor-hmp,id=hmp0,chardev=char0 \
-serial chardev:char0 \
-serial chardev:char0

شما می‌توانید بیش از یک مالتی‌پلکسر در پیکربندی سیستم داشته باشید؛ برای نمونه می‌توانید یک درگاه TCP چندگانه‌شده میان UART 0 و UART 1، و stdio چندگانه‌شده میان مانیتور QEMU و یک درگاه موازی (parallel port) داشته باشید:

-chardev stdio,mux=on,id=char0 \
-object monitor-hmp,id=hmp0,chardev=char0 \
-parallel chardev:char0 \
-chardev tcp,...,mux=on,id=char1 \
-serial chardev:char1 \
-serial chardev:char1

هنگامی که از یک دستگاه نویسه‌ای چندگانه‌شده استفاده می‌کنید، برخی از توالی‌های فرار (escape sequences) در ورودی تفسیر می‌شوند. برای جزئیات بیشتر به بخش Keys in the character backend multiplexer <#keys-in-the-character-backend-multiplexer> در System Emulation Users Guide مراجعه کنید.

توجه داشته باشید که برخی دیگر از گزینه‌های خط فرمان ممکن است به‌طور ضمنی backendهای نویسه‌ای چندگانه‌شده ایجاد کنند؛ برای نمونه -serial mon:stdio یک backend چندگانه‌شدهٔ stdio متصل به درگاه سریال و مانیتور QEMU ایجاد می‌کند، و -nographic نیز کنسول و مانیتور را روی stdio چندگانه‌سازی می‌کند.

اگر نیاز دارید داده‌ها را در جهت مخالف تجمیع کنید (جایی که یک رابط frontend در QEMU ورودی و خروجی را از چندین دستگاه chardev در backend دریافت می‌کند)، لطفاً به بند زیر در رابطه با پیکربندی دستگاه تجمیع‌کنندهٔ hub در chardev مراجعه کنید.

هر backend از گزینهٔ logfile پشتیبانی می‌کند که مسیر فایلی را برای ضبط تمام داده‌های منتقل‌شده از طریق آن backend تعیین می‌نماید. گزینهٔ logappend کنترل می‌کند که آیا فایل لاگ هنگام باز شدن خالی (truncate) شود یا داده‌ها به انتهای آن افزوده (append) شوند.

backendهای موجود عبارتند از:

یک دستگاه خالی (void). این دستگاه هیچ داده‌ای ارسال نمی‌کند و هر داده‌ای را که دریافت کند دور می‌اندازد. مؤلفهٔ null هیچ گزینه‌ای نمی‌پذیرد.
یک سوکت جریانی دوطرفه ایجاد می‌کند که می‌تواند سوکت TCP یا unix باشد. اگر path مشخص شود، یک سوکت unix ایجاد خواهد شد. در صورتی که گزینه‌های TCP برای یک سوکت unix تعیین شوند، رفتار نامشخص خواهد بود.

server=on|off مشخص می‌کند که سوکت باید یک سوکت شنودکننده (listening socket) باشد.

wait=on|off مشخص می‌کند که QEMU نباید در انتظار اتصال کلاینت به یک سوکت شنودکننده مسدود شود.

telnet=on|off مشخص می‌کند که ترافیک روی سوکت باید توالی‌های فرار telnet را تفسیر کند.

websocket=on|off مشخص می‌کند که سوکت برای ارتباطات از پروتکل WebSocket استفاده می‌کند.

reconnect-ms مهلت زمانی اتصال مجدد را در سوکت‌های غیرسرور (non-server) در صورت قطع ارتباط طرف مقابل تنظیم می‌کند. qemu به میزان این میلی‌ثانیه‌ها درنگ کرده و سپس برای اتصال مجدد تلاش می‌کند. مقدار صفر اتصال مجدد را غیرفعال می‌کند و مقدار پیش‌فرض است.

tls-creds درخواست فعال‌سازی پروتکل TLS را برای رمزنگاری ارائه می‌دهد و id مربوط به اعتبارنامه‌های TLS را برای استفاده در دست‌تکانی (handshake) مشخص می‌کند. این اعتبارنامه‌ها باید پیش‌تر با آرگومان -object tls-creds ایجاد شده باشند.

tls-auth شناسهٔ شیء مجوزدهی QAuthZ را فراهم می‌کند که نام متمایز (distinguished name) کلاینت x509 بر اساس آن اعتبارسنجی خواهد شد. این شیء تنها در زمان استفاده ارزیابی می‌شود، بنابراین می‌توان آن را در زمان فعال بودن سرور chardev به‌صورت بی‌درنگ حذف و دوباره ایجاد کرد. در صورت عدم وجود، پیش‌فرض آن رد دسترسی خواهد بود.

گزینه‌های سوکت TCP و unix در زیر آورده شده‌اند:

گزینه‌های TCP: port=port[,host=host][,to=to][,ipv4=on|off][,ipv6=on|off][,nodelay=on|off]
host برای یک سوکت شنودکننده، آدرس محلی برای متصل شدن (bind) را مشخص می‌کند. برای یک سوکت متصل‌شونده، میزبان دوردست را برای اتصال مشخص می‌کند. host برای سوکت‌های شنودکننده اختیاری است. در صورت مشخص نشدن، مقدار پیش‌فرض آن 0.0.0.0 خواهد بود.

port برای یک سوکت شنودکننده، درگاه محلی برای bind شدن را مشخص می‌کند. برای یک سوکت متصل‌شونده، درگاه روی میزبان دوردست را برای اتصال مشخص می‌کند. port می‌تواند به صورت شماره درگاه یا نام یک سرویس مشخص شود. تعیین port الزامی است.

to تنها برای سوکت‌های شنودکننده کاربرد دارد. اگر این گزینه مشخص شود و امکان bind شدن به port وجود نداشته باشد، QEMU تلاش خواهد کرد به درگاه‌های بعدی تا خود درگاه to (شامل آن) متصل شود تا زمانی که موفق شود. to باید به صورت شماره درگاه مشخص شود.

ipv4=on|off و ipv6=on|off مشخص می‌کنند که باید از IPv4 یا IPv6 استفاده شود. در صورتی که هیچ‌کدام مشخص نشود، سوکت می‌تواند از هر یک از پروتکل‌ها استفاده کند.

nodelay=on|off الگوریتم Nagle را غیرفعال می‌کند.

گزینه‌های unix: path=path[,abstract=on|off][,tight=on|off]
path مسیر محلی سوکت unix را مشخص می‌کند. تعیین path الزامی است. abstract=on|off استفاده از فضای نام انتزاعی سوکت (abstract socket namespace) را به جای سیستم فایل مشخص می‌کند. اختیاری است و پیش‌فرض آن false می‌باشد. tight=on|off طول سوکت‌های انتزاعی را به جای طول کامل sun_path بر روی حداقل مقدار آن تنظیم می‌کند. اختیاری است و پیش‌فرض آن true می‌باشد.
تمام ترافیک را از سیستم مهمان از طریق UDP به یک میزبان دوردست ارسال می‌کند.

host میزبان دوردست برای اتصال را مشخص می‌کند. اگر مشخص نشود، مقدار پیش‌فرض localhost خواهد بود.

port درگاه روی میزبان دوردست برای اتصال را مشخص می‌کند. تعیین port الزامی است.

localaddr آدرس محلی برای bind شدن را مشخص می‌کند. اگر مشخص نشود، مقدار پیش‌فرض آن 0.0.0.0 خواهد بود.

localport درگاه محلی برای bind شدن را مشخص می‌کند. اگر مشخص نشود، از هر درگاه محلی موجود استفاده خواهد شد.

ipv4=on|off و ipv6=on|off مشخص می‌کنند که باید از IPv4 یا IPv6 استفاده شود. اگر هیچ‌کدام مشخص نشود، دستگاه می‌تواند از هر پروتکلی استفاده کند.

رویدادهای msmouse شبیه‌سازی‌شده توسط QEMU را به سیستم مهمان هدایت (forward) می‌کند. msmouse هیچ گزینه‌ای نمی‌پذیرد.
به‌طور صریح یک دستگاه hub برای backend در chardev با امکان تجمیع ورودی از چندین دستگاه backend و ارسال آن به یک دستگاه frontend منفرد ایجاد می‌کند. علاوه بر این، دستگاه hub خروجی دستگاه frontend را دریافت کرده و آن را به تمام دستگاه‌های backend متصل بازمی‌فرستد. این ویژگی امکان تعامل یکپارچه میان دستگاه‌های backend مختلف و یک رابط frontend منفرد را فراهم می‌کند. تجمیع تا حداکثر ۴ دستگاه chardev پشتیبانی می‌شود. (از نسخهٔ 10.0).sp برای نمونه، در ادامه یک مورد استفاده از ۲ دستگاه backend آورده شده است: کنسول مجازی vc0 و یک pseudo TTY با نام pty0 که با کمک یک هاب hub0 به یک دستگاه frontend کنسول virtio hvc متصل شده‌اند. کنسول مجازی متن را به یک تصویر رندر می‌کند که می‌تواند از طریق پروتکل VNC به اشتراک گذاشته شود. متقابلاً، backend مربوط به pty ارتباطی دوطرفه با کنسول virtio hvc از طریق فایل pseudo TTY فراهم می‌کند. پیکربندی نمونه می‌تواند به صورت زیر باشد:
-chardev pty,path=/tmp/pty,id=pty0 \
-chardev vc,id=vc0 \
-chardev hub,id=hub0,chardevs.0=pty0,chardevs.1=vc0 \
-device virtconsole,chardev=hub0 \
-vnc 0.0.0.0:0

پس از راه‌اندازی QEMU، می‌توان از کلاینت VNC و هر شبیه‌ساز TTY دیگری برای کنترل یک کنسول hvc واحد استفاده کرد:

# Start TTY emulator
tio /tmp/pty
# Start VNC client and switch to virtual console Ctrl-Alt-2
vncviewer :0

استفاده از چندین دستگاه frontend پشتیبانی نمی‌شود. همچنین پشته‌سازی چندگانه‌سازها (multiplexers) و دستگاه‌های هاب نیز پشتیبانی نمی‌شود.

اتصال به یک کنسول متنی QEMU. پیاده‌سازی و مجموعه قابلیت‌های پشتیبانی‌شده به backend نمایش انتخابی بستگی دارد.
  • پشتانه (backend) مربوط به GTK از libvte برای شبیه‌سازی و نمایش استفاده می‌کند (در صورت دردسترس بودن).
  • پشتانه مربوط به D-Bus دستگاه نویسه‌ای را به صورت یک شیء Chardev برون‌ریزی می‌کند.
  • پشتانه spice-app آن را به عنوان یک درگاه Spice برون‌ریزی می‌کند.

در موارد دیگر، QEMU از VT100 شبیه‌سازی‌شده خودش استفاده می‌کند و می‌توان به صورت اختیاری به vc ابعاد مشخصی داد.

گزینه‌های width و height به ترتیب پهنا و ارتفاع کنسول را بر حسب پیکسل مشخص می‌کنند.

گزینه‌های cols و rows مشخص می‌کنند که اندازه کنسول به ابعاد یک کنسول متنی با اندازه‌های داده‌شده تنظیم شود.

گزینه encoding مجموعه نویسه‌های مورد انتظار از سیستم مهمان را مشخص می‌کند: utf8 یا cp437 (کد ۸ بیتی Extended ASCII / VGA).

ایجاد یک بافر حلقه‌ای با اندازه ثابت size. مقدار size باید توانی از دو باشد و مقدار پیش‌فرض آن 64K است.
ثبت تمام ترافیک دریافتی از مهمان در یک فایل.

گزینه path مسیر فایلی را که باید باز شود مشخص می‌کند. اگر این فایل وجود نداشته باشد ایجاد می‌شود، و در صورت وجود، بازنویسی خواهد شد. مشخص کردن path الزامی است.

در صورت تعیین input-path، این مقدار مسیر فایل دومی خواهد بود که برای ورودی استفاده می‌شود. اگر input-path مشخص نشود، هیچ ورودی‌ای از chardev در دسترس نخواهد بود.

توجه داشته باشید که input-path روی میزبان‌های Windows پشتیبانی نمی‌شود.

ایجاد یک ارتباط دوطرفه با سیستم مهمان. رفتار این گزینه در میزبان‌های Windows با سایر میزبان‌ها اندکی متفاوت است:

در Windows، یک لوله (pipe) دوطرفه در \\.pipe\path ایجاد خواهد شد.

در سایر میزبان‌ها، دو pipe با نام‌های path.in و path.out ایجاد می‌شوند. داده‌های نوشته‌شده در path.in توسط مهمان دریافت می‌شوند. داده‌های نوشته‌شده توسط مهمان نیز از path.out خوانده می‌شوند. برنامه QEMU این fifoها را ایجاد نخواهد کرد و لازم است از پیش موجود باشند.

همان‌طور که در بالا ذکر شد، path بخشی از مسیر pipe را تشکیل می‌دهد. مشخص کردن path الزامی است.

ارسال ترافیک از مهمان به خروجی استاندارد QEMU. گزینه console هیچ پارامتری دریافت نمی‌کند.

گزینه console تنها روی میزبان‌های Windows در دسترس است.

ارسال ترافیک از مهمان به یک دستگاه سریال روی سیستم میزبان.

در میزبان‌های Unix، این گزینه علاوه بر خطوط سریال در واقع هر دستگاه tty دیگری را نیز می‌پذیرد.

گزینه path نام دستگاه سریالی را که باید باز شود مشخص می‌کند.

ایجاد یک شبه‌ترمینال (pseudo-terminal) جدید روی میزبان و اتصال به آن.

گزینه pty روی میزبان‌های Windows در دسترس نیست.

در صورت تعیین path، برنامه QEMU یک پیوند نمادین (symbolic link) در آن مکان ایجاد می‌کند که به دستگاه PTY جدید اشاره دارد.

این قابلیت مانع از نیاز به ارسال پرس‌وجوهای مانیتور QMP یا HMP برای پیدا کردن مسیر دستگاه PTY جدید می‌شود.

توجه داشته باشید که هرچند QEMU هنگام خروج عادی پیوند نمادین را حذف می‌کند، اما در صورت کرش کردن یا خطاهای خاص هنگام راه‌اندازی این کار را انجام نخواهد داد. توصیه می‌شود برای مدیریت این مسئله، کاربر پس از خاتمه QEMU وجود پیوند نمادین را بررسی و آن را حذف کند.

اتصال به ورودی استاندارد و خروجی استاندارد فرایند QEMU.

گزینه signal مشخص می‌کند که آیا سیگنال‌ها روی ترمینال فعال باشند یا خیر، که این موضوع شامل خروج از QEMU با کلید ترکیبی Control-c نیز می‌شود. این گزینه به صورت پیش‌فرض فعال است؛ برای غیرفعال‌سازی از signal=off استفاده کنید.

اتصال به یک سرور محلی BrlAPI. گزینه braille هیچ پارامتری دریافت نمی‌کند.
گزینه parallel تنها روی میزبان‌های Linux، FreeBSD و DragonFlyBSD
در دسترس است.

اتصال به یک درگاه موازی (parallel) محلی.

گزینه path مسیر دستگاه درگاه موازی را مشخص می‌کند. مشخص کردن path الزامی است.

گزینه spicevmc تنها زمانی در دسترس است که پشتیبانی از spice در برنامه تعبیه شده باشد.

debug سطح اشکال‌زدایی برای spicevmc

name نام کانال spice جهت اتصال

اتصال به یک کانال ماشین مجازی spice، مانند vdiport.

گزینه spiceport تنها زمانی در دسترس است که پشتیبانی از spice در برنامه تعبیه شده باشد.

debug سطح اشکال‌زدایی برای spicevmc

name نام درگاه spice جهت اتصال

اتصال به یک درگاه spice، که به کلاینت Spice امکان می‌دهد ترافیک شناسایی‌شده با یک نام (ترجیحاً یک fqdn) را مدیریت کند.

گزینه dbus تنها زمانی در دسترس است که پشتیبانی از نمایشگر D-Bus در برنامه تعبیه شده باشد.

name نام chardev به صورتی که روی رابط نمایشگر D-Bus برون‌ریزی شده است

برون‌ریزی دستگاه نویسه‌ای روی رابط نمایشگر D-Bus، به طوری که یک کلاینت D-Bus بتواند به آن متصل شود.

شکل کلی گزینه دستگاه TPM به صورت زیر است:

نوع مشخص پس‌بخش (backend)، گزینه‌های قابل استفاده را تعیین می‌کند. گزینهٔ -tpmdev پس‌بخش TPM را ایجاد می‌کند و نیازمند یک گزینهٔ -device است که مدل رابط پیش‌بخش (frontend) مربوط به TPM را مشخص کند.

برای چاپ همه انواع پس‌بخش‌های موجود TPM از -tpmdev help استفاده کنید.

پس‌بخش‌های دردسترس عبارتند از:

(فقط میزبان لینوکس) فعال‌سازی دسترسی به TPM میزبان با استفاده از درایور passthrough.

path مسیر دستگاه TPM میزبان را مشخص می‌کند، به عنوان مثال، در میزبان لینوکس این مسیر /dev/tpm0 خواهد بود. path اختیاری است و به طور پیش‌فرض /dev/tpm0 استفاده می‌شود.

cancel-path مسیر ورودی sysfs دستگاه TPM میزبان را برای لغو یک دستور در حال اجرای TPM مشخص می‌کند. cancel-path اختیاری است و به طور پیش‌فرض QEMU برای یافتن مدخل sysfs جهت استفاده، جستجو خواهد کرد.

چند نکته درباره استفاده از TPM میزبان با درایور passthrough:

دستگاه TPM که توسط درایور passthrough مورد دسترسی قرار می‌گیرد، نباید توسط هیچ برنامه دیگری در میزبان استفاده شود.

از آنجا که سفت‌افزار (BIOS/UEFI) میزبان قبلاً TPM را مقداردهی اولیه کرده است، سفت‌افزار (BIOS/UEFI) ماشین مجازی (VM) قادر به مقداردهی اولیه مجدد آن نخواهد بود و بنابراین ممکن است منوی اختصاصی TPM را نمایش ندهد؛ منویی که در حالت عادی به کاربر اجازه پیکربندی TPM را می‌دهد، برای مثال اجازه فعال/غیرفعال کردن یا راه‌اندازی/متوقف کردن TPM. علاوه بر این، اگر مالکیت TPM از درون ماشین مجازی رها شود، TPM میزبان غیرفعال و خاموش خواهد شد. برای فعال‌سازی و راه‌اندازی دوباره TPM پس از آن، میزبان باید راه‌اندازی مجدد (reboot) شود و کاربر باید وارد منوی سفت‌افزار شود تا TPM را فعال و راه‌اندازی کند. اگر TPM در حالت غیرفعال و/یا راه‌اندازی‌نشده باقی بماند، اکثر دستورات TPM ناموفق خواهند بود.

برای ایجاد یک TPM از نوع passthrough از دو گزینه زیر استفاده کنید:

-tpmdev passthrough,id=tpm0 -device tpm-tis,tpmdev=tpm0

توجه داشته باشید که شناسهٔ -tpmdev برابر tpm0 است و در گزینهٔ دستگاه با tpmdev=tpm0 به آن ارجاع داده می‌شود.

(فقط میزبان لینوکس) فعال‌سازی دسترسی به شبیه‌ساز TPM با استفاده از پس‌بخش chardev مبتنی بر سوکت دامنه یونیکس (Unix domain socket).

chardev شناسه یکتای پس‌بخش دستگاه نویسه‌ای (character device) را مشخص می‌کند که اتصال به کارساز نرم‌افزاری TPM را فراهم می‌سازد.

برای ایجاد یک دستگاه پس‌بخش شبیه‌ساز TPM با پس‌بخش سوکت chardev:

-chardev socket,id=chrtpm,path=/tmp/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0

به طور کلی ۴ روش برای بوت کردن یک سیستم با QEMU وجود دارد:

  • سفت‌افزاری را مشخص کرده و اجازه دهید یافتن هسته را کنترل کند
  • سفت‌افزاری را مشخص کرده و اشاره‌ای به هسته برای بوت شدن ارسال کنید
  • بوت مستقیم تصویر هسته
  • بارگذاری دستی فایل‌ها در فضای آدرس مهمان

روش سوم برای آزمایش سریع هسته‌ها مفید است، اما از آنجا که سفت‌افزاری وجود ندارد تا اطلاعات پیکربندی را به هسته منتقل کند، سخت‌افزار یا باید قابل کاوش (probeable) باشد، هسته برای همان پیکربندی دقیق ساخته شده باشد، یا داده‌های پیکربندی (مانند یک داده باینری DTB) به آن ارسال شود که به هسته اعلام کند به چه درایورهایی نیاز دارد. این جزئیات دقیق اغلب وابسته به سخت‌افزار است.

روش آخر عمومی‌ترین روش بارگذاری تصاویر در فضای آدرس مهمان است و بیشتر برای توسعه بر روی سخت‌افزار خام (bare metal) استفاده می‌شود، جایی که بردارهای بازنشانی (reset vectors) پردازنده در نظر گرفته می‌شوند.

برای ماشین‌های x86 و برخی از معماری‌های دیگر، -bios معمولاً با هر آنچه به آن داده شود به درستی عمل می‌کند. برای سایر ماشین‌ها، گزینهٔ سخت‌گیرانه‌تر -pflash نیازمند تصویری است که اندازه آن متناسب با دستگاه فلش برای نوع ماشین مشخص‌شده باشد.

لطفاً برای مستندات دقیق‌تر، بخش QEMU System Emulator Targets <#system-targets-ref> راهنما را ببینید.

نام فایل مربوط به BIOS را تنظیم می‌کند.
استفاده از file به عنوان یک تصویر فلش موازی (parallel flash).

گزینه‌های هسته برای کار با هسته‌های لینوکس طراحی شده‌اند، هرچند موارد دیگر (مانند هایپروایزرها) نیز می‌توانند به عنوان یک تصویر اجرایی هسته بسته‌بندی شوند. قالب دقیق یک تصویر اجرایی معمولاً وابسته به معماری است.

روشی که هسته راه‌اندازی می‌شود (در چه آدرسی بارگذاری شود، چه اطلاعاتی در صورت وجود از طریق ثبات‌های CPU به آن منتقل شود، وضعیت سخت‌افزار هنگام راه‌اندازی، و غیره) نیز وابسته به معماری است. معمولاً این روش از مشخصاتی پیروی می‌کند که توسط هسته لینوکس برای نحوه راه‌اندازی هسته‌ها در آن معماری تعیین شده است.

استفاده از bzImage به عنوان تصویر هسته. هسته می‌تواند یک هسته لینوکس یا در قالب multiboot باشد.
استفاده از 'shim.efi' برای بوت کردن هسته
استفاده از cmdline به عنوان خط فرمان هسته
استفاده از file به عنوان دیسک رم اولیه (initial ram disk).
این نحو تنها با multiboot دردسترس است.

استفاده از file1 و file2 به عنوان ماژول‌ها و ارسال arg=foo به عنوان پارامتر به ماژول نخست. ویرگول‌ها را می‌توان در پارامترهای ماژول با دو بار تکرار کردنشان در خط فرمان نادیده‌گردانی (escape) کرد:

فقط Multiboot. استفاده از bzImage به عنوان ماژول نخست با "earlyprintk=xen,keep root=/dev/xvda1" به عنوان خط فرمان آن، و initrd.img به عنوان دومین ماژول.
استفاده از file به عنوان تصویر دودویی درخت دستگاه (dtb) و ارسال آن به هسته هنگام بوت.

در نهایت، می‌توانید تصاویر را به صورت دستی مستقیماً در فضای آدرس مهمان بارگذاری کنید. این روش بیشتر برای توسعه‌دهندگانی مفید است که از پیش چیدمان مهمان خود را می‌دانند و اطمینان حاصل می‌کنند که هنگام اجرای بردار بازنشانی (reset vector) اتفاق معقولی رخ خواهد داد.

بارگذار عمومی را می‌توان با استفاده از دستگاه loader فراخوانی کرد:

-device loader,addr=<addr>,data=<data>,data-len=<data-len>[,data-be=<data-be>][,cpu-num=<cpu-num>]

همچنین guest loader نیز وجود دارد که به شیوه‌ای مشابه عمل می‌کند اما DTB را تغییر می‌دهد تا هایپروایزری که از طریق -kernel بارگذاری شده است بتواند مکان تصویر مهمان را بیابد:

-device guest-loader,addr=<addr>[,kernel=<path>,[bootargs=<arguments>]][,initrd=<path>].SS گزینه‌های اشکال‌زدایی/پیشرفته (Debug/Expert options)

تنظیم خط‌مشی برای مدیریت رابط‌های مدیریتی منسوخ‌شده (آزمایشی):
پذیرش دستورات و آرگومان‌های منسوخ‌شده
رد دستورات و آرگومان‌های منسوخ‌شده
فروپاشی (Crash) در هنگام مواجهه با دستورات و آرگومان‌های منسوخ‌شده
ارسال نتایج و رویدادهای دستورات منسوخ‌شده
پنهان‌سازی نتایج و رویدادهای دستورات منسوخ‌شده

محدودیت: تنها جنبه‌های نحوی QMP را پوشش می‌دهد.

تنظیم خط‌مشی برای مدیریت رابط‌های مدیریتی ناپایدار (آزمایشی):
پذیرش دستورات و آرگومان‌های ناپایدار
رد دستورات و آرگومان‌های ناپایدار
فروپاشی در هنگام مواجهه با دستورات و آرگومان‌های ناپایدار
ارسال نتایج و رویدادهای دستورات ناپایدار
پنهان‌سازی نتایج و رویدادهای دستورات ناپایدار

محدودیت: تنها جنبه‌های نحوی QMP را پوشش می‌دهد.

افزودن مدخل نام‌گذاری‌شده fw_cfg با محتویات برگرفته از فایل file. اگر نام فایل حاوی کاما است، باید آن را دو بار تکرار کنید (برای نمونه، "file=my,,file" برای استفاده از فایل "my,file").
افزودن مدخل نام‌گذاری‌شده fw_cfg با محتویات برگرفته از رشته str. اگر رشته حاوی کاما است، باید آن را دو بار تکرار کنید (برای نمونه، "string=my,,string" برای استفاده از فایل "my,string").

نویسه پایانی NUL در محتویات str به عنوان بخشی از داده‌های آیتم fw_cfg لحاظ نخواهد شد. برای درج محتویات حاوی نویسه‌های NUL درونی، باید از پارامتر file استفاده کنید.

مدخل‌های fw_cfg توسط QEMU به سیستم‌عامل مهمان منتقل می‌شوند.

مثال:

-fw_cfg name=opt/com.mycompany/blob,file=./my_blob.bin

یک مدخل fw_cfg به نام opt/com.mycompany/blob با محتویاتی از

هدایت درگاه سریال مجازی به دستگاه نویسه‌ای (character device) میزبان dev. دستگاه پیش‌فرض در حالت گرافیکی vc و در حالت غیرگرافیکی stdio است.

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

می‌توانید از -serial none برای جلوگیری از ایجاد دستگاه‌های سریال پیش‌فرض استفاده کنید.

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

کنسول مجازی. به صورت اختیاری، می‌توان عرض و ارتفاع را بر حسب پیکسل مشخص کرد:
vc:800x600

همچنین امکان تعیین عرض یا ارتفاع بر حسب نویسه وجود دارد:

vc:80Cx24C
[تنها در لینوکس] شبه‌ترمینال (یک PTY جدید به طور خودکار اختصاص می‌یابد).

در صورت مشخص شدن path، QEMU یک پیوند نمادین (symlink) در آن مکان ایجاد می‌کند که به دستگاه PTY جدید اشاره دارد.

این کار از نیاز به پرس‌وجو از مانیتور QMP یا HMP برای یافتن مسیر دستگاه PTY جدید جلوگیری می‌کند.

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

هیچ دستگاهی اختصاص داده نمی‌شود. توجه داشته باشید برای نوع ماشین‌هایی که سیستم‌هایی با حضور دائمی دستگاه سریال در سخت‌افزار واقعی را شبیه‌سازی می‌کنند، این ممکن است معادل گزینه null باشد، بدین صورت که دستگاه سریال همچنان وجود دارد اما تمام خروجی‌ها دور ریخته می‌شوند. برای بردهایی که تعداد درگاه‌های سریال واقعاً متغیر است، این گزینه از ایجاد دستگاه جلوگیری می‌کند.
سیستم‌عامل مهمان دستگاه UART یا سریال را در ماشین حاضر می‌بیند، اما تمام خروجی‌ها دور ریخته شده و هیچ ورودی وجود ندارد. این مفهوم معادل هدایت خروجی به /dev/null است.
استفاده از یک دستگاه نویسه‌ای نام‌گذاری‌شده که با گزینه -chardev تعریف شده است.
/dev/XXX
[تنها در لینوکس] استفاده از tty میزبان، به عنوان مثال /dev/ttyS0. پارامترهای درگاه سریال میزبان مطابق با پارامترهای شبیه‌سازی‌شده تنظیم می‌شوند.
/dev/parportN
[تنها در لینوکس، فقط درگاه موازی] استفاده از درگاه موازی N میزبان. در حال حاضر امکان استفاده از قابلیت‌های درگاه موازی SPP و EPP وجود دارد.
نوشتن خروجی در filename. هیچ نویسه‌ای قابل خواندن نیست.
[تنها در یونیکس] ورودی/خروجی استاندارد
لوله نام‌گذاری‌شده (named pipe) filename
[تنها در ویندوز] استفاده از درگاه سریال n میزبان
این گزینه UDP Net Console را پیاده‌سازی می‌کند. در صورتی که remote_host یا src_ip مشخص نشوند، پیش‌فرض آن‌ها 0.0.0.0 خواهد بود. در صورت عدم تعیین src_port، یک درگاه تصادفی به طور خودکار انتخاب می‌شود.

اگر صرفاً یک کنسول ساده فقط‌خواندنی می‌خواهید، می‌توانید از netcat یا nc استفاده کنید؛ با اجرای QEMU با: -serial udp::4555 و nc به صورت: nc -u -l -p 4555. هر زمان که QEMU چیزی روی آن درگاه بنویسد، در نشست netconsole نمایان خواهد شد.

اگر قصد دارید نویسه‌ها را از طریق netconsole بازگردانید یا می‌خواهید QEMU را مکرراً متوقف و راه‌اندازی کنید، باید کاری کنید که QEMU هر بار با استفاده از دستوری مانند -serial udp::4555@:4556 از همان درگاه مبدا یکسان استفاده کند. روش دیگر، استفاده از نسخه وصله‌شده‌ای از netcat است که می‌تواند به یک درگاه TCP گوش دهد و نویسه‌ها را از طریق udp ارسال و دریافت کند. اگر نسخه‌ای وصله‌شده از netcat دارید که telnet remote echo و انتقال تک‌نویسه‌ای (single char) را فعال می‌کند، می‌توانید از گزینه‌های زیر برای راه‌اندازی یک بازهدایت‌کننده netcat استفاده کنید تا به telnet روی درگاه 5555 اجازه دسترسی به درگاه QEMU داده شود.

گزینه‌های QEMU: -serial udp::4555@:4556
گزینه‌های netcat:
-u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
گزینه‌های telnet:
localhost 5555
کنسول شبکه TCP دارای دو حالت عملیاتی است. می‌تواند ورودی/خروجی (I/O) سریال را به یک مکان ارسال کند یا منتظر برقراری اتصال از یک مکان بماند. به‌طور پیش‌فرض، کنسول شبکه TCP به host در port ارسال می‌شود. اگر از گزینه server=on استفاده کنید، QEMU پیش از ادامه کار منتظر می‌ماند تا یک برنامه کلاینت سوکت به پورت متصل شود، مگر اینکه گزینه wait=on|off مشخص شده باشد. گزینه nodelay=on|off الگوریتم بافرینگ Nagle را غیرفعال می‌کند. گزینه reconnect-ms فقط زمانی اعمال می‌شود که server=no تنظیم شده باشد؛ در این حالت اگر اتصال قطع شود، تلاش می‌کند در بازه زمانی تعیین‌شده دوباره متصل شود. اگر host حذف شود، 0.0.0.0 فرض می‌شود. در هر لحظه تنها یک اتصال TCP پذیرفته می‌شود. می‌توانید از telnet=on برای اتصال به دستگاه نویسه‌ای (character device) متناظر استفاده کنید.
مثال برای ارسال کنسول tcp به 192.168.0.2 در پورت 4444
-serial <tcp:192.168.0.2:4444>
مثال برای گوش دادن و انتظار برای اتصال در پورت 4444
-serial <tcp::4444,server=on>
مثال برای گوش دادن روی IP 192.168.0.100 پورت 4444 بدون انتظار
-serial <tcp:192.168.0.100:4444,server=on,wait=off>
پروتکل telnet به‌جای سوکت‌های خام tcp استفاده می‌شود. گزینه‌ها دقیقاً مانند حالتی کار می‌کنند که -serial tcp را مشخص کرده باشید. تفاوت در این است که پورت با استفاده از مذاکره گزینه‌های telnet، مانند یک سرور یا کلاینت telnet عمل می‌کند. این کار همچنین به شما اجازه می‌دهد تا در صورت استفاده از telnetای که از ارسال توالی break پشتیبانی می‌کند، توالی MAGIC_SYSRQ را ارسال کنید. معمولاً در telnet یونیکس این کار با Control-] و سپس تایپ "send break" و فشردن کلید اینتر انجام می‌شود.
پروتکل WebSocket به‌جای سوکت خام tcp استفاده می‌شود. پورت به عنوان یک سرور WebSocket عمل می‌کند. حالت کلاینت پشتیبانی نمی‌شود.
یک سوکت دامنه یونیکس (unix domain socket) به‌جای سوکت tcp استفاده می‌شود. این گزینه مانند حالتی کار می‌کند که -serial tcp را مشخص کرده باشید، به جز اینکه از مسیر سوکت دامنه یونیکس برای اتصال‌ها استفاده می‌شود.
این یک گزینه ویژه است که اجازه می‌دهد مانیتور روی یک درگاه سریال دیگر تسهیم (multiplex) شود. دسترسی به مانیتور با کلیدهای ترتیبی Control-a و سپس فشردن c امکان‌پذیر است. dev_string باید یکی از دستگاه‌های سریال مشخص‌شده در بالا باشد. یک مثال برای تسهیم مانیتور روی یک سرور telnet که در پورت 4444 گوش می‌دهد:

-serial mon:telnet::4444,server=on,wait=off

هنگامی که مانیتور به این روش روی stdio تسهیم می‌شود، دیگر کلید Ctrl+C باعث خاتمه QEMU نخواهد شد، بلکه به سیستم‌عامل میهمان هدایت می‌شود.

دستگاه بریل. این گزینه از BrlAPI برای نمایش خروجی بریل روی یک دستگاه واقعی یا مجازی استفاده می‌کند.
ماوس سریال سه کلیده. سیستم‌عامل میهمان را برای استفاده از پروتکل Microsoft پیکربندی کنید.
تغییر مسیر درگاه موازی مجازی به دستگاه میزبان dev (همان دستگاه‌های درگاه سریال). در میزبان‌های لینوکس، می‌توان از /dev/parportN برای استفاده از دستگاه‌های سخت‌افزاری متصل به درگاه موازی متناظر در میزبان استفاده کرد.

این گزینه می‌تواند چندین بار برای شبیه‌سازی تا ۳ درگاه موازی استفاده شود.

برای غیرفعال کردن همه درگاه‌های موازی از -parallel none استفاده کنید.

تغییر مسیر مانیتور به دستگاه میزبان dev (همان دستگاه‌های درگاه سریال). دستگاه پیش‌فرض در حالت گرافیکی vc و در حالت غیرگرافیکی stdio است. برای غیرفعال کردن مانیتور پیش‌فرض از -monitor none استفاده کنید.

استفاده از -monitor dev یک تسهیل نحوی برای ایجاد یک دستگاه نویسه‌ای از dev و جفت کردن آن با -object monitor-hmp است. به هر دو دستگاه نویسه‌ای و شیء مانیتور یک شناسه (ID) به صورت compat_monitorNNN اختصاص می‌یابد که در آن NNN یک شمارنده از 0 است.

مانند -monitor است، اما در حالت 'control' باز می‌شود. برای مثال، جهت در دسترس قرار دادن QMP روی پورت 4444 در localhost:
-qmp tcp:localhost:4444,server=on,wait=off

استفاده از -qmp dev یک تسهیل نحوی برای ایجاد یک دستگاه نویسه‌ای از dev و جفت کردن آن با -object monitor-qmp است. به هر دو دستگاه نویسه‌ای و شیء مانیتور یک شناسه به صورت compat_monitorNNN اختصاص می‌یابد که در آن NNN یک شمارنده از 0 است.

مانند -qmp است، اما از قالب‌بندی خوانای JSON استفاده می‌کند.
راه‌اندازی یک مانیتور متصل به chardev با نام name. QEMU از دو مانیتور پشتیبانی می‌کند: Human Monitor Protocol (HMP؛ برای تعامل کاربر انسان)، و QEMU Monitor Protocol (QMP؛ یک پروتکل بر پایه JSON RPC). پیش‌فرض HMP است؛ مقدار mode=control به‌جای آن QMP را انتخاب می‌کند. گزینه pretty فقط زمانی معتبر است که mode=control باشد، که با فعال کردن چاپ خوانای JSON خواندن و اشکال‌زدایی را برای انسان آسان‌تر می‌کند.

برای مثال:

-chardev socket,id=mon1,host=localhost,port=4444,server=on,wait=off \
-mon chardev=mon1,mode=control,pretty=on

مانیتور QMP را روی پورت 4444 در localhost به همراه چاپ زیبا فعال می‌کند.

استفاده از -mon mode=readline یک تسهیل نحوی منسوخ‌شده برای گزینه جدید -object monitor-hmp است، که هر بار استفاده از آن یک شیء با شناسه compat_monitorNNN ایجاد می‌کند که در آن NNN یک شمارنده شروع شونده از 0 است.

استفاده از -mon mode=control یک تسهیل نحوی منسوخ‌شده برای گزینه جدید -object monitor-qmp است، که هر بار استفاده از آن یک شیء با شناسه compat_monitorNNN ایجاد می‌کند که در آن NNN یک شمارنده شروع شونده از 0 است.

تغییر مسیر کنسول اشکال‌زدایی به دستگاه میزبان dev (همان دستگاه‌های درگاه سریال). کنسول اشکال‌زدایی یک درگاه I/O است که معمولاً پورت 0xe9 است؛ نوشتن در این درگاه I/O خروجی را به این دستگاه ارسال می‌کند. دستگاه پیش‌فرض در حالت گرافیکی vc و در حالت غیرگرافیکی stdio است.
ذخیره شناسه فرایند (PID) مربوط به فرایند QEMU در file. در صورتی که QEMU را از طریق یک اسکریپت اجرا می‌کنید، این گزینه مفید است.
متوقف کردن موقت QEMU برای پیکربندی تعاملی پیش از ایجاد ماشین، که امکان پرس‌وجو و پیکربندی ویژگی‌های مؤثر بر مقداردهی اولیه ماشین را فراهم می‌سازد. از دستور QMP با عنوان 'x-exit-preconfig' برای خروج از وضعیت preconfig و رفتن به وضعیت بعدی استفاده کنید (یعنی اجرای میهمان در صورتی که -S استفاده نشده باشد، یا مکث بار دوم در صورت استفاده از -S). این گزینه آزمایشی است.
در زمان راه‌اندازی CPU را آغاز نکن (باید در مانیتور 'c' را تایپ کنید).
اجرای qemu به همراه راهنمایی‌هایی درباره تخصیص بیش از حد منابع میزبان (host resource overcommit). حالت پیش‌فرض بر این فرض استوار است که میزبان همه منابع را بیش از حد تخصیص می‌دهد..sp قفل‌کردن حافظهٔ qemu و مهمان را می‌توان از طریق mem-lock=on یا mem-lock=on-fault فعال کرد (به‌طور پیش‌فرض غیرفعال است). این ویژگی هنگامی کار می‌کند که حافظهٔ میزبان بیش‌از‌حد تخصیص نیافته باشد (overcommit نشده باشد) و بدترین حالت تأخیر را برای مهمان کاهش می‌دهد. گزینهٔ on-fault برای کاهش ردپای حافظه بهتر است چرا که تخصیص‌ها را تنبل (lazy) می‌سازد، اما با این وجود صفحه‌ها پس از رخ دادن نقص (fault) توسط مهمان یا QEMU، در جای خود قفل می‌شوند. توجه داشته باشید که این دو گزینه مانعة‌الجمع هستند.

توانایی مهمان برای مدیریت وضعیت توان پردازنده‌های میزبان (که باعث افزایش تأخیر برای سایر فرایندها روی همان پردازندهٔ میزبان شده، اما تأخیر را برای مهمان کاهش می‌دهد) می‌تواند از طریق cpu-pm=on فعال شود (به‌طور پیش‌فرض غیرفعال است). این حالت زمانی بهترین کارایی را دارد که CPU میزبان بیش‌از‌حد تخصیص داده نشده باشد. در صورت استفاده، تخمین‌های میزبان از چرخه‌های پردازنده و مصرف توان نادرست خواهند بود، چرا که زمان بیکاری (idle) مهمان را در نظر نمی‌گیرند.

پذیرش یک اتصال gdb روی دستگاه dev (فصل GDB usage <#gdb-usage> در راهنمای کاربران شبیه‌سازی سیستم را ببینید). توجه داشته باشید که این گزینه اجرای QEMU را متوقف نمی‌کند -- اگر می‌خواهید QEMU تا زمانی که با gdb متصل نشده‌اید و دستور continue را صادر نکرده‌اید مهمان را آغاز نکند، باید گزینهٔ -S را نیز به QEMU ارسال کنید.

معمول‌ترین پیکربندی، گوش دادن روی یک سوکت محلی TCP است:

-gdb tcp::3117

اما می‌توانید backendهای دیگری را نیز مشخص کنید؛ UDP، شبه TTY، یا حتی stdio همگی موارد استفادهٔ معقولی هستند. برای مثال، یک اتصال stdio به شما اجازه می‌دهد QEMU را از درون gdb آغاز کرده و اتصال را از طریق یک لوله (pipe) برقرار کنید:

(gdb) target remote | exec qemu-system-x86_64 -gdb stdio ...
کوتاه‌نوشتی برای -gdb <tcp::1234>، یعنی باز کردن یک gdbserver روی درگاه TCP به شمارهٔ 1234 (فصل GDB usage <#gdb-usage> در راهنمای کاربران شبیه‌سازی سیستم را ببینید).
فعال‌سازی لاگ‌برداری از موارد مشخص‌شده. برای دیدن فهرست موارد لاگ از '-d help' استفاده کنید.
خروجی دادن لاگ در logfile به جای stderr
فیلتر کردن خروجی اشکال‌زدایی تنها به موارد مرتبط با یک محدوده از نشانی‌های مقصد. مشخصهٔ فیلتر می‌تواند start+size، start-size یا start..end باشد که در آن start، end و size نشانی‌ها و اندازه‌های مورد نیاز هستند. برای مثال:
-dfilter 0x8000..0x8fff,0xffffffc000080000+0x200,0xffffffc000060000-0x1000

خروجی را برای هر کدی در بلوک با اندازهٔ 0x1000 که از 0x8000 شروع می‌شود، بلوک با اندازهٔ 0x200 که از 0xffffffc000080000 شروع می‌شود، و بلوک دیگری با اندازهٔ 0x1000 که از 0xffffffc00005f000 شروع می‌شود، تخلیه (dump) خواهد کرد.

اجبار مهمان به استفاده از یک تولیدکنندهٔ اعداد شبه‌تصادفی معین (deterministic)، که با number مقداردهی اولیه (seed) شده است. این گزینه بر روال‌های رمزنگاری درون میزبان تأثیری ندارد.
تنظیم دایرکتوری برای BIOS، VGA BIOS و نگاشت کلیدها (keymaps).

برای فهرست کردن تمام دایرکتوری‌های داده، از -L help استفاده کنید.

فعال‌سازی پشتیبانی از مجازی‌سازی کامل KVM. این گزینه تنها در صورتی در دسترس است که پشتیبانی KVM در زمان کامپایل فعال شده باشد.
مشخص کردن شناسهٔ دامنهٔ مهمان xen (فقط XEN).
اتصال به دامنهٔ موجود xen. ابزار libxl هنگام راه‌اندازی QEMU از این گزینه استفاده خواهد کرد (فقط XEN). محدود کردن مجموعهٔ عملیات‌های دردسترس xen به شناسهٔ دامنهٔ مشخص‌شده (فقط XEN).
خروج به جای راه‌اندازی مجدد (reboot).
هنگام خاموش شدن مهمان از QEMU خارج نشوید، بلکه فقط شبیه‌سازی را متوقف کنید. این به عنوان مثال اجازه می‌دهد برای اعمال تغییرات روی تصویر دیسک، به محیط monitor بروید.
پارامتر action برای تغییر رفتار پیش‌فرض QEMU در زمان رخ دادن رویدادهای خاص مهمان به کار می‌رود. این پارامتر یک روش عمومی برای تعیین رفتارهایی فراهم می‌کند که توسط پارامترهای -no-reboot و -no-shutdown تغییر می‌یابند.

مثال‌ها:

-action panic=none -action reboot=shutdown,shutdown=pause -device i6300esb -action watchdog=pause

شروع بلافاصله با یک وضعیت ذخیره‌شده (loadvm در monitor)
دیمن کردن فرایند QEMU پس از مقداردهی اولیه. QEMU تا زمانی که برای دریافت اتصالات روی هر یک از دستگاه‌های خود آماده نباشد، از ورودی/خروجی استاندارد جدا نخواهد شد. این گزینه روشی مفید برای برنامه‌های بیرونی است تا QEMU را بدون مواجهه با شرایط رقابتی (race conditions) در زمان مقداردهی اولیه اجرا کنند.
بارگذاری محتوای file به عنوان یک option ROM. این گزینه برای بارگذاری مواردی مانند EtherBoot مفید است.
تعیین base به صورت utc یا localtime تا RTC به‌ترتیب با زمان فعلی UTC یا محلی شروع شود. localtime برای تاریخ صحیح در MS-DOS یا Windows مورد نیاز است. برای شروع در یک نقطهٔ زمانی خاص، datetime را در قالب 2006-06-17T16:01:21 یا 2006-06-17 مشخص کنید. مقدار پایهٔ پیش‌فرض UTC است.

به‌طور پیش‌فرض RTC توسط زمان سیستم میزبان هدایت می‌شود. این امر اجازه می‌دهد از RTC به عنوان یک ساعت مرجع دقیق در داخل مهمان استفاده شود، به‌ویژه اگر زمان میزبان به آرامی از یک ساعت مرجع خارجی دقیق، مثلاً از طریق NTP، پیروی کند. اگر می‌خواهید زمان مهمان را از میزبان جدا کنید، می‌توانید در عوض clock را روی rt تنظیم کنید که در صورت پشتیبانی میزبان، یک ساعت یکنواخت (monotonic) میزبان فراهم می‌کند. حتی برای جلوگیری از پیشروی RTC در طول حالت تعلیق (suspension)، می‌توانید clock را روی vm (ساعت مجازی) تنظیم کنید. استفاده از 'clock=vm' به‌ویژه در حالت icount برای حفظ رفتار قطعی (determinism) توصیه می‌شود؛ با این حال، توجه داشته باشید که در حالت icount سرعت ساعت مجازی متغیر است و به‌طور کلی می‌تواند با ساعت میزبان متفاوت باشد.

اگر با مشکلات انحراف زمان (time drift)، به‌ویژه با ACPI HAL مربوط به Windows مواجه هستید، driftfix را فعال کنید (فقط مقصدهای i386). این گزینه تلاش می‌کند مشخص کند چه تعداد وقفهٔ تایمر توسط مهمان Windows پردازش نشده است و آن‌ها را دوباره تزریق (re-inject) خواهد کرد.

فعال‌سازی شمارندهٔ مجازی دستورالعمل‌ها. پردازندهٔ مجازی در هر 2^N نانوثانیه از زمان مجازی، یک دستورالعمل را اجرا می‌کند. اگر auto مشخص شده باشد، سرعت پردازندهٔ مجازی به‌طور خودکار تنظیم می‌شود تا زمان مجازی در محدودهٔ چند ثانیه از زمان واقعی باقی بماند.

توجه داشته باشید اگرچه این گزینه می‌تواند رفتار معین و قطعی ارائه دهد، اما شبیه‌سازی دقیق چرخه‌ای (cycle accurate) فراهم نمی‌کند. پردازنده‌های مدرن حاوی هسته‌های superscalar با اجرای نامرتب (out of order) و سلسله‌مراتب حافظهٔ نهان پیچیده هستند. تعداد دستورالعمل‌های اجراشده اغلب همبستگی اندکی با عملکرد واقعی دارد یا اصلاً همبستگی ندارد.

هنگامی که پردازندهٔ مجازی در حالت خواب باشد، زمان مجازی با سرعت پیش‌فرض پیش خواهد رفت مگر اینکه sleep=off مشخص شده باشد. با sleep=off، هر زمان که پردازندهٔ مجازی به حالت خواب برود، زمان مجازی فوراً به سررسید تایمر بعدی می‌پرد و در صورتی که هیچ تایمری فعال نباشد، پیش نخواهد رفت. این رفتار زمان‌های اجرای قطعی را از دیدگاه مهمان فراهم می‌کند. در صورت فعال بودن icount، مقدار پیش‌فرض sleep=on است. sleep=off نمی‌تواند همراه با shift=auto یا align=on استفاده شود.

گزینهٔ align=on الگوریتم تأخیر را فعال می‌کند که تلاش خواهد کرد ساعت میزبان و ساعت مجازی را همگام کند. هدف این است که مهمان با فرکانس واقعی تحمیل‌شده توسط گزینهٔ shift اجرا شود. هر زمان که ساعت مهمان از ساعت میزبان عقب بماند و align=on مشخص شده باشد، پیامی به کاربر چاپ می‌کنیم تا او را از تأخیر مطلع کنیم. در حال حاضر این گزینه زمانی که shift برابر با auto باشد کار نمی‌کند. نکته: الگوریتم همگام‌سازی برای مقادیری از shift کار خواهد کرد که در آن‌ها ساعت مهمان جلوتر از ساعت میزبان حرکت کند. این وضعیت معمولاً زمانی رخ می‌دهد که مقدار shift بالا باشد (اینکه چقدر بالا باشد به ماشین میزبان بستگی دارد). در صورت فعال بودن icount، مقدار پیش‌فرض align=off است..sp هنگامی که گزینه rr مشخص شود، قابلیت ضبط/بازپخش قطعی (deterministic record/replay) فعال می‌شود. گزینه rrfile= نیز باید برای مشخص کردن مسیر لاگ بازپخش ارائه شود. در حالت ضبط (record)، داده‌ها در این فایل نوشته می‌شوند و در حالت بازپخش (replay)، از آن خوانده می‌شوند. اگر گزینه rrsnapshot داده شود، نام یک اسنپ‌شات ماشین مجازی را تعیین می‌کند. در حالت ضبط، یک اسنپ‌شات جدید ماشین مجازی با نام داده‌شده در شروع ضبط اجرا ایجاد می‌شود. در حالت بازپخش، این گزینه نام اسنپ‌شاتی را مشخص می‌کند که برای بارگذاری وضعیت اولیه ماشین مجازی به کار می‌رود.

این کنش کنترل می‌کند که هنگام به پایان رسیدن زمان‌سنج سگ نگهبان (watchdog timer)، کیومو (QEMU) چه کاری انجام دهد. پیش‌فرض reset است (راه‌اندازی مجدد اجباری مهمان). کنش‌های ممکن دیگر عبارتند از: shutdown (تلاش برای خاموش کردن آرام مهمان)، poweroff (خاموش کردن اجباری مهمان)، inject-nmi (تزریق یک NMI به مهمان)، pause (متوقف کردن موقت مهمان)، debug (چاپ پیام اشکال‌زدایی و ادامه دادن)، یا none (کاری انجام نده).

توجه داشته باشید که کنش shutdown مستلزم آن است که سیستم‌عامل مهمان به سیگنال‌های ACPI پاسخ دهد، که ممکن است در موقعیت‌هایی که زمان‌سنج سگ نگهبان منقضی می‌شود قادر به انجام آن نباشد؛ بنابراین -watchdog-action shutdown برای استفاده در محیط‌های عملیاتی توصیه نمی‌شود.

مثال‌ها:

-device i6300esb -watchdog-action pause

نویسه گریز (escape character) استفاده‌شده برای رفتن به مانیتور هنگام استفاده از اشتراک‌گذاری مانیتور و درگاه سریال را تغییر می‌دهد. در صورت استفاده از گزینه -nographic مقدار پیش‌فرض 0x01 است. مقدار 0x01 معادل فشردن Control-a است. می‌توانید نویسه دیگری را از میان کلیدهای کنترلی اسکی (ASCII) انتخاب کنید که در آن ۱ تا ۲۶ به Control-a تا Control-z نگاشت می‌شوند. برای نمونه، می‌توانید از هر یک از موارد زیر برای تغییر نویسه گریز به Control-t استفاده کنید.

-echr 0x14; -echr 20

گزینه -incoming کانال مهاجرت را برای یک مهاجرت ورودی (incoming migration) تعیین می‌کند. می‌توان از آن چندین بار برای تعیین چندین نوع کانال مهاجرت استفاده کرد. نوع کانال در <channel> مشخص می‌شود، یا برای سایر اشکال -incoming برابر با 'main' است. اگر چندین گزینه -incoming برای یک نوع کانال مشخص شود، آخرین مورد اولویت دارد.

آماده‌سازی برای مهاجرت ورودی، گوش دادن روی درگاه tcp مشخص‌شده.
آماده‌سازی برای مهاجرت ورودی، گوش دادن روی سوکت unix مشخص‌شده.
پذیرش مهاجرت ورودی از یک توصیف‌گر فایل (file descriptor) داده‌شده.
پذیرش مهاجرت ورودی از یک فایل مشخص‌شده از مبدا offset. مقدار offset پسوندهای معمول اندازه یا پیشوند 0x را می‌پذیرد، اما نه هر دو را هم‌زمان.
پذیرش مهاجرت ورودی به عنوان خروجی از یک دستور خارجی مشخص‌شده.
پذیرش مهاجرت ورودی روی کانال مهاجرت. برای ساختار نحوی <channel>، مستندات QAPI مربوط به MigrationChannel را ببینید. مثال‌ها:
-incoming '{"channel-type": "main",
            "addr": { "transport": "socket",
                      "type": "unix",
                      "path": "my.sock" }}'
-incoming main,addr.transport=socket,addr.type=unix,addr.path=my.sock
منتظر ماندن برای مشخص شدن URI از طریق migrate_incoming. از مانیتور می‌توان برای تغییر تنظیمات (مانند پارامترهای مهاجرت) پیش از صدور دستور migrate_incoming به منظور اجازه شروع مهاجرت استفاده کرد.
تنها اجازه دادن به دستگاه‌های با قابلیت مهاجرت. دستگاه‌ها مجاز نخواهند بود که به وضعیتی بدون قابلیت مهاجرت وارد شوند.
دستگاه‌های پیش‌فرض ایجاد نشوند. به‌طور معمول، QEMU دستگاه‌های پیش‌فرضی مانند درگاه سریال، درگاه موازی، کنسول مجازی، دستگاه مانیتور، آداپتور VGA، درایو فلاپی و CD-ROM و غیره را تنظیم می‌کند. گزینه -nodefaults تمام آن دستگاه‌های پیش‌فرض را غیرفعال خواهد کرد.
تنظیم متغیر nvram اوپن‌بایوس (OpenBIOS) روی مقدار داده‌شده (فقط در PPC و SPARC).
qemu-system-sparc -prom-env 'auto-boot?=false' \
 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
qemu-system-ppc -prom-env 'auto-boot?=false' \
 -prom-env 'boot-device=hd:2,\yaboot' \
 -prom-env 'boot-args=conf=hd:2,\yaboot.conf'
فعال‌سازی حالت سمی‌هاستینگ (Semihosting) <#semihosting> (فقط در ARM، M68K، Xtensa، MIPS و RISC-V).

هشدار:

توجه داشته باشید که این به مهمان اجازه دسترسی مستقیم به سیستم‌فایل میزبان را می‌دهد، بنابراین تنها باید با یک سیستم‌عامل مهمان مورد اعتماد استفاده شود.

برای اطلاعات بیشتر در مورد امکاناتی که این گزینه فراهم می‌کند، مستندات گزینه -semihosting-config را ببینید.

فعال‌سازی و پیکربندی سمی‌هاستینگ (Semihosting) <#semihosting> (فقط در ARM، M68K، Xtensa، MIPS و RISC-V).

هشدار:

توجه داشته باشید که این به مهمان اجازه دسترسی مستقیم به سیستم‌فایل میزبان را می‌دهد، بنابراین تنها باید با یک سیستم‌عامل مهمان مورد اعتماد استفاده شود.
مشخص می‌کند که فراخوانی‌های semihosting به کجا فرستاده شوند، به QEMU (native) یا به GDB (gdb). مقدار پیش‌فرض auto است، که در طول نشست‌های اشکال‌زدایی به معنی gdb و در غیر این صورت native است.
ارسال خروجی به یک پسانه chardev برای خروجی native یا auto در زمانی که درون gdb نیست
به کدهایی که در فضای کاربری (userspace) مهمان اجرا می‌شوند اجازه دسترسی به واسط semihosting را می‌دهد. مقدار پیش‌فرض این است که تنها کدهای ممتاز (privileged) مهمان می‌توانند فراخوانی‌های semihosting را انجام دهند. توجه داشته باشید که تنظیم userspace=on تنها در صورتی باید استفاده شود که تمام کدهای مهمان مورد اعتماد باشند (برای مثال، در کدهای مورد آزمون روی سخت‌افزار خام [bare-metal]).
به کاربر اجازه می‌دهد آرگومان‌های ورودی را منتقل کند، و می‌تواند چندین بار برای ایجاد یک فهرست استفاده شود. روش قدیمی -kernel/-append برای ارسال خط فرمان هنوز برای سازگاری با نسخه‌های پیشین پشتیبانی می‌شود. اگر هر دو مورد --semihosting-config arg و -kernel/-append مشخص شده باشند، اولی به semihosting داده می‌شود زیرا همواره اولویت دارد.
فعال‌سازی فیلتر فراخوانی سیستم در حالت ۲ سِک‌کامپ (Seccomp mode 2). مقدار 'on' فیلتر کردن syscall را فعال کرده و 'off' آن را غیرفعال می‌کند. مقدار پیش‌فرض 'off' است.
فعال کردن فراخوانی‌های سیستمی منسوخ‌شده (Obsolete).TP elevateprivileges=string غیرفعال کردن فراخوان‌های سیستمی set*uid|gid
غیرفعال کردن *fork و execve
غیرفعال کردن وابستگی پردازه (process affinity) و اولویت زمان‌بند
خواندن پیکربندی دستگاه از file. این رویکرد زمانی مفید است که بخواهید پردازهٔ QEMU را با گزینه‌های خط فرمان متعددی اجرا کنید، اما نخواهید از محدودیت تعداد نویسه‌های خط فرمان فراتر بروید.
گزینهٔ -no-user-config باعث می‌شود QEMU هیچ‌یک از فایل‌های پیکربندی ارائه‌شده توسط کاربر در sysconfdir را بارگذاری نکند.
مشخص کردن گزینه‌های ردگیری (tracing).

[enable=]PATTERN

فعال‌سازی فوری رویدادهای منطبق با PATTERN (نام رویداد یا الگوی تطبیق glob). این گزینه تنها در صورتی در دسترس است که QEMU با پشتیبان ردگیری simple، log یا ftrace کامپایل شده باشد. برای تعیین چندین رویداد یا الگو، گزینهٔ -trace را چندین بار مشخص کنید.

از -trace help برای چاپ فهرستی از نام‌های نقاط ردگیری استفاده کنید.

events=FILE

فعال‌سازی فوری رویدادهای فهرست‌شده در FILE. این فایل باید در هر سطر شامل نام یک رویداد (همان‌طور که در فایل trace-events-all آمده است) باشد؛ الگوهای globbing نیز پذیرفته می‌شوند. این گزینه تنها در صورتی در دسترس است که QEMU با پشتیبان ردگیری simple، log یا ftrace کامپایل شده باشد.

file=FILE

ثبت ردگیری‌های خروجی در FILE. این گزینه تنها در صورتی در دسترس است که QEMU با پشتیبان ردگیری simple کامپایل شده باشد.
بارگذاری یک افزونه (plugin).
بارگذاری افزونهٔ داده‌شده از یک فایل کتابخانهٔ مشترک (shared library).
آرگومان ارسالی به افزونه. (می‌تواند چندین بار مشخص شود.)
تنظیم گزینه‌های چرخهٔ حیات پردازهٔ QEMU.

async-teardown=on آزادسازی و خاتمهٔ ناهمگام (asynchronous teardown) را فعال می‌کند. پردازهٔ جدیدی به نام "cleanup/<QEMU_PID>" در زمان راه‌اندازی با استفاده از clone ایجاد می‌شود که فضای آدرس را با پردازهٔ اصلی QEMU به اشتراک می‌گذارد. این پردازه منتظر خاتمهٔ کامل پردازهٔ اصلی QEMU می‌ماند و سپس خارج می‌شود. این ویژگی اجازه می‌دهد QEMU حتی در صورت حجیم بودن مهمان بسیار سریع خاتمه یابد، و پاکسازی فضای آدرس را به پردازهٔ cleanup واگذار کند. از آن‌جا که پردازهٔ cleanup در همان cgroups پردازهٔ اصلی QEMU مشترک است، محاسبهٔ مصرف منابع (accounting) به‌درستی انجام می‌شود. این قابلیت تنها زمانی کار می‌کند که پردازهٔ cleanup پیش از خاتمهٔ کامل پردازهٔ اصلی QEMU با سیگنال SIGKILL اجباراً متوقف نشود.

chroot=dir می‌تواند برای انجام chroot به شاخهٔ مشخص‌شده بلافاصله پیش از شروع اجرای مهمان استفاده شود. این گزینه به‌ویژه در ترکیب با user=... مفید است.

exit-with-parent=on باعث می‌شود در صورت خروج پردازهٔ والد QEMU، این پردازه نیز خارج شود. از این گزینه می‌توان هنگامی استفاده کرد که QEMU به عنوان یک ابزار مقید (captive appliance) اجرا می‌شود، جایی که طول عمر ابزار به پردازهٔ والد وابسته است. در صورتی که پردازهٔ والد دچار فروپاشی (crash) شود، QEMU همچنان پاکسازی می‌شود. این ویژگی تنها روی پلتفرم‌های Linux، FreeBSD و macOS کار می‌کند.

user=username یا user=uid:gid می‌تواند برای سلب دسترسی‌های کاربر ریشه (root) پیش از شروع اجرای مهمان به کار رود. QEMU از فراخوان‌های سیستمی setuid و setgid برای جابه‌جایی به هویت مشخص‌شده استفاده خواهد کرد. توجه داشته باشید که ساختار دستوری user=username همچنین مجموعهٔ کامل گروه‌های تکمیلی (supplementary groups) کاربر را اعمال می‌کند، در حالی که user=uid:gid تنها از گروه gid استفاده خواهد کرد.

کنترل قالب پیام خطا.
افزودن برچسب زمانی به ابتدای پیام‌ها. پیش‌فرض off است.
افزودن نام مهمان به ابتدای پیام‌ها، اما تنها در صورتی که گزینهٔ -name guest تنظیم شده باشد؛ در غیر این صورت این گزینه نادیده گرفته می‌شود. پیش‌فرض off است.
تخلیهٔ اطلاعات vmstate با کدگذاری json برای نوع ماشین فعلی در فایل file
فعال‌سازی نمایه‌سازی همگام‌سازی (synchronization profiling).
تولید یک فایل نگاشت (map) برای ابزارهای perf لینوکس که امکان تفکیک اطلاعات پایه‌ای نمایه‌سازی را به بلوک‌های اساسی (basic blocks) فراهم می‌کند.
تولید یک فایل dump برای ابزارهای perf لینوکس که بلوک‌های اساسی را به نام نمادها، شماره خطوط و کدهای کامپایل‌شده توسط JIT نگاشت می‌کند.
یک شیء جدید از نوع typename ایجاد می‌کند و ویژگی‌ها را به همان ترتیبی که مشخص شده‌اند تنظیم می‌نماید. توجه داشته باشید که ویژگی 'id' حتماً باید تنظیم شود. این اشیاء در مسیر '/objects' قرار می‌گیرند.
یک مانیتور بر بستر Human Monitor Protocol راه‌اندازی می‌کند که به chardev با شناسهٔ chardev_id متصل است.

پارامتر id یک شناسهٔ یکتا است که می‌تواند برای حذف پویای مانیتور در زمان اجرا به کار رود. توجه داشته باشید به مانیتورهایی که با استفاده از نحو قدیمی ایجاد شده‌اند، شناسه‌هایی مطابق با الگوی compat_monmitorNNN اختصاص می‌یابد. ترکیب نحو -object با نحو -monitor توصیه نمی‌شود.

پارامتر readline، که مقدار پیش‌فرض آن on است، مشخص می‌کند که آیا مانیتور قابلیت ویرایش خط (line editing) را فراهم کند یا خیر.

یک مانیتور بر بستر QEMU Monitor Protocol راه‌اندازی می‌کند که به chardev با شناسهٔ chardev_id متصل است.

پارامتر id یک شناسهٔ یکتا است که می‌تواند برای حذف پویای مانیتور در زمان اجرا به کار رود. توجه داشته باشید به مانیتورهایی که با استفاده از نحو قدیمی ایجاد شده‌اند، شناسه‌هایی مطابق با الگوی compat_monitorNNN اختصاص می‌یابد. ترکیب نحو -object با نحو -qmp و -qmp-pretty توصیه نمی‌شود.

پارامتر pretty، که مقدار پیش‌فرض آن off است، کنترل می‌کند که آیا پاسخ‌های مانیتور به‌صورت JSON چندخطی و با فاصله‌گذاری مناسب (pretty print) نمایش یابند یا اینکه به یک خط منفرد بدون فاصله‌های خالی اضافه محدود شوند.

پارامتر close-action، که مقدار پیش‌فرض آن none است، تعیین می‌کند هنگامی که اتصال به مانیتور توسط کاربر پایان می‌یابد، چه اتفاقی بیفتد. اگر روی delete تنظیم شود، شیء monitor-qmp و دستگاه کاراکتری مرتبط با آن هر دو بلافاصله حذف می‌شوند. این ویژگی می‌تواند زمانی مفید باشد که یک مانیتور اضافی برای کاری مشخص به‌صورت گرم متصل (hotplug) شده باشد و پس از اتمام باید جدا شود.

یک شیء پس‌زمینهٔ حافظه مبتنی بر فایل ایجاد می‌کند که می‌تواند برای پشتیبانی از RAM مهمان با صفحه‌های بزرگ (huge pages) استفاده شود.

پارامتر id یک شناسهٔ یکتا است که برای ارجاع به این ناحیهٔ حافظه در سایر پارامترها، مانند -numa، -device nvdimm و غیره استفاده خواهد شد.

گزینهٔ size اندازهٔ ناحیهٔ حافظه را مشخص می‌کند و پسوندهای رایج مانند 500M را می‌پذیرد.

گزینهٔ mem-path مسیر یک حافظهٔ اشتراکی (shared memory) یا نقطهٔ اتصال سیستم‌فایل huge page را ارائه می‌دهد.

گزینهٔ بولی share تعیین می‌کند که ناحیهٔ حافظه برای QEMU به‌صورت خصوصی علامت‌گذاری شود یا اشتراکی. حالت دوم به یک فرایند خارجی همکار اجازه می‌دهد به ناحیهٔ حافظهٔ QEMU دسترسی داشته باشد.

تنظیم share=on ممکن است در برخی شرایط بر توانایی پیکربندی اتصالات NUMA برای پس‌زمینهٔ حافظه اثر بگذارد؛ برای جزئیات بیشتر به Documentation/vm/numa_memory_policy.txt در درخت کد منبع هستهٔ لینوکس مراجعه کنید.

تنظیم گزینهٔ بولی discard-data روی on مشخص می‌کند که محتویات فایل می‌توانند هنگام خروج QEMU از بین بروند تا از انتقال غیرضروری داده‌ها به فایل پشتیبان جلوگیری شود. توجه داشته باشید که discard-data صرفاً یک بهینه‌سازی است و اگر QEMU به‌طور غیرمنتظره متوقف شود یا با سیگنال SIGKILL خاتمه یابد، ممکن است محتویات فایل را دور نریزد.

گزینهٔ بولی merge ادغام حافظه را که به نام MADV_MERGEABLE نیز شناخته می‌شود فعال می‌کند، تا قابلیت Kernel Samepage Merging صفحه‌ها را برای حذف داده‌های تکراری حافظه (deduplication) در نظر بگیرد.

تنظیم گزینهٔ بولی dump روی off حافظه را از تخلیهٔ حافظهٔ خرابی (core dump) مستثنی می‌کند. این ویژگی همچنین به عنوان MADV_DONTDUMP شناخته می‌شود.

گزینهٔ بولی prealloc پیش‌تخصیص حافظه را فعال می‌کند.

گزینهٔ host-nodes محدودهٔ حافظه را به فهرستی از گره‌های میزبان NUMA مقید می‌کند.

گزینهٔ policy سیاست NUMA را روی یکی از مقادیر زیر تنظیم می‌کند:

سیاست پیش‌فرض میزبان
ترجیح دادن فهرست گره‌های میزبان داده‌شده برای تخصیص
محدود کردن تخصیص حافظه به فهرست گره‌های میزبان داده‌شده
توزیع متناوب (interleave) تخصیص‌های حافظه میان فهرست گره‌های میزبان داده‌شده

گزینهٔ align هم‌ترازی آدرس پایه را هنگام فراخوانی mmap(2) روی mem-path توسط QEMU مشخص می‌کند و پسوندهای رایج مانند 2M را می‌پذیرد. برخی از فضاهای ذخیره‌سازی پس‌زمینه که با mem-path مشخص می‌شوند، به هم‌ترازی متفاوتی از هم‌ترازی پیش‌فرض مورد استفادهٔ QEMU نیاز دارند؛ برای نمونه، دستگاه DAX به نشانی /dev/dax0.0 به‌جای 4K به هم‌ترازی 2M نیاز دارد. در چنین مواردی، کاربران می‌توانند هم‌ترازی لازم را از طریق این گزینه تعیین کنند.

گزینهٔ offset آفست درون فایل مقصد را که ناحیه از آنجا شروع می‌شود مشخص می‌کند. می‌توانید از این پارامتر برای پشتیبانی از چند ناحیه با یک فایل واحد استفاده کنید.

گزینهٔ pmem مشخص می‌کند که آیا فایل پشتیبان مشخص‌شده توسط mem-path روی حافظهٔ پایدار میزبان قرار دارد که با استفاده از مدل برنامه‌نویسی SNIA NVM (مانند Intel NVDIMM) قابل دسترسی است یا خیر. اگر pmem روی 'on' تنظیم شده باشد، QEMU عملیات لازم را برای تضمین پایداری نوشتن‌های خود در mem-path انجام می‌دهد (مثلاً در شبیه‌سازی برچسب vNVDIMM و مهاجرت زنده). همچنین، فایل پس‌زمینه با پرچم MAP_SYNC نگاشت خواهد شد، که تضمین می‌کند متاداده‌های فایل برای mem-path در صورت خرابی میزبان یا قطع برق همگام بمانند. پرچم MAP_SYNC نیازمند پشتیبانی هم از جانب هستهٔ میزبان (از لینوکس 4.15 به بعد) و هم سیستم‌فایلِ mem-path متصل‌شده با گزینهٔ DAX است.

گزینهٔ readonly مشخص می‌کند که فایل پشتیبان به‌صورت فقط‌خواندنی یا خواندن-نوشتن (پیش‌فرض) باز شود.

گزینهٔ rom تعیین می‌کند که آیا یک حافظهٔ فقط‌خواندنی (ROM) ایجاد شود که توسط ماشین مجازی قابل تغییر نباشد یا خیر. هرگونه تلاش برای نوشتن روی چنین ROM رد خواهد شد. در بیشتر موارد، RAM عادی به‌جای ROM مورد نیاز است. با این حال، موارد استفادهٔ خاصی مانند NVDIMMهای فقط‌خواندنی (R/O) می‌توانند از ROM بهره ببرند. اگر روی on تنظیم شود، ROM ایجاد می‌کند؛ اگر روی off تنظیم شود، RAM قابل نوشتن ایجاد می‌کند؛ و اگر روی auto (پیش‌فرض) تنظیم شود، از مقدار گزینهٔ readonly استفاده می‌شود. این گزینه در وهلهٔ اول زمانی مفید است که بخواهیم در پیکربندی‌هایی که پیش از معرفی گزینهٔ rom به‌طور سنتی ROM ایجاد می‌کردند، RAM قابل نوشتن داشته باشیم: مانند الگوسازی ماشین مجازی (VM templating)، جایی که می‌خواهیم فایلی را به‌صورت فقط‌خواندنی باز کنیم (readonly=on) و حافظه را برای QEMU اختصاصی علامت بزنیم (share=off). برای این کاربرد، به‌جای ROM به RAM قابل نوشتن نیاز داریم و همچنین می‌خواهیم rom=off را تنظیم نماییم.

یک شیء پس‌زمینهٔ حافظه ایجاد می‌کند که می‌تواند برای پشتیبانی از RAM مهمان استفاده شود. اشیاء پس‌زمینهٔ حافظه کنترل بیشتری نسبت به گزینهٔ -m، که به‌طور سنتی برای تعریف RAM مهمان استفاده می‌شود، فراهم می‌کنند. لطفاً برای شرح گزینه‌ها به memory-backend-file مراجعه کنید.
یک شیء پس‌زمینهٔ فایل حافظهٔ ناشناس (anonymous) ایجاد می‌کند که به QEMU امکان می‌دهد حافظه را با یک فرایند خارجی به اشتراک بگذارد (برای نمونه هنگام استفاده از vhost-user). حافظه با memfd و قابلیت اختیاری مهروموم کردن (sealing) تخصیص می‌یابد. (فقط لینوکس)

گزینهٔ seal یک فایل مهروموم‌شده ایجاد می‌کند که مانع از تغییر اندازهٔ بیشتر حافظه در آینده می‌شود (به‌طور پیش‌فرض 'on').

گزینهٔ hugetlb مشخص می‌کند که فایلِ ایجادشده در سیستم‌فایل hugetlbfs قرار گیرد (از نسخهٔ 4.14 لینوکس). در صورت استفاده همراه با گزینهٔ hugetlb، گزینهٔ hugetlbsize اندازهٔ صفحهٔ hugetlb را در سیستم‌هایی که از چندین اندازهٔ صفحهٔ hugetlb پشتیبانی می‌کنند تعیین می‌کند (باید مقداری توانی از ۲ و مورد پشتیبانی سیستم باشد).

در برخی از نسخه‌های لینوکس، گزینهٔ hugetlb با گزینهٔ seal ناسازگار است (حداقل به لینوکس 4.16 نیاز دارد).

لطفاً برای شرح سایر گزینه‌ها به memory-backend-file مراجعه کنید.

گزینهٔ بولی share همراه با memfd به‌طور پیش‌فرض روی on قرار دارد..TP -object memory-backend-shm,id=id,merge=on|off,dump=on|off,share=on|off,prealloc=on|off,size=size,host-nodes=host-nodes,policy=default|preferred|bind|interleave یک شیء پس‌زمینهٔ حافظهٔ مشترک POSIX ایجاد می‌کند که به QEMU اجازه می‌دهد حافظه را با یک فرایند خارجی (مثلاً هنگام استفاده از vhost-user) به اشتراک بگذارد.

memory-backend-shm یک نسخهٔ قابل‌حمل‌تر و با قابلیت‌های کمتر نسبت به memory-backend-memfd است. بنابراین می‌توان آن را در هر سیستم POSIX، به‌ویژه زمانی که memfd پشتیبانی نمی‌شود، استفاده کرد.

لطفاً برای شرح گزینه‌ها به memory-backend-file مراجعه کنید.

گزینهٔ بولی share در shm به‌طور پیش‌فرض روشن (on) است. تنظیم آن روی off باعث بروز شکست هنگام تخصیص خواهد شد، زیرا توسط این پس‌زمینه پشتیبانی نمی‌شود.

یک پس‌زمینهٔ iommufd ایجاد می‌کند که امکان کنترل نگاشت DMA را از طریق دستگاه /dev/iommu فراهم می‌سازد.

پارامتر id یک شناسهٔ یکتا است که پیشانه‌ها (مانند vfio-pci یا vdpa) برای اتصال به پس‌زمینهٔ iommufd از آن استفاده خواهند کرد.

پارامتر fd یک توصیف‌گر فایل اختیاری از قبل بازشده حاصل از باز کردن /dev/iommu است. معمولاً iommufd میان تمام زیرسیستم‌ها به اشتراک گذاشته می‌شود که مزیت شمارش مراجع متمرکز را به همراه دارد.

یک پس‌زمینهٔ تولیدکنندهٔ اعداد تصادفی ایجاد می‌کند که آنتروپی را از توابع درونی QEMU به دست می‌آورد. پارامتر id یک شناسهٔ یکتا است که برای ارجاع به این پس‌زمینهٔ آنتروپی از دستگاه virtio-rng استفاده خواهد شد. به‌طور پیش‌فرض، دستگاه virtio-rng از این پس‌زمینهٔ RNG استفاده می‌کند.
یک پس‌زمینهٔ تولیدکنندهٔ اعداد تصادفی ایجاد می‌کند که آنتروپی را از یک دستگاه روی میزبان دریافت می‌نماید. پارامتر id یک شناسهٔ یکتا است که برای ارجاع به این پس‌زمینهٔ آنتروپی از دستگاه virtio-rng به کار می‌رود. پارامتر filename مشخص می‌کند که آنتروپی از چه فایلی دریافت شود و در صورت حذف شدن، مقدار پیش‌فرض آن /dev/urandom است.
یک پس‌زمینهٔ تولیدکنندهٔ اعداد تصادفی ایجاد می‌کند که آنتروپی را از یک دیمن خارجی در حال اجرا روی میزبان به دست می‌آورد. پارامتر id یک شناسهٔ یکتا است که برای ارجاع به این پس‌زمینهٔ آنتروپی از دستگاه virtio-rng استفاده خواهد شد. پارامتر chardev شناسهٔ یکتای یک پس‌زمینهٔ دستگاه نویسه‌ای است که اتصال به دیمن RNG را فراهم می‌کند.
یک شیء اعتبارنامهٔ ناشناس TLS ایجاد می‌کند که می‌تواند برای ارائهٔ پشتیبانی از TLS در پس‌زمینه‌های شبکه استفاده شود. پارامتر id یک شناسهٔ یکتا است که پس‌زمینه‌های شبکه برای دسترسی به اعتبارنامه‌ها از آن استفاده خواهند کرد. مقدار endpoint بسته به اینکه پس‌زمینهٔ شبکهٔ QEMU که از این اعتبارنامه‌ها استفاده می‌کند به عنوان کلاینت یا سرور عمل خواهد کرد، server یا client است. اگر verify-peer فعال باشد (پیش‌فرض)، پس از تکمیل دست‌تکانی، اعتبارنامهٔ همتا بررسی خواهد شد، اگرچه این عمل برای اعتبارنامه‌های ناشناس بی‌اثر (no-op) است.

پارامتر dir به QEMU می‌گوید فایل‌های اعتبارنامه را در کجا پیدا کند. برای نقطه‌پایانی‌های سرور، این دایرکتوری ممکن است شامل یک فایل dh-params.pem باشد که پارامترهای diffie-hellman را جهت استفاده در سرور TLS فراهم می‌کند. اگر این فایل وجود نداشته باشد، QEMU در زمان راه‌اندازی مجموعه‌ای از پارامترهای DH را تولید خواهد کرد. این یک عملیات محاسباتی سنگین است که آنتروپی مخزن تصادفی را مصرف می‌کند، بنابراین توصیه می‌شود مجموعه‌ای ماندگار از پارامترها از قبل تولید و ذخیره شود.

یک شیء اعتبارنامهٔ کلیدهای از پیش به اشتراک گذاشته‌شدهٔ TLS (یا PSK) ایجاد می‌کند که می‌تواند برای ارائهٔ پشتیبانی TLS در پس‌زمینه‌های شبکه استفاده شود. پارامتر id یک شناسهٔ یکتا است که پس‌زمینه‌های شبکه برای دسترسی به اعتبارنامه‌ها از آن استفاده خواهند کرد. پارامتر endpoint بسته به اینکه پس‌زمینهٔ شبکهٔ QEMU مصرف‌کنندهٔ اعتبارنامه‌ها به عنوان سرور یا کلاینت عمل کند، server یا client است. تنها برای کلاینت‌ها، username نام کاربری است که به سرور ارسال خواهد شد. در صورت عدم ذکر، مقدار پیش‌فرض آن "qemu" است.

پارامتر dir به QEMU مشخص می‌کند که فایل کلیدها را در کجا بیابد. نام آن "dir/keys.psk" بوده و شامل جفت‌های "username:key" است. این فایل را می‌توان به ساده‌ترین شکل با استفاده از برنامهٔ psktool در GnuTLS ایجاد کرد.

برای نقطه‌پایانی‌های سرور، dir ممکن است شامل یک فایل dh-params.pem نیز باشد که پارامترهای diffie-hellman را برای استفاده در سرور TLS مهیا می‌سازد. اگر این فایل مفقود باشد، QEMU هنگام راه‌اندازی مجموعه‌ای از پارامترهای DH را تولید خواهد کرد. این یک عملیات محاسباتی سنگین است که آنتروپی مخزن تصادفی را مصرف می‌کند، از این رو توصیه می‌شود یک مجموعهٔ ماندگار از پارامترها از پیش تولید و ذخیره شود.

یک شیء اعتبارنامهٔ ناشناس TLS ایجاد می‌کند که می‌تواند برای ارائهٔ پشتیبانی از TLS در پس‌زمینه‌های شبکه استفاده شود. پارامتر id یک شناسهٔ یکتا است که پس‌زمینه‌های شبکه برای دسترسی به اعتبارنامه‌ها از آن بهره می‌برند. پارامتر endpoint بسته به اینکه پس‌زمینهٔ شبکهٔ QEMU مصرف‌کنندهٔ اعتبارنامه‌ها به عنوان کلاینت یا سرور عمل کند، server یا client است. اگر verify-peer فعال باشد (پیش‌فرض)، پس از پایان دست‌تکانی، اعتبارنامهٔ همتا اعتبارسنجی خواهد شد. با گواهی‌های x509، این به این معنی است که کلاینت‌ها نیز باید با گواهی‌های کلاینت معتبر ارائه شوند.

پارامتر dir به QEMU می‌گوید فایل‌های اعتبارنامه را در کجا پیدا کند. برای نقطه‌پایانی‌های سرور، این دایرکتوری ممکن است حاوی فایل dh-params.pem باشد که پارامترهای diffie-hellman را برای استفاده در سرور TLS مهیا می‌سازد. در صورت عدم وجود این فایل، QEMU هنگام راه‌اندازی مجموعه‌ای از پارامترهای DH را ایجاد می‌کند. این یک عملیات سنگین محاسباتی است که آنتروپی استخر تصادفی را مصرف می‌کند، بنابراین توصیه می‌شود مجموعه‌ای پایدار از پارامترها از پیش تولید و ذخیره شود.

برای اعتبارنامه‌های گواهی x509، این دایرکتوری حاوی فایل‌های بیشتری خواهد بود که گواهی‌های x509 را فراهم می‌نمایند. این گواهی‌ها باید با قالب PEM و با نام‌های ca-cert.pem، ca-crl.pem (اختیاری)، server-cert.pem (تنها سرورها)، server-key.pem (تنها سرورها)، client-cert.pem (تنها کلاینت‌ها) و client-key.pem (تنها کلاینت‌ها) ذخیره شوند.

برای فایل‌های server-key.pem و client-key.pem که حاوی کلیدهای خصوصی حساس هستند، این امکان وجود دارد که با ارائهٔ پارامتر passwordid از یک نسخهٔ رمزگذاری‌شده استفاده کرد. این پارامتر شناسهٔ یک شیء secret را که قبلاً ایجاد شده و حاوی گذرواژه برای رمزگشایی است مشخص می‌کند.

پارامتر priority امکان بازنویسی اولویت پیش‌فرض سراسری استفاده‌شده توسط gnutls را فراهم می‌سازد. این می‌تواند زمانی مفید باشد که مدیر سیستم بخواهد از مجموعه اولویت‌های رمزنگاری ضعیف‌تری برای QEMU بدون تحمیل این ضعف به همهٔ برنامه‌ها استفاده کند. یا برعکس، اگر کسی اولویت پیش‌فرض قوی‌تری نسبت به سایر برنامه‌ها برای QEMU بخواهد، می‌تواند از طریق این پارامتر آن را اعمال نماید. قالب آن یک رشتهٔ اولویت gnutls است، همان‌طور که در https://gnutls.org/manual/html_node/Priority-Strings.html توضیح داده شده است.

یک شیء مجموعه الگوریتم‌های رمزنگاری TLS ایجاد می‌کند که می‌تواند برای کنترل الگوریتم‌های رمز/پروتکل TLS که برنامه‌ها مجاز به استفاده از آن‌ها هستند، به کار رود.

پارامتر id یک شناسهٔ یکتا است که پیشانه‌ها برای دسترسی به فهرست مرتب‌شدهٔ مجموعه‌های رمزنگاری مجاز TLS از میزبان، از آن استفاده می‌کنند.

پارامتر priority امکان بازنویسی اولویت پیش‌فرض سراسری استفاده‌شده توسط gnutls را فراهم می‌آورد. این می‌تواند زمانی سودمند باشد که مدیر سیستم بخواهد از مجموعه اولویت‌های رمزنگاری ضعیف‌تری برای QEMU استفاده نماید، بدون آنکه این ضعف به همهٔ برنامه‌ها تحمیل گردد. یا برعکس، چنانچه کسی بخواهد پیش‌فرض قوی‌تری نسبت به سایر برنامه‌ها برای QEMU در نظر بگیرد، می‌تواند این کار را با این پارامتر انجام دهد. قالب آن یک رشتهٔ اولویت gnutls است، همان‌طور که در https://gnutls.org/manual/html_node/Priority-Strings.html توصیف شده است.

نمونه‌ای از کاربرد این شیء، کنترل راه‎اندازی بوت UEFI HTTPS Boot است. شیء tls-cipher-suites فهرست مرتب‌شدهٔ مجموعه‌رمزهای مجاز TLS را از سمت میزبان و از طریق fw_cfg در دسترس سفت‌افزار مهمان قرار می‌دهد. این فهرست به صورت آرایه‌ای از اشیاء IANA_TLS_CIPHER نمایش داده می‌شود. سفت‌افزار از آرایهٔ IANA_TLS_CIPHER برای پیکربندی TLS در سمت مهمان استفاده می‌کند.

در مثال زیر، اولویتی که سیاست سمت میزبان بر مبنای آن دریافت می‌شود، توسط ویژگی priority تعیین شده است. با توجه به اینکه QEMU از GNUTLS استفاده می‌کند، priority=@SYSTEM می‌تواند برای ارجاع به /etc/crypto-policies/back-ends/gnutls.config به کار رود.

# qemu-system-x86_64 \
    -object tls-cipher-suites,id=mysuite0,priority=@SYSTEM \
    -fw_cfg name=etc/edk2/https/ciphers,gen_id=mysuite0
بازهٔ زمانی t نمی‌تواند 0 باشد؛ این پالایه تحویل بسته‌ها را دسته‌ای می‌کند: تمام بسته‌هایی که در یک بازهٔ معین در netdev با شناسهٔ netdevid دریافت می‌شوند، تا پایان آن بازه با تاخیر مواجه می‌گردند. بازه بر حسب میکروثانیه است. status اختیاری است و مشخص می‌کند که آیا netfilter روشن (فعال) یا خاموش (غیرفعال) است؛ وضعیت پیش‌فرض برای netfilter مقدار 'on' خواهد بود..sp گزینه queue all|rx|tx گزینه‌ای است که می‌تواند برای هر netfilter اعمال شود.

all: فیلتر هم به صف دریافت و هم به صف ارسال netdev متصل می‌شود (پیش‌فرض).

rx: فیلتر به صف دریافت netdev متصل می‌شود، جایی که بسته‌های ارسال‌شده به netdev را دریافت خواهد کرد.

tx: فیلتر به صف ارسال netdev متصل می‌شود، جایی که بسته‌های ارسال‌شده توسط netdev را دریافت خواهد کرد.

گزینه position head|tail|id=<id> گزینه‌ای برای تعیین محل درج فیلتر در فهرست فیلترها است. این گزینه می‌تواند برای هر netfilter اعمال شود.

head: فیلتر در ابتدای فهرست فیلترها، قبل از تمام فیلترهای موجود درج می‌شود.

tail: فیلتر در انتهای فهرست فیلترها، پس از تمام فیلترهای موجود درج می‌شود (پیش‌فرض).

id=<id>: فیلتر قبل یا بعد از فیلتر مشخص‌شده توسط <id> درج می‌شود، گزینه insert در زیر را ببینید.

گزینه insert behind|before گزینه‌ای برای تعیین محل درج فیلتر جدید نسبت به فیلتر مشخص‌شده با position=id=<id> است. این گزینه می‌تواند برای هر netfilter اعمال شود.

before: درج قبل از فیلتر مشخص‌شده.

behind: درج بعد از فیلتر مشخص‌شده (پیش‌فرض).

فیلتر filter-mirror روی netdev با شناسه netdevid، بسته شبکه را به chardev با شناسه chardevid آینه‌سازی (mirror) می‌کند؛ اگر پرچم vnet_hdr_support فعال باشد، filter-mirror بسته را همراه با vnet_hdr_len آینه‌سازی خواهد کرد.
فیلتر filter-redirector روی netdev با شناسه netdevid، بسته شبکه فیلتر را به chardev با شناسه chardevid هدایت (redirect) کرده و بسته indev را به فیلتر هدایت می‌کند. اگر پرچم vnet_hdr_support فعال باشد، filter-redirector بسته را با vnet_hdr_len هدایت خواهد کرد. برای ایجاد یک filter-redirector باید شناسه outdev از شناسه indev متفاوت باشد؛ شناسه‌ها نمی‌توانند یکسان باشند. می‌توان تنها از indev یا outdev استفاده کرد، اما حداقل یکی از indev یا outdev باید مشخص شود.
ابزار Filter-rewriter بخشی از پروژه COLO است. این فیلتر بسته‌های tcp را از primary به secondary بازنویسی می‌کند تا اتصال tcp ثانویه (secondary) حفظ شود، و بسته‌های tcp را از secondary به primary بازنویسی می‌کند تا بسته‌های tcp توسط کلاینت قابل پردازش باشند. اگر پرچم vnet_hdr_support فعال باشد، می‌توان بسته‌ها را به همراه سرآیند vnet پردازش کرد.

کاربرد: colo secondary: -object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0 -object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1 -object filter-rewriter,id=rew0,netdev=hn0,queue=all

ترافیک شبکه روی netdev با شناسه dev را در فایل مشخص‌شده با filename ذخیره (dump) می‌کند. حداکثر len بایت (به‌طور پیش‌فرض 64k) به ازای هر بسته ذخیره می‌شود. قالب فایل libpcap است، بنابراین با ابزارهایی مانند tcpdump یا Wireshark قابل تحلیل است.
ابزار Colo-compare بسته‌ها را از پس‌اندهای chardev مشخص‌شده توسط primary_in و secondary_in دریافت کرده و بررسی می‌کند که آیا محتوای بار داده (payload) بسته primary و بسته secondary یکسان است یا خیر. اگر مطابقت داشته باشند، بسته primary را به پس‌اند chardev مشخص‌شده توسط outdev ارسال می‌کند؛ در غیر این صورت به COLO-framework اطلاع می‌دهد تا یک نقطه بررسی (checkpoint) انجام دهد و بسته primary را به outdev می‌فرستد.

به منظور بهبود کارایی، باید وظیفه مقایسه را در یک iothread دیگر قرار دهیم؛ گزینه iothread شیء iothread مربوطه را مشخص می‌کند (که باید در خط فرمان شما ایجاد شده باشد).

پرچم vnet_hdr_support به colo compare می‌گوید که هنگام ارسال و دریافت بسته‌ها، طول سرآیند vnet را لحاظ کند.

گزینه compare_timeout حداکثر زمانی که colo-compare بسته را نگه می‌دارد (بر حسب میلی‌ثانیه) تعیین می‌کند.

گزینه expired_scan_cycle دوره پایش بسته‌های شبکه منقضی‌شده گره primary را (بر حسب میلی‌ثانیه) تعیین می‌کند.

گزینه max_queue_size حداکثر اندازه صف مقایسه را تعیین می‌کند.

اگر قصد استفاده از Xen COLO را دارید، باید notify_dev را مشخص کنید تا به colo-compare نحوه اطلاع‌رسانی به Xen colo-frame برای ایجاد checkpoint را مشخص نماید.

ابزار COLO-compare باید همراه با filter-mirror، filter-redirector و filter-rewriter استفاده شود.

KVM COLO
primary:
-netdev tap,id=hn0,vhost=off
-device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66
-chardev socket,id=mirror0,host=3.3.3.3,port=9003,server=on,wait=off
-chardev socket,id=compare1,host=3.3.3.3,port=9004,server=on,wait=off
-chardev socket,id=compare0,host=3.3.3.3,port=9001,server=on,wait=off
-chardev socket,id=compare0-0,host=3.3.3.3,port=9001
-chardev socket,id=compare_out,host=3.3.3.3,port=9005,server=on,wait=off
-chardev socket,id=compare_out0,host=3.3.3.3,port=9005
-object iothread,id=iothread1
-object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0
-object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out
-object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0
-object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0,iothread=iothread1
secondary:
-netdev tap,id=hn0,vhost=off
-device e1000,netdev=hn0,mac=52:a4:00:12:78:66
-chardev socket,id=red0,host=3.3.3.3,port=9003
-chardev socket,id=red1,host=3.3.3.3,port=9004
-object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0
-object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1
Xen COLO
primary:
-netdev tap,id=hn0,vhost=off
-device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66
-chardev socket,id=mirror0,host=3.3.3.3,port=9003,server=on,wait=off
-chardev socket,id=compare1,host=3.3.3.3,port=9004,server=on,wait=off
-chardev socket,id=compare0,host=3.3.3.3,port=9001,server=on,wait=off
-chardev socket,id=compare0-0,host=3.3.3.3,port=9001
-chardev socket,id=compare_out,host=3.3.3.3,port=9005,server=on,wait=off
-chardev socket,id=compare_out0,host=3.3.3.3,port=9005
-chardev socket,id=notify_way,host=3.3.3.3,port=9009,server=on,wait=off
-object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0
-object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out
-object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0
-object iothread,id=iothread1
-object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0,notify_dev=notify_way,iothread=iothread1
secondary:
-netdev tap,id=hn0,vhost=off
-device e1000,netdev=hn0,mac=52:a4:00:12:78:66
-chardev socket,id=red0,host=3.3.3.3,port=9003
-chardev socket,id=red1,host=3.3.3.3,port=9004
-object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0
-object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1

اگر تمایل دارید از جزئیات خط فرمان بالا مطلع شوید، می‌توانید گزارش git log مربوط به colo-compare را مطالعه کنید.

یک پس‌اند cryptodev ایجاد می‌کند که عملیات رمزنگاری را از طریق APIهای cipher در QEMU اجرا می‌کند. پارامتر id یک شناسه یکتا است که برای ارجاع به این پس‌اند cryptodev از طرف دستگاه virtio-crypto استفاده می‌شود. پارامتر queues اختیاری است و تعداد صف‌های پس‌اند cryptodev را مشخص می‌کند؛ مقدار پیش‌فرض queues برابر با 1 است.
# qemu-system-x86_64 \
  [...] \
      -object cryptodev-backend-builtin,id=cryptodev0 \
      -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \
  [...]
یک پس‌اند cryptodev از نوع vhost-user ایجاد می‌کند که مبتنی بر یک chardev با شناسه chardevid است. پارامتر id یک شناسه یکتا است که برای ارجاع به این پس‌اند cryptodev از دستگاه virtio-crypto استفاده خواهد شد. این chardev باید مبتنی بر سوکت یونیکس (unix domain socket) باشد. بخش vhost-user از یک پروتکل ویژه برای ارسال پیام‌های جایگزین ioctl در vhost به برنامه‌ای در سمت دیگر سوکت استفاده می‌کند. پارامتر queues اختیاری است، که تعداد صف‌های پس‌اند cryptodev را برای vhost-user چندصفی مشخص می‌کند؛ مقدار پیش‌فرض queues برابر با 1 است.
# qemu-system-x86_64 \
  [...] \
      -chardev socket,id=chardev0,path=/path/to/socket \
      -object cryptodev-vhost-user,id=cryptodev0,chardev=chardev0 \
      -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \
  [...]
یک شیء محرمانه (secret) برای ذخیره گذرواژه، کلید رمزگذاری یا سایر داده‌های حساس تعریف می‌کند. داده‌های حساس می‌توانند مستقیماً از طریق پارامتر data، یا به صورت غیرمستقیم از طریق پارامتر file ارسال شوند. استفاده از پارامتر data ناامن است مگر اینکه داده‌های حساس رمزگذاری شده باشند.

داده‌های حساس می‌توانند در قالب raw (پیش‌فرض) یا base64 ارائه شوند. هنگام کدگذاری به صورت JSON، قالب raw تنها از نویسه‌های معتبر UTF-8 پشتیبانی می‌کند، بنابراین base64 برای ارسال داده‌های باینری توصیه می‌شود. QEMU هر قالبی را که ارائه شده باشد به قالب مورد نیاز داخلی خود تبدیل خواهد کرد. برای مثال، یک گذرواژه RBD می‌تواند در قالب raw ارائه شود، حتی اگر هنگام ارسال به سرور RBD با base64 کدگذاری شود.

برای محافظت بیشتر، رمزگذاری داده‌های مرتبط با یک شیء محرمانه با استفاده از الگوریتم رمزنگاری AES-256-CBC امکان‌پذیر است. استفاده از رمزگذاری با مشخص کردن پارامترهای keyid و iv مشخص می‌شود. پارامتر keyid شناسه (ID) یک شیء محرمانه از پیش تعریف‌شده را ارائه می‌دهد که حاوی کلید رمزگشایی AES-256 است. این کلید باید ۳۲ بایت طول داشته و با base64 کدگذاری شده باشد. پارامتر iv بردار مقداردهی اولیه (IV) تصادفی مورد استفاده برای رمزگذاری این شیء محرمانه خاص را فراهم می‌کند و باید یک رشته با کدگذاری base64 از IV شانزده بایتی باشد.

ساده‌ترین روش استفاده (ناامن)، ارائه داده محرمانه به‌صورت درون‌خطی است:

# qemu-system-x86_64 -object secret,id=sec0,data=letmein,format=raw

ساده‌ترین روش استفاده امن، ارائه داده محرمانه از طریق یک فایل است

# printf "letmein" > mypasswd.txt # QEMU_SYSTEM_MACRO -object secret,id=sec0,file=mypasswd.txt,format=raw

برای امنیت بیشتر، باید از AES-256-CBC استفاده شود. برای نشان دادن نحوه استفاده، ابزار خط فرمان openssl را در نظر بگیرید که می‌تواند داده‌ها را رمزگذاری کند. توجه داشته باشید که هنگام رمزگذاری، متن آشکار (plaintext) باید با استفاده از الگوریتم استاندارد سازگار با PKCS#5/6 به اندازه بلوک رمزبندی (۳۲ بایت) پد (pad) شود.

ابتدا باید یک کلید اصلی (master key) با کدگذاری base64 ایجاد شود:

# openssl rand -base64 32 > key.b64
# KEY=$(base64 -d key.b64 | hexdump  -v -e '/1 "%02X"')

هر داده محرمانه‌ای که قرار است رمزگذاری شود، باید یک بردار مقداردهی اولیه (IV) تصادفیِ تولیدشده داشته باشد. نیازی نیست که این بردارها مخفی نگه داشته شوند:

# openssl rand -base64 16 > iv.b64
# IV=$(base64 -d iv.b64 | hexdump  -v -e '/1 "%02X"')

داده محرمانه‌ای که باید تعریف شود اکنون می‌تواند رمزگذاری شود؛ در اینجا به openssl می‌گوییم که نتیجه را با base64 کدگذاری کند، اما در صورت تمایل می‌توان آن را به صورت بایت‌های خام (raw) باقی گذاشت.

# SECRET=$(printf "letmein" |
           openssl enc -aes-256-cbc -a -K $KEY -iv $IV)

هنگام راه‌اندازی QEMU، یک شیء محرمانه اصلی ایجاد کنید که به key.b64 اشاره دارد و مشخص کنید که برای رمزگشایی گذرواژه کاربر استفاده شود. محتویات iv.b64 را به شیء محرمانه دوم ارسال کنید:

# qemu-system-x86_64 \
    -object secret,id=secmaster0,format=base64,file=key.b64 \
    -object secret,id=sec0,keyid=secmaster0,format=base64,\
        data=$SECRET,iv=$(<iv.b64)
یک شیء مهمان Secure Encrypted Virtualization (SEV) ایجاد می‌کند که می‌تواند برای ارائه پشتیبانی از رمزگذاری حافظه مهمان در پردازنده‌های AMD استفاده شود.

هنگامی که رمزگذاری حافظه فعال است، یکی از بیت‌های آدرس فیزیکی (معروف به C-bit) برای نشان‌گذاری محافظت‌شده بودن یک صفحه حافظه به کار می‌رود. گزینه cbitpos برای مشخص کردن موقعیت C-bit استفاده می‌شود. موقعیت C-bit به خانواده پردازنده میزبان (Host) بستگی دارد، بنابراین کاربر باید این مقدار را مشخص کند. در پردازنده‌های EPYC، این مقدار باید ۴۷ باشد.

هنگامی که رمزگذاری حافظه فعال است، برخی از بیت‌ها در فضای آدرس فیزیکی از دست می‌روند. گزینه reduced-phys-bits برای تعیین تعداد بیت‌های از دست‌رفته در فضای آدرس فیزیکی استفاده می‌شود. مشابه C-bit، این مقدار به خانواده پردازنده میزبان بستگی دارد. در EPYC، مهمان حداکثر ۱ بیت را از دست می‌دهد، بنابراین مقدار باید ۱ باشد.

گزینه sev-device فایل دستگاه مورد استفاده برای ارتباط با سفت‌افزار SEV در حال اجرا درون AMD Secure Processor را مشخص می‌کند. دستگاه پیش‌فرض '/dev/sev' است. اگر سخت‌افزار از رمزگذاری حافظه پشتیبانی کند، دستگاه‌های /dev/sev توسط درایور CCP ایجاد می‌شوند.

گزینه policy سیاست (policy) مهمان را مشخص می‌کند که توسط سفت‌افزار SEV اعمال می‌شود و تعیین می‌کند چه دستورهای پیکربندی و عملیاتی می‌توانند توسط ناظر مجازی‌سازی (hypervisor) بر روی این مهمان اجرا شوند. این سیاست باید توسط مالک مهمان ارائه شود، به مهمان متصل است و در طول چرخه حیات مهمان قابل تغییر نیست. مقدار پیش‌فرض 0 است.

اگر policy مهمان اجازه اشتراک‌گذاری کلید با یک مهمان SEV دیگر را بدهد، می‌توان از handle برای ارائه هندل مهمانی که کلید از آن به اشتراک گذاشته می‌شود استفاده کرد.

گزینه‌های dh-cert-file و session-file کلید عمومی دیفی-هلمن (Public Diffie-Hillman) مالک مهمان را که در مشخصات SEV تعریف شده ارائه می‌دهند. پارامترهای PDH و نشست (session) برای برقراری یک نشست رمزنگاری با مالک مهمان جهت مذاکره بر سر کلیدهای مورد استفاده برای تصدیق اصالت (attestation) استفاده می‌شوند. فایل باید با base64 کدگذاری شده باشد.

گزینه kernel-hashes درهم‌سازهای (hashes) مربوط به kernel/initrd/cmdline داده‌شده را به یک صفحه سفت‌افزار تعیین‌شده مهمان برای راه‌اندازی اندازه‌گیری‌شده لینوکس (measured Linux boot) با -kernel اضافه می‌کند. پیش‌فرض off است. (از نسخه 6.2)

برای مثال برای راه‌اندازی یک مهمان SEV:

# qemu-system-x86_64 \
    ...... \
    -object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=1 \
    -machine ...,confidential-guest-support=sev0 \
    .....
یک شیء مهمان Intel Trusted Domain eXtensions (TDX) ایجاد می‌کند که نوعی از شیء confidential-guest-support است. هنگامی که شناسه شیء به ویژگی confidential-guest-support ماشین ارسال شود، می‌تواند یک مهمان TDX ایجاد کند.

ویژگی attributes یک عدد صحیح ۶۴ بیتی است که ویژگی‌های TD (مربوط به TD attributes) را مشخص می‌کند.

ویژگی sept-ve-disable به طور خاص بیت ۲۸ ویژگی‌های TD را کنترل می‌کند. هنگامی که روی on باشد، تبدیل تخطی EPT به #VE هنگام دسترسی مهمان به صفحه‌های PENDING غیرفعال می‌شود. برخی از سیستم‌عامل‌های مهمان (مانند مهمان لینوکس TD) ممکن است به تنظیم این مورد نیاز داشته باشند، در غیر این صورت از راه‌اندازی خودداری می‌کنند. مقدار پیش‌فرض on است..sp ویژگی mrconfigid یک خلاصه (digest) از نوع SHA384 با کدگذاری base64 است که شناسه پیکربندی تعریف‌نشده توسط مالک (non-owner-defined) برای TD مهمان، مانند پیکربندی زمان اجرا یا سیستم‌عامل را فراهم می‌کند. مقدار پیش‌فرض همگی صفر است.

ویژگی mrowner یک خلاصه از نوع SHA384 با کدگذاری base64 است که شناسه را برای مالک TD مهمان فراهم می‌کند. مقدار پیش‌فرض همگی صفر است.

ویژگی mrownerconfig یک خلاصه از نوع SHA384 با کدگذاری base64 است که شناسه پیکربندی تعریف‌شده توسط مالک (owner-defined) برای TD مهمان، مانند پیکربندی مختص بار کاری (workload) به جای زمان اجرای سیستم‌عامل را فراهم می‌کند. مقدار پیش‌فرض همگی صفر است.

ویژگی quote-generation-socket نشانی سوکت مربوط به Quote Generation Service (QGS) را مشخص می‌کند. سرویس QGS یک دیمون در حال اجرا روی میزبان است. QEMU درخواست <GetQuote> را از TD مهمان به QGS بازارسال کرده و پاسخ (که در صورت موفقیت شامل QUOTE تولیدشده است) را از QGS به TD مهمان می‌فرستد.

# qemu-system-x86_64 \
    ...... \
    -object '{"qom-type":"tdx-guest","id":"tdx","quote-generation-socket":{"type":"unix","path":"/var/run/qgs.socket"}}' \
    -machine ...,confidential-guest-support=tdx \
    ......
یک شیء پیکربندی IGVM ایجاد می‌کند که وضعیت اولیه مهمان را با استفاده از فایلی منطبق با قالب پرونده Independent Guest Virtual Machine (IGVM) تعریف می‌کند.

این گزینه در حال حاضر تنها توسط -machine q35 و -machine pc پشتیبانی می‌شود.

پارامتر file برای مشخص کردن فایل IGVM جهت بارگذاری استفاده می‌شود. هنگام ارائه، از فایل IGVM برای مقداردهی اولیه حافظه ماشین مجازی استفاده می‌شود و بسته به پلتفرم، می‌تواند وضعیت اولیه پردازنده، نقشه حافظه (memory map) و پارامترها را تعریف کند.

انتظار می‌رود فایل IGVM شامل سفت‌افزار (firmware) برای ماشین مجازی باشد، بنابراین یک شیء igvm-cfg نمی‌تواند همراه با سایر روش‌های مشخص‌سازی سفت‌افزار، مانند پارامتر -bios در ماشین‌های x86 ارائه شود.

برای نمونه، جهت راه‌اندازی ماشینی که سفت‌افزار را در یک فایل IGVM ارائه می‌دهد:

# qemu-system-x86_64 \
    ...... \
    -object igvm-cfg,id=igvm0,file=bios.igvm \
    -machine ...,igvm-cfg=igvm0 \
    .....
یک شیء مجوزدهی (authorization) ایجاد می‌کند که دسترسی به سرویس‌های شبکه را کنترل خواهد کرد.

پارامتر identity کاربر را شناسایی می‌کند و قالب آن به سرویس شبکه‌ای بستگی دارد که شیء مجوزدهی با آن در ارتباط است. برای مجوزدهی بر پایه گواهی‌های TLS x509، هویت باید نام متمایز (distinguished name) x509 باشد. توجه داشته باشید که باید دقت کرد تا هرگونه ویرگول در نام متمایز گریزدهی (escape) شود.

یک نمونه شیء مجوزدهی برای اعتبارسنجی یک نام متمایز x509 به این شکل خواهد بود:

# qemu-system-x86_64 \
    ... \
    -object 'authz-simple,id=auth0,identity=CN=laptop.example.com,,O=Example Org,,L=London,,ST=London,,C=GB' \
    ...

به استفاده از نقل‌قول‌ها به دلیل وجود فاصله خالی در نام متمایز x509 و گریزدهی ',' دقت کنید.

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

پارامتر filename مسیر کامل (fully qualified path) به فایلی حاوی قوانین فهرست کنترل دسترسی (ACL) در قالب JSON است.

یک نمونه از مجموعه‌ای از قوانین که با نام‌های کاربری SASL تطبیق می‌یابند می‌تواند به این صورت باشد:

{
  "rules": [
     { "match": "fred", "policy": "allow", "format": "exact" },
     { "match": "bob", "policy": "allow", "format": "exact" },
     { "match": "danb", "policy": "deny", "format": "glob" },
     { "match": "dan*", "policy": "allow", "format": "exact" },
  ],
  "policy": "deny"
}

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

قوانین می‌توانند یک تطبیق رشته‌ای دقیق باشند، یا می‌توانند از الگوی تطبیق ساده glob یونیکس برای امکان استفاده از نویسه‌های عمومی (wildcards) بهره ببرند.

اگر refresh روی true تنظیم شده باشد، فایل پایش می‌شود و هر زمان محتوای آن تغییر کند به‌طور خودکار بازخوانی می‌گردد.

همانند شیء authz-simple، قالب رشته‌های هویتی مورد تطبیق به سرویس شبکه وابسته است، اما معمولاً یک نام متمایز TLS x509 یا یک نام کاربری SASL است.

یک نمونه شیء مجوزدهی برای اعتبارسنجی نام کاربری SASL به صورت زیر خواهد بود:

# qemu-system-x86_64 \
    ... \
    -object authz-simple,id=auth0,filename=/etc/qemu/vnc-sasl.acl,refresh=on \
    ...
یک شیء مجوزدهی ایجاد می‌کند که دسترسی به سرویس‌های شبکه را کنترل خواهد کرد.

پارامتر service نام یک سرویس PAM را برای استفاده در مجوزدهی تعیین می‌کند. این پارامتر مستلزم وجود فایل /etc/pam.d/service جهت ارائه پیکربندی برای زیرسیستم account است.

یک نمونه شیء مجوزدهی برای اعتبارسنجی نام متمایز TLS x509 به صورت زیر خواهد بود:

# qemu-system-x86_64 \
    ... \
    -object authz-pam,id=auth0,service=qemu-vnc \
    ...

سپس یک فایل پیکربندی متناظر برای PAM در مسیر /etc/pam.d/qemu-vnc وجود خواهد داشت که شامل موارد زیر است:

account requisite  pam_listfile.so item=user sense=allow \
           file=/etc/qemu/vnc.allow
در نهایت، فایل /etc/qemu/vnc.allow شامل فهرستی از نام‌های متمایز (distinguished names) در x509 خواهد بود که مجاز به دسترسی هستند:
CN=laptop.example.com,O=Example Home,L=London,ST=London,C=GB
یک رشته (thread) حلقه رویداد اختصاصی ایجاد می‌کند که دستگاه‌ها می‌توانند به آن تخصیص یابند. این ساختار به عنوان IOThread شناخته می‌شود. به‌طور پیش‌فرض شبیه‌سازی دستگاه در رشته‌های vCPU یا رشته اصلی حلقه رویداد رخ می‌دهد. این امر می‌تواند به یک گلوگاه مقیاس‌پذیری تبدیل شود. ساختارهای IOThread اجازه می‌دهند شبیه‌سازی دستگاه و I/O بر روی سایر پردازنده‌های میزبان اجرا شوند.

پارامتر id یک شناسه یکتا است که برای ارجاع به این IOThread از طریق -device ...,iothread=id استفاده خواهد شد. چندین دستگاه می‌توانند به یک IOThread تخصیص داده شوند. توجه داشته باشید که همه دستگاه‌ها از پارامتر iothread پشتیبانی نمی‌کنند.

دستور QMP به نام query-iothreads فهرستی از IOThreadها را ارائه کرده و شناسه رشته‌های (thread IDs) آن‌ها را گزارش می‌دهد تا کاربر بتواند تثبیت/وابستگی پردازنده میزبان (host CPU pinning/affinity) را پیکربندی کند.

ساختارهای IOThread از یک الگوریتم نظرسنجی تطبیقی (adaptive polling) برای کاهش تاخیر حلقه رویداد استفاده می‌کنند. به‌جای ورود به یک فراخوان سیستمی مسدودکننده (blocking system call) برای نظارت بر توصیف‌کننده‌های فایل و سپس پرداخت هزینه بیدار شدن هنگام وقوع یک رویداد، الگوریتم نظرسنجی برای مدت کوتاهی به انتظار رویدادها گردش (spin) می‌کند. پارامترهای پیش‌فرض این الگوریتم برای بسیاری از موارد مناسب هستند، اما می‌توان آن‌ها را بر اساس شناخت بار کاری و/یا تاخیر دستگاه میزبان تنظیم کرد.

پارامتر poll-max-ns حداکثر تعداد نانوثانیه‌ها برای انتظار فعال (busy wait) رویدادها است. با تنظیم این مقدار روی 0 می‌توان نظرسنجی را غیرفعال کرد.

پارامتر poll-grow ضریبی است که برای افزایش زمان نظرسنجی استفاده می‌شود، هنگامی که الگوریتم تشخیص دهد رویدادهایی را به دلیل طولانی نبودن مدت نظرسنجی از دست می‌دهد.

پارامتر poll-shrink مقسوم‌علیهی است که برای کاهش زمان نظرسنجی استفاده می‌شود، زمانی که الگوریتم تشخیص دهد مدت زمان زیادی را بدون مواجهه با هیچ رویدادی صرف نظرسنجی کرده است.

پارامتر poll-weight فاکتور وزن برای نظرسنجی تطبیقی است. این فاکتور تعیین می‌کند که آخرین بازه رویداد تا چه اندازه بر محاسبه مدت‌زمان نظرسنجی بعدی اثر می‌گذارد. در صورت تنظیم روی 0، از مقدار پیش‌فرض سیستم یعنی 3 استفاده می‌شود. مقادیر معمول: 1 (وزن بالا برای بازه اخیر)، 2-4 (وزن متوسط برای بازه اخیر).

پارامتر aio-max-batch حداکثر تعداد درخواست‌ها در یک دسته (batch) برای موتور AIO است؛ مقدار 0 به این معنی است که موتور از مقدار پیش‌فرض خود استفاده خواهد کرد.

پارامترهای IOThread را می‌توان در زمان اجرا با استفاده از دستور qom-set تغییر داد (که در آن iothread1 همان id مربوط به IOThread است):

(qemu) qom-set /objects/iothread1 poll-max-ns 100000

در طول شبیه‌سازی گرافیکی، می‌توانید از ترکیب‌کلیدهای ویژه جدول زیر برای تغییر حالت‌ها استفاده کنید. به‌طور پیش‌فرض کلید تبدیلگر (modifier) ترکیب Ctrl+Alt است (استفاده‌شده در جدول زیر) که در صورت لزوم با زیرگزینه mod= در -display قابل تغییر است. برای نمونه، -display sdl, grab-mod=lshift-lctrl-lalt کلید تبدیلگر را به Ctrl+Alt+Shift تغییر می‌دهد، در حالی که -display sdl,grab-mod=rctrl آن را به کلید راست Ctrl تغییر می‌دهد.

توالی کلیدها عملیات
Ctrl+Alt+f تغییر وضعیت تمام‌صفحه
Ctrl+Alt++ بزرگ‌نمایی صفحه
Ctrl+Alt+- کوچک‌نمایی صفحه
Ctrl+Alt+0 بازگرداندن ابعاد مقیاس‌بندی‌نشده صفحه
Ctrl+Alt+n جابه‌جایی به کنسول مجازی 'n'. نگاشت‌های پیش‌فرض کنسول عبارتند از: 0.0 • 2 1: نمایشگر سیستم هدف • 2 2: مانیتور (Monitor) • 2 3: پورت سریال 840u
Ctrl+Alt+g تغییر وضعیت تسخیر ماوس و صفحه‌کلید.

در کنسول‌های مجازی، می‌توانید از Ctrl+Up، Ctrl+Down، Ctrl+PageUp و Ctrl+PageDown برای حرکت در تاریخچه پیشین (back log) استفاده کنید.

در طول شبیه‌سازی، اگر از یک تسهیم‌کننده پسانه نویسه‌ای (character backend multiplexer) استفاده می‌کنید (که در صورت استفاده از -nographic پیش‌فرض است)، چندین دستور از طریق یک توالی گریز (escape sequence) در دسترس هستند. تمام این توالی کلیدها با یک نویسه گریز آغاز می‌شوند که به‌طور پیش‌فرض Ctrl+a است، اما با -echr قابل تغییر می‌باشد. فهرست زیر فرض می‌کند که شما از پیش‌فرض استفاده می‌کنید..SH "کلیدهای مالتی‌پلکسر (MULTIPLEXER KEYS)"

توالی کلیدها عملیات
Ctrl+a h چاپ این راهنما
Ctrl+a x خروج از شبیه‌ساز
Ctrl+a s ذخیره مجدد داده‌های دیسک در فایل (در صورت استفاده از -snapshot)
Ctrl+a t تغییر وضعیت برچسب‌های زمانی کنسول
Ctrl+a b ارسال سیگنال break (یا magic sysrq در لینوکس)
Ctrl+a c چرخش بین فرانت‌اندهای متصل به مالتی‌پلکسر (معمولاً سوئیچ بین مانیتور و کنسول)
Ctrl+a Ctrl+a ارسال نویسه گریز (escape) به فرانت‌اند

علاوه بر استفاده از ایمیج‌های فایلی عادی برای دستگاه‌های ذخیره‌سازی شبیه‌سازی‌شده، QEMU همچنین می‌تواند از منابع تحت شبکه مانند دستگاه‌های iSCSI استفاده کند. این موارد با استفاده از ساختار نحوی ویژه URL مشخص می‌شوند.

پشتیبانی از iSCSI به QEMU این امکان را می‌دهد تا مستقیماً به منابع iSCSI دسترسی داشته باشد و از آن‌ها به‌عنوان ایمیج برای فضای ذخیره‌سازی مهمان استفاده کند. هر دو نوع ایمیج disk و cdrom پشتیبانی می‌شوند.

نحو مشخص کردن LUNهای iSCSI به‌صورت زیر است: "iscsi://<target-ip>[:<port>]/<target-iqn>/<lun>"

به‌طور پیش‌فرض qemu از initiator-name مربوط به iSCSI با عنوان 'iqn.2008-11.org.linux-kvm[:<name>]' استفاده می‌کند، اما این مقدار را می‌توان از طریق خط فرمان یا یک فایل پیکربندی نیز تنظیم کرد.

از نسخه QEMU 2.4، تعیین مهلت زمانی (timeout) برای درخواست‌های iSCSI جهت تشخیص درخواست‌های متوقف‌شده و برقراری مجدد اجباری نشست امکان‌پذیر است. این مهلت زمانی بر حسب ثانیه مشخص می‌شود. مقدار پیش‌فرض 0 است که به معنای عدم وجود مهلت زمانی است. برای این قابلیت به Libiscsi نسخه 1.15.0 یا بالاتر نیاز است.

مثال (بدون احراز هویت):

qemu-system-x86_64 -iscsi initiator-name=iqn.2001-04.com.example:my-initiator \
                 -cdrom iscsi://192.0.2.1/iqn.2001-04.com.example/2 \
                 -drive file=iscsi://192.0.2.1/iqn.2001-04.com.example/1

مثال (نام کاربری/گذرواژه CHAP از طریق URL):

qemu-system-x86_64 -drive file=iscsi://user%password@192.0.2.1/iqn.2001-04.com.example/1

مثال (نام کاربری/گذرواژه CHAP از طریق متغیرهای محیط):

LIBISCSI_CHAP_USERNAME="user" \
LIBISCSI_CHAP_PASSWORD="password" \
qemu-system-x86_64 -drive file=iscsi://192.0.2.1/iqn.2001-04.com.example/1
ابزار QEMU از NBD (دستگاه‌های بلوکی تحت شبکه یا Network Block Devices) هم با استفاده از پروتکل TCP و هم Unix Domain Sockets پشتیبانی می‌کند. در پروتکل TCP، درگاه پیش‌فرض 10809 است.

نحو تعیین یک دستگاه NBD با استفاده از TCP، در قالب ترجیحی URI: "nbd://<server-ip>[:<port>]/[<export>]"

نحو تعیین یک دستگاه NBD با استفاده از Unix Domain Sockets؛ به یاد داشته باشید که '?' یک نویسه glob پوسته است و ممکن است به نقل‌قول (کوتیشن) نیاز داشته باشد: "nbd+unix:///[<export>]?socket=<domain-socket>"

نحو قدیمی‌تر که همچنان شناخته‌شده است: "nbd:<server-ip>:<port>[:exportname=<export>]"

نحو تعیین یک دستگاه NBD با استفاده از Unix Domain Sockets: "nbd:unix:<domain-socket>[:exportname=<export>]"

مثال برای TCP

qemu-system-x86_64 --drive file=nbd:192.0.2.1:30000

مثال برای Unix Domain Sockets

qemu-system-x86_64 --drive file=nbd:unix:/tmp/nbd-socket
ابزار QEMU از دسترسی SSH (پوسته امن یا Secure Shell) به دیسک‌های راه‌دور پشتیبانی می‌کند.

مثال‌ها:

qemu-system-x86_64 -drive file=ssh://user@host/path/to/disk.img
qemu-system-x86_64 -drive file.driver=ssh,file.user=user,file.host=host,file.port=22,file.path=/path/to/disk.img

در حال حاضر احراز هویت باید با استفاده از ssh-agent انجام شود. روش‌های دیگر احراز هویت ممکن است در آینده پشتیبانی شوند.

ابزار QEMU از دسترسی فقط‌خواندنی به فایل‌های در دسترس از طریق http(s) و ftp(s) پشتیبانی می‌کند.

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

<protocol>://[<username>[:<password>]@]<host>/<path>

که در آن:

protocol مقادیر 'http'، 'https'، 'ftp' یا 'ftps'.
نام کاربری اختیاری برای احراز هویت در سرور دوردست.
گذرواژه اختیاری برای احراز هویت در سرور دوردست.
نشانی سرور دوردست.
مسیر روی سرور دوردست، شامل هرگونه رشته پرس‌وجو (query string).

گزینه‌های زیر نیز پشتیبانی می‌شوند:

نشانی URL کامل هنگام ارسال صریح گزینه‌ها به راه‌انداز (driver).
میزان داده‌ای که باید پیشاپیش (read ahead) در هر درخواست محدوده (range request) از سرور دوردست خوانده شود. این مقدار می‌تواند به صورت اختیاری دارای پسوند 'T'، 'G'، 'M'، 'K'، 'k' یا 'b' باشد. اگر پسوندی نداشته باشد، به بایت در نظر گرفته خواهد شد. مقدار باید مضربی از ۵۱۲ بایت باشد. مقدار پیش‌فرض آن 256k است.
تعیین می‌کند که آیا هنگام اتصال از طریق SSL، گواهی سرور دوردست اعتبارسنجی شود یا خیر. می‌تواند مقدار 'on' یا 'off' داشته باشد. مقدار پیش‌فرض آن 'on' است.
ارسال این کوکی (می‌تواند فهرستی از کوکی‌های جداشده با ';' نیز باشد) با هر درخواست خروجی. تنها هنگام استفاده از پروتکل‌هایی مانند HTTP که از کوکی‌ها پشتیبانی می‌کنند اعمال می‌شود؛ در غیر این صورت نادیده گرفته خواهد شد.
تنظیم مهلت زمانی (timeout) اتصال CURL بر حسب ثانیه. این مهلت، مدت زمانی است که CURL منتظر پاسخی از سوی سرور دوردست برای دریافت اندازه ایمیج مورد نظر می‌ماند. در صورت عدم تنظیم، مهلت زمانی پیش‌فرض ۵ ثانیه استفاده می‌شود.
عدم ارسال درخواست HEAD در پروتکل HTTP برای بررسی اینکه آیا سرور http از درخواست‌های محدوده پشتیبانی می‌کند یا خیر، و تکیه صرف بر درخواست‌های GET. این گزینه به‌ویژه برای URLهای از پیش امضا شده S3 که در آن‌ها درخواست‌های HEAD غیرمجاز هستند بسیار مفید است. مقدار پیش‌فرض آن 'false' است.

توجه داشته باشید که هنگام ارسال صریح گزینه‌ها به qemu، مقدار driver همان <protocol> خواهد بود.

مثال: راه‌اندازی (boot) از یک ایمیج زنده ISO دوردست Fedora 20

qemu-system-x86_64 --drive media=cdrom,file=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/20/Live/x86_64/Fedora-Live-Desktop-x86_64-20-1.iso,readonly
qemu-system-x86_64 --drive media=cdrom,file.driver=http,file.url=http://archives.fedoraproject.org/pub/fedora/linux/releases/20/Live/x86_64/Fedora-Live-Desktop-x86_64-20-1.iso,readonly

مثال: راه‌اندازی از یک ایمیج ابری دوردست Fedora 20 با استفاده از یک لایه محلی (overlay) برای نوشتن‌ها، copy-on-read، و خواندن پیشاپیش (readahead) به میزان 64k

qemu-img create -f qcow2 -o backing_file='json:{"file.driver":"http",, "file.url":"<http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/20/Images/x86_64/Fedora-x86_64-20-20131211.1-sda.qcow2>",, "file.readahead":"64k"}' /tmp/Fedora-x86_64-20-20131211.1-sda.qcow2
qemu-system-x86_64 -drive file=/tmp/Fedora-x86_64-20-20131211.1-sda.qcow2,copy-on-read=on

مثال: راه‌اندازی از یک ایمیج ذخیره‌شده روی سرور VMware vSphere با یک گواهی خودامضا (self-signed) با استفاده از یک لایه محلی برای نوشتن‌ها، readahead برابر 64k و مهلت زمانی ۱۰ ثانیه.

qemu-img create -f qcow2 -o backing_file='json:{"file.driver":"https",, "file.url":"<https://user:password@vsphere.example.com/folder/test/test-flat.vmdk?dcPath=Datacenter&dsName=datastore1>",, "file.sslverify":"off",, "file.readahead":"64k",, "file.timeout":10}' /tmp/test.qcow2
qemu-system-x86_64 -drive file=/tmp/test.qcow2

مستندات HTML نرم‌افزار QEMU برای اطلاعات دقیق‌تر و فراخوانی شبیه‌ساز حالت کاربر لینوکس.

Fabrice Bellard

2026, The QEMU Project Developers

August 28, 2026 11.1.1