1QEMU.1(1)                                                            QEMU.1(1)
2
3
4

NAME

6       qemu-doc - QEMU version 4.1.1 User Documentation
7

SYNOPSIS

9       qemu-system-i386 [options] [disk_image]
10

DESCRIPTION

12       The QEMU PC System emulator simulates the following peripherals:
13
14       -   i440FX host PCI bridge and PIIX3 PCI to ISA bridge
15
16       -   Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
17           extensions (hardware level, including all non standard modes).
18
19       -   PS/2 mouse and keyboard
20
21       -   2 PCI IDE interfaces with hard disk and CD-ROM support
22
23       -   Floppy disk
24
25       -   PCI and ISA network adapters
26
27       -   Serial ports
28
29       -   IPMI BMC, either and internal or external one
30
31       -   Creative SoundBlaster 16 sound card
32
33       -   ENSONIQ AudioPCI ES1370 sound card
34
35       -   Intel 82801AA AC97 Audio compatible sound card
36
37       -   Intel HD Audio Controller and HDA codec
38
39       -   Adlib (OPL2) - Yamaha YM3812 compatible chip
40
41       -   Gravis Ultrasound GF1 sound card
42
43       -   CS4231A compatible sound card
44
45       -   PCI UHCI, OHCI, EHCI or XHCI USB controller and a virtual USB-1.1
46           hub.
47
48       SMP is supported with up to 255 CPUs.
49
50       QEMU uses the PC BIOS from the Seabios project and the Plex86/Bochs
51       LGPL VGA BIOS.
52
53       QEMU uses YM3812 emulation by Tatsuyuki Satoh.
54
55       QEMU uses GUS emulation (GUSEMU32 <http://www.deinmeister.de/gusemu/>)
56       by Tibor "TS" Schütz.
57
58       Note that, by default, GUS shares IRQ(7) with parallel ports and so
59       QEMU must be told to not have parallel ports to have working GUS.
60
61               qemu-system-i386 dos.img -soundhw gus -parallel none
62
63       Alternatively:
64
65               qemu-system-i386 dos.img -device gus,irq=5
66
67       Or some other unclaimed IRQ.
68
69       CS4231A is the chip used in Windows Sound System and GUSMAX products
70

OPTIONS

72       disk_image is a raw hard disk image for IDE hard disk 0. Some targets
73       do not need a disk image.
74
75       Standard options
76
77       -h  Display help and exit
78
79       -version
80           Display version information and exit
81
82       -machine [type=]name[,prop=value[,...]]
83           Select the emulated machine by name. Use "-machine help" to list
84           available machines.
85
86           For architectures which aim to support live migration compatibility
87           across releases, each release will introduce a new versioned
88           machine type. For example, the 2.8.0 release introduced machine
89           types "pc-i440fx-2.8" and "pc-q35-2.8" for the x86_64/i686
90           architectures.
91
92           To allow live migration of guests from QEMU version 2.8.0, to QEMU
93           version 2.9.0, the 2.9.0 version must support the "pc-i440fx-2.8"
94           and "pc-q35-2.8" machines too. To allow users live migrating VMs to
95           skip multiple intermediate releases when upgrading, new releases of
96           QEMU will support machine types from many previous versions.
97
98           Supported machine properties are:
99
100           accel=accels1[:accels2[:...]]
101               This is used to enable an accelerator. Depending on the target
102               architecture, kvm, xen, hax, hvf, whpx or tcg can be available.
103               By default, tcg is used. If there is more than one accelerator
104               specified, the next one is used if the previous one fails to
105               initialize.
106
107           kernel_irqchip=on|off
108               Controls in-kernel irqchip support for the chosen accelerator
109               when available.
110
111           gfx_passthru=on|off
112               Enables IGD GFX passthrough support for the chosen machine when
113               available.
114
115           vmport=on|off|auto
116               Enables emulation of VMWare IO port, for vmmouse etc. auto says
117               to select the value based on accel. For accel=xen the default
118               is off otherwise the default is on.
119
120           kvm_shadow_mem=size
121               Defines the size of the KVM shadow MMU.
122
123           dump-guest-core=on|off
124               Include guest memory in a core dump. The default is on.
125
126           mem-merge=on|off
127               Enables or disables memory merge support. This feature, when
128               supported by the host, de-duplicates identical memory pages
129               among VMs instances (enabled by default).
130
131           aes-key-wrap=on|off
132               Enables or disables AES key wrapping support on s390-ccw hosts.
133               This feature controls whether AES wrapping keys will be created
134               to allow execution of AES cryptographic functions.  The default
135               is on.
136
137           dea-key-wrap=on|off
138               Enables or disables DEA key wrapping support on s390-ccw hosts.
139               This feature controls whether DEA wrapping keys will be created
140               to allow execution of DEA cryptographic functions.  The default
141               is on.
142
143           nvdimm=on|off
144               Enables or disables NVDIMM support. The default is off.
145
146           enforce-config-section=on|off
147               If enforce-config-section is set to on, force migration code to
148               send configuration section even if the machine-type sets the
149               migration.send-configuration property to off.  NOTE: this
150               parameter is deprecated. Please use -global
151               migration.send-configuration=on|off instead.
152
153           memory-encryption=
154               Memory encryption object to use. The default is none.
155
156       -cpu model
157           Select CPU model ("-cpu help" for list and additional feature
158           selection)
159
160       -accel name[,prop=value[,...]]
161           This is used to enable an accelerator. Depending on the target
162           architecture, kvm, xen, hax, hvf, whpx or tcg can be available. By
163           default, tcg is used. If there is more than one accelerator
164           specified, the next one is used if the previous one fails to
165           initialize.
166
167           thread=single|multi
168               Controls number of TCG threads. When the TCG is multi-threaded
169               there will be one thread per vCPU therefor taking advantage of
170               additional host cores. The default is to enable multi-threading
171               where both the back-end and front-ends support it and no
172               incompatible TCG features have been enabled (e.g.
173               icount/replay).
174
175       -smp
176       [cpus=]n[,cores=cores][,threads=threads][,dies=dies][,sockets=sockets][,maxcpus=maxcpus]
177           Simulate an SMP system with n CPUs. On the PC target, up to 255
178           CPUs are supported. On Sparc32 target, Linux limits the number of
179           usable CPUs to 4.  For the PC target, the number of cores per die,
180           the number of threads per cores, the number of dies per packages
181           and the total number of sockets can be specified. Missing values
182           will be computed.  If any on the three values is given, the total
183           number of CPUs n can be omitted.  maxcpus specifies the maximum
184           number of hotpluggable CPUs.
185
186       -numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node]
187       -numa node[,memdev=id][,cpus=firstcpu[-lastcpu]][,nodeid=node]
188       -numa dist,src=source,dst=destination,val=distance
189       -numa cpu,node-id=node[,socket-id=x][,core-id=y][,thread-id=z]
190           Define a NUMA node and assign RAM and VCPUs to it.  Set the NUMA
191           distance from a source node to a destination node.
192
193           Legacy VCPU assignment uses cpus option where firstcpu and lastcpu
194           are CPU indexes. Each cpus option represent a contiguous range of
195           CPU indexes (or a single VCPU if lastcpu is omitted). A non-
196           contiguous set of VCPUs can be represented by providing multiple
197           cpus options. If cpus is omitted on all nodes, VCPUs are
198           automatically split between them.
199
200           For example, the following option assigns VCPUs 0, 1, 2 and 5 to a
201           NUMA node:
202
203                   -numa node,cpus=0-2,cpus=5
204
205           cpu option is a new alternative to cpus option which uses
206           socket-id|core-id|thread-id properties to assign CPU objects to a
207           node using topology layout properties of CPU.  The set of
208           properties is machine specific, and depends on used machine
209           type/smp options. It could be queried with hotpluggable-cpus
210           monitor command.  node-id property specifies node to which CPU
211           object will be assigned, it's required for node to be declared with
212           node option before it's used with cpu option.
213
214           For example:
215
216                   -M pc \
217                   -smp 1,sockets=2,maxcpus=2 \
218                   -numa node,nodeid=0 -numa node,nodeid=1 \
219                   -numa cpu,node-id=0,socket-id=0 -numa cpu,node-id=1,socket-id=1
220
221           mem assigns a given RAM amount to a node. memdev assigns RAM from a
222           given memory backend device to a node. If mem and memdev are
223           omitted in all nodes, RAM is split equally between them.
224
225           mem and memdev are mutually exclusive. Furthermore, if one node
226           uses memdev, all of them have to use it.
227
228           source and destination are NUMA node IDs.  distance is the NUMA
229           distance from source to destination.  The distance from a node to
230           itself is always 10. If any pair of nodes is given a distance, then
231           all pairs must be given distances. Although, when distances are
232           only given in one direction for each pair of nodes, then the
233           distances in the opposite directions are assumed to be the same.
234           If, however, an asymmetrical pair of distances is given for even
235           one node pair, then all node pairs must be provided distance values
236           for both directions, even when they are symmetrical. When a node is
237           unreachable from another node, set the pair's distance to 255.
238
239           Note that the -numa option doesn't allocate any of the specified
240           resources, it just assigns existing resources to NUMA nodes. This
241           means that one still has to use the -m, -smp options to allocate
242           RAM and VCPUs respectively.
243
244       -add-fd fd=fd,set=set[,opaque=opaque]
245           Add a file descriptor to an fd set.  Valid options are:
246
247           fd=fd
248               This option defines the file descriptor of which a duplicate is
249               added to fd set.  The file descriptor cannot be stdin, stdout,
250               or stderr.
251
252           set=set
253               This option defines the ID of the fd set to add the file
254               descriptor to.
255
256           opaque=opaque
257               This option defines a free-form string that can be used to
258               describe fd.
259
260           You can open an image using pre-opened file descriptors from an fd
261           set:
262
263                   qemu-system-i386
264                   -add-fd fd=3,set=2,opaque="rdwr:/path/to/file"
265                   -add-fd fd=4,set=2,opaque="rdonly:/path/to/file"
266                   -drive file=/dev/fdset/2,index=0,media=disk
267
268       -set group.id.arg=value
269           Set parameter arg for item id of type group
270
271       -global driver.prop=value
272       -global driver=driver,property=property,value=value
273           Set default value of driver's property prop to value, e.g.:
274
275                   qemu-system-i386 -global ide-hd.physical_block_size=4096 disk-image.img
276
277           In particular, you can use this to set driver properties for
278           devices which are created automatically by the machine model. To
279           create a device which is not created automatically and set
280           properties on it, use -device.
281
282           -global driver.prop=value is shorthand for -global
283           driver=driver,property=prop,value=value.  The longhand syntax works
284           even when driver contains a dot.
285
286       -boot
287       [order=drives][,once=drives][,menu=on|off][,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_timeout][,strict=on|off]
288           Specify boot order drives as a string of drive letters. Valid drive
289           letters depend on the target architecture. The x86 PC uses: a, b
290           (floppy 1 and 2), c (first hard disk), d (first CD-ROM), n-p
291           (Etherboot from network adapter 1-4), hard disk boot is the
292           default. To apply a particular boot order only on the first
293           startup, specify it via once. Note that the order or once parameter
294           should not be used together with the bootindex property of devices,
295           since the firmware implementations normally do not support both at
296           the same time.
297
298           Interactive boot menus/prompts can be enabled via menu=on as far as
299           firmware/BIOS supports them. The default is non-interactive boot.
300
301           A splash picture could be passed to bios, enabling user to show it
302           as logo, when option splash=sp_name is given and menu=on, If
303           firmware/BIOS supports them. Currently Seabios for X86 system
304           support it.  limitation: The splash file could be a jpeg file or a
305           BMP file in 24 BPP format(true color). The resolution should be
306           supported by the SVGA mode, so the recommended is 320x240, 640x480,
307           800x640.
308
309           A timeout could be passed to bios, guest will pause for rb_timeout
310           ms when boot failed, then reboot. If rb_timeout is '-1', guest will
311           not reboot, qemu passes '-1' to bios by default. Currently Seabios
312           for X86 system support it.
313
314           Do strict boot via strict=on as far as firmware/BIOS supports it.
315           This only effects when boot priority is changed by bootindex
316           options. The default is non-strict boot.
317
318                   # try to boot from network first, then from hard disk
319                   qemu-system-i386 -boot order=nc
320                   # boot from CD-ROM first, switch back to default order after reboot
321                   qemu-system-i386 -boot once=d
322                   # boot with a splash picture for 5 seconds.
323                   qemu-system-i386 -boot menu=on,splash=/root/boot.bmp,splash-time=5000
324
325           Note: The legacy format '-boot drives' is still supported but its
326           use is discouraged as it may be removed from future versions.
327
328       -m [size=]megs[,slots=n,maxmem=size]
329           Sets guest startup RAM size to megs megabytes. Default is 128 MiB.
330           Optionally, a suffix of "M" or "G" can be used to signify a value
331           in megabytes or gigabytes respectively. Optional pair slots, maxmem
332           could be used to set amount of hotpluggable memory slots and
333           maximum amount of memory. Note that maxmem must be aligned to the
334           page size.
335
336           For example, the following command-line sets the guest startup RAM
337           size to 1GB, creates 3 slots to hotplug additional memory and sets
338           the maximum memory the guest can reach to 4GB:
339
340                   qemu-system-x86_64 -m 1G,slots=3,maxmem=4G
341
342           If slots and maxmem are not specified, memory hotplug won't be
343           enabled and the guest startup RAM will never increase.
344
345       -mem-path path
346           Allocate guest RAM from a temporarily created file in path.
347
348       -mem-prealloc
349           Preallocate memory when using -mem-path.
350
351       -k language
352           Use keyboard layout language (for example "fr" for French). This
353           option is only needed where it is not easy to get raw PC keycodes
354           (e.g. on Macs, with some X11 servers or with a VNC or curses
355           display). You don't normally need to use it on PC/Linux or
356           PC/Windows hosts.
357
358           The available layouts are:
359
360                   ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
361                   da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
362                   de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
363
364           The default is "en-us".
365
366       -audio-help
367           Will show the -audiodev equivalent of the currently specified
368           (deprecated) environment variables.
369
370       -audiodev [driver=]driver,id=id[,prop[=value][,...]]
371           Adds a new audio backend driver identified by id.  There are global
372           and driver specific properties.  Some values can be set differently
373           for input and output, they're marked with "in|out.".  You can set
374           the input's property with "in.prop" and the output's property with
375           "out.prop". For example:
376
377                   -audiodev alsa,id=example,in.frequency=44110,out.frequency=8000
378                   -audiodev alsa,id=example,out.channels=1 # leaves in.channels unspecified
379
380           Valid global options are:
381
382           id=identifier
383               Identifies the audio backend.
384
385           timer-period=period
386               Sets the timer period used by the audio subsystem in
387               microseconds.  Default is 10000 (10 ms).
388
389           in|out.fixed-settings=on|off
390               Use fixed settings for host audio.  When off, it will change
391               based on how the guest opens the sound card.  In this case you
392               must not specify frequency, channels or format.  Default is on.
393
394           in|out.frequency=frequency
395               Specify the frequency to use when using fixed-settings.
396               Default is 44100Hz.
397
398           in|out.channels=channels
399               Specify the number of channels to use when using fixed-
400               settings. Default is 2 (stereo).
401
402           in|out.format=format
403               Specify the sample format to use when using fixed-settings.
404               Valid values are: "s8", "s16", "s32", "u8", "u16", "u32".
405               Default is "s16".
406
407           in|out.voices=voices
408               Specify the number of voices to use.  Default is 1.
409
410           in|out.buffer=usecs
411               Sets the size of the buffer in microseconds.
412
413       -audiodev none,id=id[,prop[=value][,...]]
414           Creates a dummy backend that discards all outputs.  This backend
415           has no backend specific properties.
416
417       -audiodev alsa,id=id[,prop[=value][,...]]
418           Creates backend using the ALSA.  This backend is only available on
419           Linux.
420
421           ALSA specific options are:
422
423           in|out.dev=device
424               Specify the ALSA device to use for input and/or output.
425               Default is "default".
426
427           in|out.period-len=usecs
428               Sets the period length in microseconds.
429
430           in|out.try-poll=on|off
431               Attempt to use poll mode with the device.  Default is on.
432
433           threshold=threshold
434               Threshold (in microseconds) when playback starts.  Default is
435               0.
436
437       -audiodev coreaudio,id=id[,prop[=value][,...]]
438           Creates a backend using Apple's Core Audio.  This backend is only
439           available on Mac OS and only supports playback.
440
441           Core Audio specific options are:
442
443           in|out.buffer-count=count
444               Sets the count of the buffers.
445
446       -audiodev dsound,id=id[,prop[=value][,...]]
447           Creates a backend using Microsoft's DirectSound.  This backend is
448           only available on Windows and only supports playback.
449
450           DirectSound specific options are:
451
452           latency=usecs
453               Add extra usecs microseconds latency to playback.  Default is
454               10000 (10 ms).
455
456       -audiodev oss,id=id[,prop[=value][,...]]
457           Creates a backend using OSS.  This backend is available on most
458           Unix-like systems.
459
460           OSS specific options are:
461
462           in|out.dev=device
463               Specify the file name of the OSS device to use.  Default is
464               "/dev/dsp".
465
466           in|out.buffer-count=count
467               Sets the count of the buffers.
468
469           in|out.try-poll=on|of
470               Attempt to use poll mode with the device.  Default is on.
471
472           try-mmap=on|off
473               Try using memory mapped device access.  Default is off.
474
475           exclusive=on|off
476               Open the device in exclusive mode (vmix won't work in this
477               case).  Default is off.
478
479           dsp-policy=policy
480               Sets the timing policy (between 0 and 10, where smaller number
481               means smaller latency but higher CPU usage).  Use -1 to use
482               buffer sizes specified by "buffer" and "buffer-count".  This
483               option is ignored if you do not have OSS 4. Default is 5.
484
485       -audiodev pa,id=id[,prop[=value][,...]]
486           Creates a backend using PulseAudio.  This backend is available on
487           most systems.
488
489           PulseAudio specific options are:
490
491           server=server
492               Sets the PulseAudio server to connect to.
493
494           in|out.name=sink
495               Use the specified source/sink for recording/playback.
496
497       -audiodev sdl,id=id[,prop[=value][,...]]
498           Creates a backend using SDL.  This backend is available on most
499           systems, but you should use your platform's native backend if
500           possible.  This backend has no backend specific properties.
501
502       -audiodev spice,id=id[,prop[=value][,...]]
503           Creates a backend that sends audio through SPICE.  This backend
504           requires "-spice" and automatically selected in that case, so
505           usually you can ignore this option.  This backend has no backend
506           specific properties.
507
508       -audiodev wav,id=id[,prop[=value][,...]]
509           Creates a backend that writes audio to a WAV file.
510
511           Backend specific options are:
512
513           path=path
514               Write recorded audio into the specified file.  Default is
515               "qemu.wav".
516
517       -soundhw card1[,card2,...] or -soundhw all
518           Enable audio and selected sound hardware. Use 'help' to print all
519           available sound hardware.
520
521                   qemu-system-i386 -soundhw sb16,adlib disk.img
522                   qemu-system-i386 -soundhw es1370 disk.img
523                   qemu-system-i386 -soundhw ac97 disk.img
524                   qemu-system-i386 -soundhw hda disk.img
525                   qemu-system-i386 -soundhw all disk.img
526                   qemu-system-i386 -soundhw help
527
528           Note that Linux's i810_audio OSS kernel (for AC97) module might
529           require manually specifying clocking.
530
531                   modprobe i810_audio clocking=48000
532
533       -device driver[,prop[=value][,...]]
534           Add device driver.  prop=value sets driver properties.  Valid
535           properties depend on the driver.  To get help on possible drivers
536           and properties, use "-device help" and "-device driver,help".
537
538           Some drivers are:
539
540       -device
541       ipmi-bmc-sim,id=id[,slave_addr=val][,sdrfile=file][,furareasize=val][,furdatafile=file]
542           Add an IPMI BMC.  This is a simulation of a hardware management
543           interface processor that normally sits on a system.  It provides a
544           watchdog and the ability to reset and power control the system.
545           You need to connect this to an IPMI interface to make it useful
546
547           The IPMI slave address to use for the BMC.  The default is 0x20.
548           This address is the BMC's address on the I2C network of management
549           controllers.  If you don't know what this means, it is safe to
550           ignore it.
551
552           bmc=id
553               The BMC to connect to, one of ipmi-bmc-sim or ipmi-bmc-extern
554               above.
555
556           slave_addr=val
557               Define slave address to use for the BMC.  The default is 0x20.
558
559           sdrfile=file
560               file containing raw Sensor Data Records (SDR) data. The default
561               is none.
562
563           fruareasize=val
564               size of a Field Replaceable Unit (FRU) area.  The default is
565               1024.
566
567           frudatafile=file
568               file containing raw Field Replaceable Unit (FRU) inventory
569               data. The default is none.
570
571       -device ipmi-bmc-extern,id=id,chardev=id[,slave_addr=val]
572           Add a connection to an external IPMI BMC simulator.  Instead of
573           locally emulating the BMC like the above item, instead connect to
574           an external entity that provides the IPMI services.
575
576           A connection is made to an external BMC simulator.  If you do this,
577           it is strongly recommended that you use the "reconnect=" chardev
578           option to reconnect to the simulator if the connection is lost.
579           Note that if this is not used carefully, it can be a security
580           issue, as the interface has the ability to send resets, NMIs, and
581           power off the VM.  It's best if QEMU makes a connection to an
582           external simulator running on a secure port on localhost, so
583           neither the simulator nor QEMU is exposed to any outside network.
584
585           See the "lanserv/README.vm" file in the OpenIPMI library for more
586           details on the external interface.
587
588       -device isa-ipmi-kcs,bmc=id[,ioport=val][,irq=val]
589           Add a KCS IPMI interafce on the ISA bus.  This also adds a
590           corresponding ACPI and SMBIOS entries, if appropriate.
591
592           bmc=id
593               The BMC to connect to, one of ipmi-bmc-sim or ipmi-bmc-extern
594               above.
595
596           ioport=val
597               Define the I/O address of the interface.  The default is 0xca0
598               for KCS.
599
600           irq=val
601               Define the interrupt to use.  The default is 5.  To disable
602               interrupts, set this to 0.
603
604       -device isa-ipmi-bt,bmc=id[,ioport=val][,irq=val]
605           Like the KCS interface, but defines a BT interface.  The default
606           port is 0xe4 and the default interrupt is 5.
607
608       -name name
609           Sets the name of the guest.  This name will be displayed in the SDL
610           window caption.  The name will also be used for the VNC server.
611           Also optionally set the top visible process name in Linux.  Naming
612           of individual threads can also be enabled on Linux to aid
613           debugging.
614
615       -uuid uuid
616           Set system UUID.
617
618       Block device options
619
620       -fda file
621       -fdb file
622           Use file as floppy disk 0/1 image.
623
624       -hda file
625       -hdb file
626       -hdc file
627       -hdd file
628           Use file as hard disk 0, 1, 2 or 3 image.
629
630       -cdrom file
631           Use file as CD-ROM image (you cannot use -hdc and -cdrom at the
632           same time). You can use the host CD-ROM by using /dev/cdrom as
633           filename.
634
635       -blockdev option[,option[,option[,...]]]
636           Define a new block driver node. Some of the options apply to all
637           block drivers, other options are only accepted for a specific block
638           driver. See below for a list of generic options and options for the
639           most common block drivers.
640
641           Options that expect a reference to another node (e.g. "file") can
642           be given in two ways. Either you specify the node name of an
643           already existing node (file=node-name), or you define a new node
644           inline, adding options for the referenced node after a dot
645           (file.filename=path,file.aio=native).
646
647           A block driver node created with -blockdev can be used for a guest
648           device by specifying its node name for the "drive" property in a
649           -device argument that defines a block device.
650
651           Valid options for any block driver node:
652               "driver"
653                   Specifies the block driver to use for the given node.
654
655               "node-name"
656                   This defines the name of the block driver node by which it
657                   will be referenced later. The name must be unique, i.e. it
658                   must not match the name of a different block driver node,
659                   or (if you use -drive as well) the ID of a drive.
660
661                   If no node name is specified, it is automatically
662                   generated. The generated node name is not intended to be
663                   predictable and changes between QEMU invocations.  For the
664                   top level, an explicit node name must be specified.
665
666               "read-only"
667                   Open the node read-only. Guest write attempts will fail.
668
669               "cache.direct"
670                   The host page cache can be avoided with cache.direct=on.
671                   This will attempt to do disk IO directly to the guest's
672                   memory. QEMU may still perform an internal copy of the
673                   data.
674
675               "cache.no-flush"
676                   In case you don't care about data integrity over host
677                   failures, you can use cache.no-flush=on. This option tells
678                   QEMU that it never needs to write any data to the disk but
679                   can instead keep things in cache. If anything goes wrong,
680                   like your host losing power, the disk storage getting
681                   disconnected accidentally, etc. your image will most
682                   probably be rendered unusable.
683
684               "discard=discard"
685                   discard is one of "ignore" (or "off") or "unmap" (or "on")
686                   and controls whether "discard" (also known as "trim" or
687                   "unmap") requests are ignored or passed to the filesystem.
688                   Some machine types may not support discard requests.
689
690               "detect-zeroes=detect-zeroes"
691                   detect-zeroes is "off", "on" or "unmap" and enables the
692                   automatic conversion of plain zero writes by the OS to
693                   driver specific optimized zero write commands. You may even
694                   choose "unmap" if discard is set to "unmap" to allow a zero
695                   write to be converted to an "unmap" operation.
696
697           Driver-specific options for "file"
698               This is the protocol-level block driver for accessing regular
699               files.
700
701               "filename"
702                   The path to the image file in the local filesystem
703
704               "aio"
705                   Specifies the AIO backend (threads/native, default:
706                   threads)
707
708               "locking"
709                   Specifies whether the image file is protected with Linux
710                   OFD / POSIX locks. The default is to use the Linux Open
711                   File Descriptor API if available, otherwise no lock is
712                   applied.  (auto/on/off, default: auto)
713
714               Example:
715
716                       -blockdev driver=file,node-name=disk,filename=disk.img
717
718           Driver-specific options for "raw"
719               This is the image format block driver for raw images. It is
720               usually stacked on top of a protocol level block driver such as
721               "file".
722
723               "file"
724                   Reference to or definition of the data source block driver
725                   node (e.g. a "file" driver node)
726
727               Example 1:
728
729                       -blockdev driver=file,node-name=disk_file,filename=disk.img
730                       -blockdev driver=raw,node-name=disk,file=disk_file
731
732               Example 2:
733
734                       -blockdev driver=raw,node-name=disk,file.driver=file,file.filename=disk.img
735
736           Driver-specific options for "qcow2"
737               This is the image format block driver for qcow2 images. It is
738               usually stacked on top of a protocol level block driver such as
739               "file".
740
741               "file"
742                   Reference to or definition of the data source block driver
743                   node (e.g. a "file" driver node)
744
745               "backing"
746                   Reference to or definition of the backing file block device
747                   (default is taken from the image file). It is allowed to
748                   pass "null" here in order to disable the default backing
749                   file.
750
751               "lazy-refcounts"
752                   Whether to enable the lazy refcounts feature (on/off;
753                   default is taken from the image file)
754
755               "cache-size"
756                   The maximum total size of the L2 table and refcount block
757                   caches in bytes (default: the sum of l2-cache-size and
758                   refcount-cache-size)
759
760               "l2-cache-size"
761                   The maximum size of the L2 table cache in bytes (default:
762                   if cache-size is not specified - 32M on Linux platforms,
763                   and 8M on non-Linux platforms; otherwise, as large as
764                   possible within the cache-size, while permitting the
765                   requested or the minimal refcount cache size)
766
767               "refcount-cache-size"
768                   The maximum size of the refcount block cache in bytes
769                   (default: 4 times the cluster size; or if cache-size is
770                   specified, the part of it which is not used for the L2
771                   cache)
772
773               "cache-clean-interval"
774                   Clean unused entries in the L2 and refcount caches. The
775                   interval is in seconds.  The default value is 600 on
776                   supporting platforms, and 0 on other platforms.  Setting it
777                   to 0 disables this feature.
778
779               "pass-discard-request"
780                   Whether discard requests to the qcow2 device should be
781                   forwarded to the data source (on/off; default: on if
782                   discard=unmap is specified, off otherwise)
783
784               "pass-discard-snapshot"
785                   Whether discard requests for the data source should be
786                   issued when a snapshot operation (e.g. deleting a snapshot)
787                   frees clusters in the qcow2 file (on/off; default: on)
788
789               "pass-discard-other"
790                   Whether discard requests for the data source should be
791                   issued on other occasions where a cluster gets freed
792                   (on/off; default: off)
793
794               "overlap-check"
795                   Which overlap checks to perform for writes to the image
796                   (none/constant/cached/all; default: cached). For details or
797                   finer granularity control refer to the QAPI documentation
798                   of "blockdev-add".
799
800               Example 1:
801
802                       -blockdev driver=file,node-name=my_file,filename=/tmp/disk.qcow2
803                       -blockdev driver=qcow2,node-name=hda,file=my_file,overlap-check=none,cache-size=16777216
804
805               Example 2:
806
807                       -blockdev driver=qcow2,node-name=disk,file.driver=http,file.filename=http://example.com/image.qcow2
808
809           Driver-specific options for other drivers
810               Please refer to the QAPI documentation of the "blockdev-add"
811               QMP command.
812
813       -drive option[,option[,option[,...]]]
814           Define a new drive. This includes creating a block driver node (the
815           backend) as well as a guest device, and is mostly a shortcut for
816           defining the corresponding -blockdev and -device options.
817
818           -drive accepts all options that are accepted by -blockdev. In
819           addition, it knows the following options:
820
821           file=file
822               This option defines which disk image to use with this drive. If
823               the filename contains comma, you must double it (for instance,
824               "file=my,,file" to use file "my,file").
825
826               Special files such as iSCSI devices can be specified using
827               protocol specific URLs. See the section for "Device URL Syntax"
828               for more information.
829
830           if=interface
831               This option defines on which type on interface the drive is
832               connected.  Available types are: ide, scsi, sd, mtd, floppy,
833               pflash, virtio, none.
834
835           bus=bus,unit=unit
836               These options define where is connected the drive by defining
837               the bus number and the unit id.
838
839           index=index
840               This option defines where is connected the drive by using an
841               index in the list of available connectors of a given interface
842               type.
843
844           media=media
845               This option defines the type of the media: disk or cdrom.
846
847           snapshot=snapshot
848               snapshot is "on" or "off" and controls snapshot mode for the
849               given drive (see -snapshot).
850
851           cache=cache
852               cache is "none", "writeback", "unsafe", "directsync" or
853               "writethrough" and controls how the host cache is used to
854               access block data. This is a shortcut that sets the
855               cache.direct and cache.no-flush options (as in -blockdev), and
856               additionally cache.writeback, which provides a default for the
857               write-cache option of block guest devices (as in -device). The
858               modes correspond to the following settings:
859
860                                    │ cache.writeback   cache.direct   cache.no-flush
861                       ─────────────┼─────────────────────────────────────────────────
862                       writeback    │ on                off            off
863                       none         │ on                on             off
864                       writethrough │ off               off            off
865                       directsync   │ off               on             off
866                       unsafe       │ on                off            on
867
868               The default mode is cache=writeback.
869
870           aio=aio
871               aio is "threads", or "native" and selects between pthread based
872               disk I/O and native Linux AIO.
873
874           format=format
875               Specify which disk format will be used rather than detecting
876               the format.  Can be used to specify format=raw to avoid
877               interpreting an untrusted format header.
878
879           werror=action,rerror=action
880               Specify which action to take on write and read errors. Valid
881               actions are: "ignore" (ignore the error and try to continue),
882               "stop" (pause QEMU), "report" (report the error to the guest),
883               "enospc" (pause QEMU only if the host disk is full; report the
884               error to the guest otherwise).  The default setting is
885               werror=enospc and rerror=report.
886
887           copy-on-read=copy-on-read
888               copy-on-read is "on" or "off" and enables whether to copy read
889               backing file sectors into the image file.
890
891           bps=b,bps_rd=r,bps_wr=w
892               Specify bandwidth throttling limits in bytes per second, either
893               for all request types or for reads or writes only.  Small
894               values can lead to timeouts or hangs inside the guest.  A safe
895               minimum for disks is 2 MB/s.
896
897           bps_max=bm,bps_rd_max=rm,bps_wr_max=wm
898               Specify bursts in bytes per second, either for all request
899               types or for reads or writes only.  Bursts allow the guest I/O
900               to spike above the limit temporarily.
901
902           iops=i,iops_rd=r,iops_wr=w
903               Specify request rate limits in requests per second, either for
904               all request types or for reads or writes only.
905
906           iops_max=bm,iops_rd_max=rm,iops_wr_max=wm
907               Specify bursts in requests per second, either for all request
908               types or for reads or writes only.  Bursts allow the guest I/O
909               to spike above the limit temporarily.
910
911           iops_size=is
912               Let every is bytes of a request count as a new request for iops
913               throttling purposes.  Use this option to prevent guests from
914               circumventing iops limits by sending fewer but larger requests.
915
916           group=g
917               Join a throttling quota group with given name g.  All drives
918               that are members of the same group are accounted for together.
919               Use this option to prevent guests from circumventing throttling
920               limits by using many small disks instead of a single larger
921               disk.
922
923           By default, the cache.writeback=on mode is used. It will report
924           data writes as completed as soon as the data is present in the host
925           page cache.  This is safe as long as your guest OS makes sure to
926           correctly flush disk caches where needed. If your guest OS does not
927           handle volatile disk write caches correctly and your host crashes
928           or loses power, then the guest may experience data corruption.
929
930           For such guests, you should consider using cache.writeback=off.
931           This means that the host page cache will be used to read and write
932           data, but write notification will be sent to the guest only after
933           QEMU has made sure to flush each write to the disk. Be aware that
934           this has a major impact on performance.
935
936           When using the -snapshot option, unsafe caching is always used.
937
938           Copy-on-read avoids accessing the same backing file sectors
939           repeatedly and is useful when the backing file is over a slow
940           network.  By default copy-on-read is off.
941
942           Instead of -cdrom you can use:
943
944                   qemu-system-i386 -drive file=file,index=2,media=cdrom
945
946           Instead of -hda, -hdb, -hdc, -hdd, you can use:
947
948                   qemu-system-i386 -drive file=file,index=0,media=disk
949                   qemu-system-i386 -drive file=file,index=1,media=disk
950                   qemu-system-i386 -drive file=file,index=2,media=disk
951                   qemu-system-i386 -drive file=file,index=3,media=disk
952
953           You can open an image using pre-opened file descriptors from an fd
954           set:
955
956                   qemu-system-i386
957                   -add-fd fd=3,set=2,opaque="rdwr:/path/to/file"
958                   -add-fd fd=4,set=2,opaque="rdonly:/path/to/file"
959                   -drive file=/dev/fdset/2,index=0,media=disk
960
961           You can connect a CDROM to the slave of ide0:
962
963                   qemu-system-i386 -drive file=file,if=ide,index=1,media=cdrom
964
965           If you don't specify the "file=" argument, you define an empty
966           drive:
967
968                   qemu-system-i386 -drive if=ide,index=1,media=cdrom
969
970           Instead of -fda, -fdb, you can use:
971
972                   qemu-system-i386 -drive file=file,index=0,if=floppy
973                   qemu-system-i386 -drive file=file,index=1,if=floppy
974
975           By default, interface is "ide" and index is automatically
976           incremented:
977
978                   qemu-system-i386 -drive file=a -drive file=b"
979
980           is interpreted like:
981
982                   qemu-system-i386 -hda a -hdb b
983
984       -mtdblock file
985           Use file as on-board Flash memory image.
986
987       -sd file
988           Use file as SecureDigital card image.
989
990       -pflash file
991           Use file as a parallel flash image.
992
993       -snapshot
994           Write to temporary files instead of disk image files. In this case,
995           the raw disk image you use is not written back. You can however
996           force the write back by pressing C-a s.
997
998       -fsdev local,id=id,path=path,security_model=security_model
999       [,writeout=writeout][,readonly][,fmode=fmode][,dmode=dmode]
1000       [,throttling.option=value[,throttling.option=value[,...]]]
1001       -fsdev proxy,id=id,socket=socket[,writeout=writeout][,readonly]
1002       -fsdev proxy,id=id,sock_fd=sock_fd[,writeout=writeout][,readonly]
1003       -fsdev synth,id=id[,readonly]
1004           Define a new file system device. Valid options are:
1005
1006           local
1007               Accesses to the filesystem are done by QEMU.
1008
1009           proxy
1010               Accesses to the filesystem are done by virtfs-proxy-helper(1).
1011
1012           synth
1013               Synthetic filesystem, only used by QTests.
1014
1015           id=id
1016               Specifies identifier for this device.
1017
1018           path=path
1019               Specifies the export path for the file system device. Files
1020               under this path will be available to the 9p client on the
1021               guest.
1022
1023           security_model=security_model
1024               Specifies the security model to be used for this export path.
1025               Supported security models are "passthrough", "mapped-xattr",
1026               "mapped-file" and "none".  In "passthrough" security model,
1027               files are stored using the same credentials as they are created
1028               on the guest. This requires QEMU to run as root. In "mapped-
1029               xattr" security model, some of the file attributes like uid,
1030               gid, mode bits and link target are stored as file attributes.
1031               For "mapped-file" these attributes are stored in the hidden
1032               .virtfs_metadata directory. Directories exported by this
1033               security model cannot interact with other unix tools. "none"
1034               security model is same as passthrough except the sever won't
1035               report failures if it fails to set file attributes like
1036               ownership. Security model is mandatory only for local fsdriver.
1037               Other fsdrivers (like proxy) don't take security model as a
1038               parameter.
1039
1040           writeout=writeout
1041               This is an optional argument. The only supported value is
1042               "immediate".  This means that host page cache will be used to
1043               read and write data but write notification will be sent to the
1044               guest only when the data has been reported as written by the
1045               storage subsystem.
1046
1047           readonly
1048               Enables exporting 9p share as a readonly mount for guests. By
1049               default read-write access is given.
1050
1051           socket=socket
1052               Enables proxy filesystem driver to use passed socket file for
1053               communicating with virtfs-proxy-helper(1).
1054
1055           sock_fd=sock_fd
1056               Enables proxy filesystem driver to use passed socket descriptor
1057               for communicating with virtfs-proxy-helper(1). Usually a helper
1058               like libvirt will create socketpair and pass one of the fds as
1059               sock_fd.
1060
1061           fmode=fmode
1062               Specifies the default mode for newly created files on the host.
1063               Works only with security models "mapped-xattr" and "mapped-
1064               file".
1065
1066           dmode=dmode
1067               Specifies the default mode for newly created directories on the
1068               host. Works only with security models "mapped-xattr" and
1069               "mapped-file".
1070
1071           throttling.bps-total=b,throttling.bps-read=r,throttling.bps-write=w
1072               Specify bandwidth throttling limits in bytes per second, either
1073               for all request types or for reads or writes only.
1074
1075           throttling.bps-total-max=bm,bps-read-max=rm,bps-write-max=wm
1076               Specify bursts in bytes per second, either for all request
1077               types or for reads or writes only.  Bursts allow the guest I/O
1078               to spike above the limit temporarily.
1079
1080           throttling.iops-total=i,throttling.iops-read=r,
1081           throttling.iops-write=w
1082               Specify request rate limits in requests per second, either for
1083               all request types or for reads or writes only.
1084
1085           throttling.iops-total-max=im,throttling.iops-read-max=irm,
1086           throttling.iops-write-max=iwm
1087               Specify bursts in requests per second, either for all request
1088               types or for reads or writes only.  Bursts allow the guest I/O
1089               to spike above the limit temporarily.
1090
1091           throttling.iops-size=is
1092               Let every is bytes of a request count as a new request for iops
1093               throttling purposes.
1094
1095           -fsdev option is used along with -device driver "virtio-9p-...".
1096
1097       -device virtio-9p-type,fsdev=id,mount_tag=mount_tag
1098           Options for virtio-9p-... driver are:
1099
1100           type
1101               Specifies the variant to be used. Supported values are "pci",
1102               "ccw" or "device", depending on the machine type.
1103
1104           fsdev=id
1105               Specifies the id value specified along with -fsdev option.
1106
1107           mount_tag=mount_tag
1108               Specifies the tag name to be used by the guest to mount this
1109               export point.
1110
1111       -virtfs local,path=path,mount_tag=mount_tag
1112       ,security_model=security_model[,writeout=writeout][,readonly]
1113       [,fmode=fmode][,dmode=dmode]
1114       -virtfs proxy,socket=socket,mount_tag=mount_tag
1115       [,writeout=writeout][,readonly]
1116       -virtfs proxy,sock_fd=sock_fd,mount_tag=mount_tag
1117       [,writeout=writeout][,readonly]
1118       -virtfs synth,mount_tag=mount_tag
1119           Define a new filesystem device and expose it to the guest using a
1120           virtio-9p-device. The general form of a Virtual File system pass-
1121           through options are:
1122
1123           local
1124               Accesses to the filesystem are done by QEMU.
1125
1126           proxy
1127               Accesses to the filesystem are done by virtfs-proxy-helper(1).
1128
1129           synth
1130               Synthetic filesystem, only used by QTests.
1131
1132           id=id
1133               Specifies identifier for the filesystem device
1134
1135           path=path
1136               Specifies the export path for the file system device. Files
1137               under this path will be available to the 9p client on the
1138               guest.
1139
1140           security_model=security_model
1141               Specifies the security model to be used for this export path.
1142               Supported security models are "passthrough", "mapped-xattr",
1143               "mapped-file" and "none".  In "passthrough" security model,
1144               files are stored using the same credentials as they are created
1145               on the guest. This requires QEMU to run as root. In "mapped-
1146               xattr" security model, some of the file attributes like uid,
1147               gid, mode bits and link target are stored as file attributes.
1148               For "mapped-file" these attributes are stored in the hidden
1149               .virtfs_metadata directory. Directories exported by this
1150               security model cannot interact with other unix tools. "none"
1151               security model is same as passthrough except the sever won't
1152               report failures if it fails to set file attributes like
1153               ownership. Security model is mandatory only for local fsdriver.
1154               Other fsdrivers (like proxy) don't take security model as a
1155               parameter.
1156
1157           writeout=writeout
1158               This is an optional argument. The only supported value is
1159               "immediate".  This means that host page cache will be used to
1160               read and write data but write notification will be sent to the
1161               guest only when the data has been reported as written by the
1162               storage subsystem.
1163
1164           readonly
1165               Enables exporting 9p share as a readonly mount for guests. By
1166               default read-write access is given.
1167
1168           socket=socket
1169               Enables proxy filesystem driver to use passed socket file for
1170               communicating with virtfs-proxy-helper(1). Usually a helper
1171               like libvirt will create socketpair and pass one of the fds as
1172               sock_fd.
1173
1174           sock_fd
1175               Enables proxy filesystem driver to use passed 'sock_fd' as the
1176               socket descriptor for interfacing with virtfs-proxy-helper(1).
1177
1178           fmode=fmode
1179               Specifies the default mode for newly created files on the host.
1180               Works only with security models "mapped-xattr" and "mapped-
1181               file".
1182
1183           dmode=dmode
1184               Specifies the default mode for newly created directories on the
1185               host. Works only with security models "mapped-xattr" and
1186               "mapped-file".
1187
1188           mount_tag=mount_tag
1189               Specifies the tag name to be used by the guest to mount this
1190               export point.
1191
1192       -virtfs_synth
1193           Create synthetic file system image. Note that this option is now
1194           deprecated.  Please use "-fsdev synth" and "-device virtio-9p-..."
1195           instead.
1196
1197       -iscsi
1198           Configure iSCSI session parameters.
1199
1200       USB options
1201
1202       -usb
1203           Enable the USB driver (if it is not used by default yet).
1204
1205       -usbdevice devname
1206           Add the USB device devname. Note that this option is deprecated,
1207           please use "-device usb-..." instead.
1208
1209           mouse
1210               Virtual Mouse. This will override the PS/2 mouse emulation when
1211               activated.
1212
1213           tablet
1214               Pointer device that uses absolute coordinates (like a
1215               touchscreen). This means QEMU is able to report the mouse
1216               position without having to grab the mouse. Also overrides the
1217               PS/2 mouse emulation when activated.
1218
1219           braille
1220               Braille device.  This will use BrlAPI to display the braille
1221               output on a real or fake device.
1222
1223       Display options
1224
1225       -display type
1226           Select type of display to use. This option is a replacement for the
1227           old style -sdl/-curses/... options. Valid values for type are
1228
1229           sdl Display video output via SDL (usually in a separate graphics
1230               window; see the SDL documentation for other possibilities).
1231
1232           curses
1233               Display video output via curses. For graphics device models
1234               which support a text mode, QEMU can display this output using a
1235               curses/ncurses interface. Nothing is displayed when the
1236               graphics device is in graphical mode or if the graphics device
1237               does not support a text mode. Generally only the VGA device
1238               models support text mode.  The font charset used by the guest
1239               can be specified with the "charset" option, for example
1240               "charset=CP850" for IBM CP850 encoding. The default is "CP437".
1241
1242           none
1243               Do not display video output. The guest will still see an
1244               emulated graphics card, but its output will not be displayed to
1245               the QEMU user. This option differs from the -nographic option
1246               in that it only affects what is done with video output;
1247               -nographic also changes the destination of the serial and
1248               parallel port data.
1249
1250           gtk Display video output in a GTK window. This interface provides
1251               drop-down menus and other UI elements to configure and control
1252               the VM during runtime.
1253
1254           vnc Start a VNC server on display <arg>
1255
1256           egl-headless
1257               Offload all OpenGL operations to a local DRI device. For any
1258               graphical display, this display needs to be paired with either
1259               VNC or SPICE displays.
1260
1261           spice-app
1262               Start QEMU as a Spice server and launch the default Spice
1263               client application. The Spice server will redirect the serial
1264               consoles and QEMU monitors. (Since 4.0)
1265
1266       -nographic
1267           Normally, if QEMU is compiled with graphical window support, it
1268           displays output such as guest graphics, guest console, and the QEMU
1269           monitor in a window. With this option, you can totally disable
1270           graphical output so that QEMU is a simple command line application.
1271           The emulated serial port is redirected on the console and muxed
1272           with the monitor (unless redirected elsewhere explicitly).
1273           Therefore, you can still use QEMU to debug a Linux kernel with a
1274           serial console. Use C-a h for help on switching between the console
1275           and monitor.
1276
1277       -curses
1278           Normally, if QEMU is compiled with graphical window support, it
1279           displays output such as guest graphics, guest console, and the QEMU
1280           monitor in a window. With this option, QEMU can display the VGA
1281           output when in text mode using a curses/ncurses interface. Nothing
1282           is displayed in graphical mode.
1283
1284       -alt-grab
1285           Use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt). Note that
1286           this also affects the special keys (for fullscreen, monitor-mode
1287           switching, etc).
1288
1289       -ctrl-grab
1290           Use Right-Ctrl to grab mouse (instead of Ctrl-Alt). Note that this
1291           also affects the special keys (for fullscreen, monitor-mode
1292           switching, etc).
1293
1294       -no-quit
1295           Disable SDL window close capability.
1296
1297       -sdl
1298           Enable SDL.
1299
1300       -spice option[,option[,...]]
1301           Enable the spice remote desktop protocol. Valid options are
1302
1303           port=<nr>
1304               Set the TCP port spice is listening on for plaintext channels.
1305
1306           addr=<addr>
1307               Set the IP address spice is listening on.  Default is any
1308               address.
1309
1310           ipv4
1311           ipv6
1312           unix
1313               Force using the specified IP version.
1314
1315           password=<secret>
1316               Set the password you need to authenticate.
1317
1318           sasl
1319               Require that the client use SASL to authenticate with the
1320               spice.  The exact choice of authentication method used is
1321               controlled from the system / user's SASL configuration file for
1322               the 'qemu' service. This is typically found in
1323               /etc/sasl2/qemu.conf. If running QEMU as an unprivileged user,
1324               an environment variable SASL_CONF_PATH can be used to make it
1325               search alternate locations for the service config.  While some
1326               SASL auth methods can also provide data encryption (eg GSSAPI),
1327               it is recommended that SASL always be combined with the 'tls'
1328               and 'x509' settings to enable use of SSL and server
1329               certificates. This ensures a data encryption preventing
1330               compromise of authentication credentials.
1331
1332           disable-ticketing
1333               Allow client connects without authentication.
1334
1335           disable-copy-paste
1336               Disable copy paste between the client and the guest.
1337
1338           disable-agent-file-xfer
1339               Disable spice-vdagent based file-xfer between the client and
1340               the guest.
1341
1342           tls-port=<nr>
1343               Set the TCP port spice is listening on for encrypted channels.
1344
1345           x509-dir=<dir>
1346               Set the x509 file directory. Expects same filenames as -vnc
1347               $display,x509=$dir
1348
1349           x509-key-file=<file>
1350           x509-key-password=<file>
1351           x509-cert-file=<file>
1352           x509-cacert-file=<file>
1353           x509-dh-key-file=<file>
1354               The x509 file names can also be configured individually.
1355
1356           tls-ciphers=<list>
1357               Specify which ciphers to use.
1358
1359           tls-channel=[main|display|cursor|inputs|record|playback]
1360           plaintext-channel=[main|display|cursor|inputs|record|playback]
1361               Force specific channel to be used with or without TLS
1362               encryption.  The options can be specified multiple times to
1363               configure multiple channels.  The special name "default" can be
1364               used to set the default mode.  For channels which are not
1365               explicitly forced into one mode the spice client is allowed to
1366               pick tls/plaintext as he pleases.
1367
1368           image-compression=[auto_glz|auto_lz|quic|glz|lz|off]
1369               Configure image compression (lossless).  Default is auto_glz.
1370
1371           jpeg-wan-compression=[auto|never|always]
1372           zlib-glz-wan-compression=[auto|never|always]
1373               Configure wan image compression (lossy for slow links).
1374               Default is auto.
1375
1376           streaming-video=[off|all|filter]
1377               Configure video stream detection.  Default is off.
1378
1379           agent-mouse=[on|off]
1380               Enable/disable passing mouse events via vdagent.  Default is
1381               on.
1382
1383           playback-compression=[on|off]
1384               Enable/disable audio stream compression (using celt 0.5.1).
1385               Default is on.
1386
1387           seamless-migration=[on|off]
1388               Enable/disable spice seamless migration. Default is off.
1389
1390           gl=[on|off]
1391               Enable/disable OpenGL context. Default is off.
1392
1393           rendernode=<file>
1394               DRM render node for OpenGL rendering. If not specified, it will
1395               pick the first available. (Since 2.9)
1396
1397       -portrait
1398           Rotate graphical output 90 deg left (only PXA LCD).
1399
1400       -rotate deg
1401           Rotate graphical output some deg left (only PXA LCD).
1402
1403       -vga type
1404           Select type of VGA card to emulate. Valid values for type are
1405
1406           cirrus
1407               Cirrus Logic GD5446 Video card. All Windows versions starting
1408               from Windows 95 should recognize and use this graphic card. For
1409               optimal performances, use 16 bit color depth in the guest and
1410               the host OS.  (This card was the default before QEMU 2.2)
1411
1412           std Standard VGA card with Bochs VBE extensions.  If your guest OS
1413               supports the VESA 2.0 VBE extensions (e.g. Windows XP) and if
1414               you want to use high resolution modes (>= 1280x1024x16) then
1415               you should use this option. (This card is the default since
1416               QEMU 2.2)
1417
1418           vmware
1419               VMWare SVGA-II compatible adapter. Use it if you have
1420               sufficiently recent XFree86/XOrg server or Windows guest with a
1421               driver for this card.
1422
1423           qxl QXL paravirtual graphic card.  It is VGA compatible (including
1424               VESA 2.0 VBE support).  Works best with qxl guest drivers
1425               installed though.  Recommended choice when using the spice
1426               protocol.
1427
1428           tcx (sun4m only) Sun TCX framebuffer. This is the default
1429               framebuffer for sun4m machines and offers both 8-bit and 24-bit
1430               colour depths at a fixed resolution of 1024x768.
1431
1432           cg3 (sun4m only) Sun cgthree framebuffer. This is a simple 8-bit
1433               framebuffer for sun4m machines available in both 1024x768
1434               (OpenBIOS) and 1152x900 (OBP) resolutions aimed at people
1435               wishing to run older Solaris versions.
1436
1437           virtio
1438               Virtio VGA card.
1439
1440           none
1441               Disable VGA card.
1442
1443       -full-screen
1444           Start in full screen.
1445
1446       -g widthxheight[xdepth]
1447           Set the initial graphical resolution and depth (PPC, SPARC only).
1448
1449       -vnc display[,option[,option[,...]]]
1450           Normally, if QEMU is compiled with graphical window support, it
1451           displays output such as guest graphics, guest console, and the QEMU
1452           monitor in a window. With this option, you can have QEMU listen on
1453           VNC display display and redirect the VGA display over the VNC
1454           session. It is very useful to enable the usb tablet device when
1455           using this option (option -device usb-tablet). When using the VNC
1456           display, you must use the -k parameter to set the keyboard layout
1457           if you are not using en-us. Valid syntax for the display is
1458
1459           to=L
1460               With this option, QEMU will try next available VNC displays,
1461               until the number L, if the origianlly defined "-vnc display" is
1462               not available, e.g. port 5900+display is already used by
1463               another application. By default, to=0.
1464
1465           host:d
1466               TCP connections will only be allowed from host on display d.
1467               By convention the TCP port is 5900+d. Optionally, host can be
1468               omitted in which case the server will accept connections from
1469               any host.
1470
1471           unix:path
1472               Connections will be allowed over UNIX domain sockets where path
1473               is the location of a unix socket to listen for connections on.
1474
1475           none
1476               VNC is initialized but not started. The monitor "change"
1477               command can be used to later start the VNC server.
1478
1479           Following the display value there may be one or more option flags
1480           separated by commas. Valid options are
1481
1482           reverse
1483               Connect to a listening VNC client via a "reverse" connection.
1484               The client is specified by the display. For reverse network
1485               connections (host:d,"reverse"), the d argument is a TCP port
1486               number, not a display number.
1487
1488           websocket
1489               Opens an additional TCP listening port dedicated to VNC
1490               Websocket connections.  If a bare websocket option is given,
1491               the Websocket port is 5700+display. An alternative port can be
1492               specified with the syntax "websocket"=port.
1493
1494               If host is specified connections will only be allowed from this
1495               host.  It is possible to control the websocket listen address
1496               independently, using the syntax "websocket"=host:port.
1497
1498               If no TLS credentials are provided, the websocket connection
1499               runs in unencrypted mode. If TLS credentials are provided, the
1500               websocket connection requires encrypted client connections.
1501
1502           password
1503               Require that password based authentication is used for client
1504               connections.
1505
1506               The password must be set separately using the "set_password"
1507               command in the pcsys_monitor. The syntax to change your
1508               password is: "set_password <protocol> <password>" where
1509               <protocol> could be either "vnc" or "spice".
1510
1511               If you would like to change <protocol> password expiration, you
1512               should use "expire_password <protocol> <expiration-time>" where
1513               expiration time could be one of the following options: now,
1514               never, +seconds or UNIX time of expiration, e.g. +60 to make
1515               password expire in 60 seconds, or 1335196800 to make password
1516               expire on "Mon Apr 23 12:00:00 EDT 2012" (UNIX time for this
1517               date and time).
1518
1519               You can also use keywords "now" or "never" for the expiration
1520               time to allow <protocol> password to expire immediately or
1521               never expire.
1522
1523           tls-creds=ID
1524               Provides the ID of a set of TLS credentials to use to secure
1525               the VNC server. They will apply to both the normal VNC server
1526               socket and the websocket socket (if enabled). Setting TLS
1527               credentials will cause the VNC server socket to enable the
1528               VeNCrypt auth mechanism.  The credentials should have been
1529               previously created using the -object tls-creds argument.
1530
1531           tls-authz=ID
1532               Provides the ID of the QAuthZ authorization object against
1533               which the client's x509 distinguished name will validated. This
1534               object is only resolved at time of use, so can be deleted and
1535               recreated on the fly while the VNC server is active. If
1536               missing, it will default to denying access.
1537
1538           sasl
1539               Require that the client use SASL to authenticate with the VNC
1540               server.  The exact choice of authentication method used is
1541               controlled from the system / user's SASL configuration file for
1542               the 'qemu' service. This is typically found in
1543               /etc/sasl2/qemu.conf. If running QEMU as an unprivileged user,
1544               an environment variable SASL_CONF_PATH can be used to make it
1545               search alternate locations for the service config.  While some
1546               SASL auth methods can also provide data encryption (eg GSSAPI),
1547               it is recommended that SASL always be combined with the 'tls'
1548               and 'x509' settings to enable use of SSL and server
1549               certificates. This ensures a data encryption preventing
1550               compromise of authentication credentials. See the vnc_security
1551               section for details on using SASL authentication.
1552
1553           sasl-authz=ID
1554               Provides the ID of the QAuthZ authorization object against
1555               which the client's SASL username will validated. This object is
1556               only resolved at time of use, so can be deleted and recreated
1557               on the fly while the VNC server is active. If missing, it will
1558               default to denying access.
1559
1560           acl Legacy method for enabling authorization of clients against the
1561               x509 distinguished name and SASL username. It results in the
1562               creation of two "authz-list" objects with IDs of "vnc.username"
1563               and "vnc.x509dname". The rules for these objects must be
1564               configured with the HMP ACL commands.
1565
1566               This option is deprecated and should no longer be used. The new
1567               sasl-authz and tls-authz options are a replacement.
1568
1569           lossy
1570               Enable lossy compression methods (gradient, JPEG, ...). If this
1571               option is set, VNC client may receive lossy framebuffer updates
1572               depending on its encoding settings. Enabling this option can
1573               save a lot of bandwidth at the expense of quality.
1574
1575           non-adaptive
1576               Disable adaptive encodings. Adaptive encodings are enabled by
1577               default.  An adaptive encoding will try to detect frequently
1578               updated screen regions, and send updates in these regions using
1579               a lossy encoding (like JPEG).  This can be really helpful to
1580               save bandwidth when playing videos. Disabling adaptive
1581               encodings restores the original static behavior of encodings
1582               like Tight.
1583
1584           share=[allow-exclusive|force-shared|ignore]
1585               Set display sharing policy.  'allow-exclusive' allows clients
1586               to ask for exclusive access.  As suggested by the rfb spec this
1587               is implemented by dropping other connections.  Connecting
1588               multiple clients in parallel requires all clients asking for a
1589               shared session (vncviewer: -shared switch).  This is the
1590               default.  'force-shared' disables exclusive client access.
1591               Useful for shared desktop sessions, where you don't want
1592               someone forgetting specify -shared disconnect everybody else.
1593               'ignore' completely ignores the shared flag and allows
1594               everybody connect unconditionally.  Doesn't conform to the rfb
1595               spec but is traditional QEMU behavior.
1596
1597           key-delay-ms
1598               Set keyboard delay, for key down and key up events, in
1599               milliseconds.  Default is 10.  Keyboards are low-bandwidth
1600               devices, so this slowdown can help the device and guest to keep
1601               up and not lose events in case events are arriving in bulk.
1602               Possible causes for the latter are flaky network connections,
1603               or scripts for automated testing.
1604
1605       i386 target only
1606
1607       -win2k-hack
1608           Use it when installing Windows 2000 to avoid a disk full bug. After
1609           Windows 2000 is installed, you no longer need this option (this
1610           option slows down the IDE transfers).
1611
1612       -no-fd-bootchk
1613           Disable boot signature checking for floppy disks in BIOS. May be
1614           needed to boot from old floppy disks.
1615
1616       -no-acpi
1617           Disable ACPI (Advanced Configuration and Power Interface) support.
1618           Use it if your guest OS complains about ACPI problems (PC target
1619           machine only).
1620
1621       -no-hpet
1622           Disable HPET support.
1623
1624       -acpitable
1625       [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n]
1626       [,asl_compiler_id=str][,asl_compiler_rev=n][,data=file1[:file2]...]
1627           Add ACPI table with specified header fields and context from
1628           specified files.  For file=, take whole ACPI table from the
1629           specified files, including all ACPI headers (possible overridden by
1630           other options).  For data=, only data portion of the table is used,
1631           all header information is specified in the command line.  If a SLIC
1632           table is supplied to QEMU, then the SLIC's oem_id and oem_table_id
1633           fields will override the same in the RSDT and the FADT (a.k.a.
1634           FACP), in order to ensure the field matches required by the
1635           Microsoft SLIC spec and the ACPI spec.
1636
1637       -smbios file=binary
1638           Load SMBIOS entry from binary file.
1639
1640       -smbios
1641       type=0[,vendor=str][,version=str][,date=str][,release=%d.%d][,uefi=on|off]
1642           Specify SMBIOS type 0 fields
1643
1644       -smbios
1645       type=1[,manufacturer=str][,product=str][,version=str][,serial=str][,uuid=uuid][,sku=str][,family=str]
1646           Specify SMBIOS type 1 fields
1647
1648       -smbios
1649       type=2[,manufacturer=str][,product=str][,version=str][,serial=str][,asset=str][,location=str]
1650           Specify SMBIOS type 2 fields
1651
1652       -smbios
1653       type=3[,manufacturer=str][,version=str][,serial=str][,asset=str][,sku=str]
1654           Specify SMBIOS type 3 fields
1655
1656       -smbios
1657       type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str][,asset=str][,part=str]
1658           Specify SMBIOS type 4 fields
1659
1660       -smbios
1661       type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str][,asset=str][,part=str][,speed=%d]
1662           Specify SMBIOS type 17 fields
1663
1664       Network options
1665
1666       -nic
1667       [tap|bridge|user|l2tpv3|vde|netmap|vhost-user|socket][,...][,mac=macaddr][,model=mn]
1668           This option is a shortcut for configuring both the on-board
1669           (default) guest NIC hardware and the host network backend in one
1670           go. The host backend options are the same as with the corresponding
1671           -netdev options below.  The guest NIC model can be set with
1672           model=modelname.  Use model=help to list the available device
1673           types.  The hardware MAC address can be set with mac=macaddr.
1674
1675           The following two example do exactly the same, to show how -nic can
1676           be used to shorten the command line length (note that the e1000 is
1677           the default on i386, so the model=e1000 parameter could even be
1678           omitted here, too):
1679
1680                   qemu-system-i386 -netdev user,id=n1,ipv6=off -device e1000,netdev=n1,mac=52:54:98:76:54:32
1681                   qemu-system-i386 -nic user,ipv6=off,model=e1000,mac=52:54:98:76:54:32
1682
1683       -nic none
1684           Indicate that no network devices should be configured. It is used
1685           to override the default configuration (default NIC with "user" host
1686           network backend) which is activated if no other networking options
1687           are provided.
1688
1689       -netdev user,id=id[,option][,option][,...]
1690           Configure user mode host network backend which requires no
1691           administrator privilege to run. Valid options are:
1692
1693           id=id
1694               Assign symbolic name for use in monitor commands.
1695
1696           ipv4=on|off and ipv6=on|off
1697               Specify that either IPv4 or IPv6 must be enabled. If neither is
1698               specified both protocols are enabled.
1699
1700           net=addr[/mask]
1701               Set IP network address the guest will see. Optionally specify
1702               the netmask, either in the form a.b.c.d or as number of valid
1703               top-most bits. Default is 10.0.2.0/24.
1704
1705           host=addr
1706               Specify the guest-visible address of the host. Default is the
1707               2nd IP in the guest network, i.e. x.x.x.2.
1708
1709           ipv6-net=addr[/int]
1710               Set IPv6 network address the guest will see (default is
1711               fec0::/64). The network prefix is given in the usual
1712               hexadecimal IPv6 address notation. The prefix size is optional,
1713               and is given as the number of valid top-most bits (default is
1714               64).
1715
1716           ipv6-host=addr
1717               Specify the guest-visible IPv6 address of the host. Default is
1718               the 2nd IPv6 in the guest network, i.e. xxxx::2.
1719
1720           restrict=on|off
1721               If this option is enabled, the guest will be isolated, i.e. it
1722               will not be able to contact the host and no guest IP packets
1723               will be routed over the host to the outside. This option does
1724               not affect any explicitly set forwarding rules.
1725
1726           hostname=name
1727               Specifies the client hostname reported by the built-in DHCP
1728               server.
1729
1730           dhcpstart=addr
1731               Specify the first of the 16 IPs the built-in DHCP server can
1732               assign. Default is the 15th to 31st IP in the guest network,
1733               i.e. x.x.x.15 to x.x.x.31.
1734
1735           dns=addr
1736               Specify the guest-visible address of the virtual nameserver.
1737               The address must be different from the host address. Default is
1738               the 3rd IP in the guest network, i.e. x.x.x.3.
1739
1740           ipv6-dns=addr
1741               Specify the guest-visible address of the IPv6 virtual
1742               nameserver. The address must be different from the host
1743               address. Default is the 3rd IP in the guest network, i.e.
1744               xxxx::3.
1745
1746           dnssearch=domain
1747               Provides an entry for the domain-search list sent by the built-
1748               in DHCP server. More than one domain suffix can be transmitted
1749               by specifying this option multiple times. If supported, this
1750               will cause the guest to automatically try to append the given
1751               domain suffix(es) in case a domain name can not be resolved.
1752
1753               Example:
1754
1755                       qemu-system-i386 -nic user,dnssearch=mgmt.example.org,dnssearch=example.org
1756
1757           domainname=domain
1758               Specifies the client domain name reported by the built-in DHCP
1759               server.
1760
1761           tftp=dir
1762               When using the user mode network stack, activate a built-in
1763               TFTP server. The files in dir will be exposed as the root of a
1764               TFTP server.  The TFTP client on the guest must be configured
1765               in binary mode (use the command "bin" of the Unix TFTP client).
1766
1767           tftp-server-name=name
1768               In BOOTP reply, broadcast name as the "TFTP server name"
1769               (RFC2132 option 66). This can be used to advise the guest to
1770               load boot files or configurations from a different server than
1771               the host address.
1772
1773           bootfile=file
1774               When using the user mode network stack, broadcast file as the
1775               BOOTP filename. In conjunction with tftp, this can be used to
1776               network boot a guest from a local directory.
1777
1778               Example (using pxelinux):
1779
1780                       qemu-system-i386 -hda linux.img -boot n -device e1000,netdev=n1 \
1781                       -netdev user,id=n1,tftp=/path/to/tftp/files,bootfile=/pxelinux.0
1782
1783           smb=dir[,smbserver=addr]
1784               When using the user mode network stack, activate a built-in SMB
1785               server so that Windows OSes can access to the host files in dir
1786               transparently. The IP address of the SMB server can be set to
1787               addr. By default the 4th IP in the guest network is used, i.e.
1788               x.x.x.4.
1789
1790               In the guest Windows OS, the line:
1791
1792                       10.0.2.4 smbserver
1793
1794               must be added in the file C:\WINDOWS\LMHOSTS (for windows
1795               9x/Me) or C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS (Windows
1796               NT/2000).
1797
1798               Then dir can be accessed in \\smbserver\qemu.
1799
1800               Note that a SAMBA server must be installed on the host OS.
1801
1802           hostfwd=[tcp|udp]:[hostaddr]:hostport-[guestaddr]:guestport
1803               Redirect incoming TCP or UDP connections to the host port
1804               hostport to the guest IP address guestaddr on guest port
1805               guestport. If guestaddr is not specified, its value is x.x.x.15
1806               (default first address given by the built-in DHCP server). By
1807               specifying hostaddr, the rule can be bound to a specific host
1808               interface. If no connection type is set, TCP is used. This
1809               option can be given multiple times.
1810
1811               For example, to redirect host X11 connection from screen 1 to
1812               guest screen 0, use the following:
1813
1814                       # on the host
1815                       qemu-system-i386 -nic user,hostfwd=tcp:127.0.0.1:6001-:6000
1816                       # this host xterm should open in the guest X11 server
1817                       xterm -display :1
1818
1819               To redirect telnet connections from host port 5555 to telnet
1820               port on the guest, use the following:
1821
1822                       # on the host
1823                       qemu-system-i386 -nic user,hostfwd=tcp::5555-:23
1824                       telnet localhost 5555
1825
1826               Then when you use on the host "telnet localhost 5555", you
1827               connect to the guest telnet server.
1828
1829           guestfwd=[tcp]:server:port-dev
1830           guestfwd=[tcp]:server:port-cmd:command
1831               Forward guest TCP connections to the IP address server on port
1832               port to the character device dev or to a program executed by
1833               cmd:command which gets spawned for each connection. This option
1834               can be given multiple times.
1835
1836               You can either use a chardev directly and have that one used
1837               throughout QEMU's lifetime, like in the following example:
1838
1839                       # open 10.10.1.1:4321 on bootup, connect 10.0.2.100:1234 to it whenever
1840                       # the guest accesses it
1841                       qemu-system-i386 -nic user,guestfwd=tcp:10.0.2.100:1234-tcp:10.10.1.1:4321
1842
1843               Or you can execute a command on every TCP connection
1844               established by the guest, so that QEMU behaves similar to an
1845               inetd process for that virtual server:
1846
1847                       # call "netcat 10.10.1.1 4321" on every TCP connection to 10.0.2.100:1234
1848                       # and connect the TCP stream to its stdin/stdout
1849                       qemu-system-i386 -nic  'user,id=n1,guestfwd=tcp:10.0.2.100:1234-cmd:netcat 10.10.1.1 4321'
1850
1851       -netdev
1852       tap,id=id[,fd=h][,ifname=name][,script=file][,downscript=dfile][,br=bridge][,helper=helper]
1853           Configure a host TAP network backend with ID id.
1854
1855           Use the network script file to configure it and the network script
1856           dfile to deconfigure it. If name is not provided, the OS
1857           automatically provides one. The default network configure script is
1858           /etc/qemu-ifup and the default network deconfigure script is
1859           /etc/qemu-ifdown. Use script=no or downscript=no to disable script
1860           execution.
1861
1862           If running QEMU as an unprivileged user, use the network helper
1863           helper to configure the TAP interface and attach it to the bridge.
1864           The default network helper executable is
1865           /path/to/qemu-bridge-helper and the default bridge device is br0.
1866
1867           fd=h can be used to specify the handle of an already opened host
1868           TAP interface.
1869
1870           Examples:
1871
1872                   #launch a QEMU instance with the default network script
1873                   qemu-system-i386 linux.img -nic tap
1874
1875
1876
1877                   #launch a QEMU instance with two NICs, each one connected
1878                   #to a TAP device
1879                   qemu-system-i386 linux.img \
1880                   -netdev tap,id=nd0,ifname=tap0 -device e1000,netdev=nd0 \
1881                   -netdev tap,id=nd1,ifname=tap1 -device rtl8139,netdev=nd1
1882
1883
1884
1885                   #launch a QEMU instance with the default network helper to
1886                   #connect a TAP device to bridge br0
1887                   qemu-system-i386 linux.img -device virtio-net-pci,netdev=n1 \
1888                   -netdev tap,id=n1,"helper=/path/to/qemu-bridge-helper"
1889
1890       -netdev bridge,id=id[,br=bridge][,helper=helper]
1891           Connect a host TAP network interface to a host bridge device.
1892
1893           Use the network helper helper to configure the TAP interface and
1894           attach it to the bridge. The default network helper executable is
1895           /path/to/qemu-bridge-helper and the default bridge device is br0.
1896
1897           Examples:
1898
1899                   #launch a QEMU instance with the default network helper to
1900                   #connect a TAP device to bridge br0
1901                   qemu-system-i386 linux.img -netdev bridge,id=n1 -device virtio-net,netdev=n1
1902
1903
1904
1905                   #launch a QEMU instance with the default network helper to
1906                   #connect a TAP device to bridge qemubr0
1907                   qemu-system-i386 linux.img -netdev bridge,br=qemubr0,id=n1 -device virtio-net,netdev=n1
1908
1909       -netdev socket,id=id[,fd=h][,listen=[host]:port][,connect=host:port]
1910           This host network backend can be used to connect the guest's
1911           network to another QEMU virtual machine using a TCP socket
1912           connection. If listen is specified, QEMU waits for incoming
1913           connections on port (host is optional). connect is used to connect
1914           to another QEMU instance using the listen option. fd=h specifies an
1915           already opened TCP socket.
1916
1917           Example:
1918
1919                   # launch a first QEMU instance
1920                   qemu-system-i386 linux.img \
1921                   -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
1922                   -netdev socket,id=n1,listen=:1234
1923                   # connect the network of this instance to the network of the first instance
1924                   qemu-system-i386 linux.img \
1925                   -device e1000,netdev=n2,mac=52:54:00:12:34:57 \
1926                   -netdev socket,id=n2,connect=127.0.0.1:1234
1927
1928       -netdev socket,id=id[,fd=h][,mcast=maddr:port[,localaddr=addr]]
1929           Configure a socket host network backend to share the guest's
1930           network traffic with another QEMU virtual machines using a UDP
1931           multicast socket, effectively making a bus for every QEMU with same
1932           multicast address maddr and port.  NOTES:
1933
1934           1.  Several QEMU can be running on different hosts and share same
1935               bus (assuming correct multicast setup for these hosts).
1936
1937           2.  mcast support is compatible with User Mode Linux (argument
1938               ethN=mcast), see <http://user-mode-linux.sf.net>.
1939
1940           3.  Use fd=h to specify an already opened UDP multicast socket.
1941
1942           Example:
1943
1944                   # launch one QEMU instance
1945                   qemu-system-i386 linux.img \
1946                   -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
1947                   -netdev socket,id=n1,mcast=230.0.0.1:1234
1948                   # launch another QEMU instance on same "bus"
1949                   qemu-system-i386 linux.img \
1950                   -device e1000,netdev=n2,mac=52:54:00:12:34:57 \
1951                   -netdev socket,id=n2,mcast=230.0.0.1:1234
1952                   # launch yet another QEMU instance on same "bus"
1953                   qemu-system-i386 linux.img \
1954                   -device e1000,netdev=n3,mac=52:54:00:12:34:58 \
1955                   -netdev socket,id=n3,mcast=230.0.0.1:1234
1956
1957           Example (User Mode Linux compat.):
1958
1959                   # launch QEMU instance (note mcast address selected is UML's default)
1960                   qemu-system-i386 linux.img \
1961                   -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
1962                   -netdev socket,id=n1,mcast=239.192.168.1:1102
1963                   # launch UML
1964                   /path/to/linux ubd0=/path/to/root_fs eth0=mcast
1965
1966           Example (send packets from host's 1.2.3.4):
1967
1968                   qemu-system-i386 linux.img \
1969                   -device e1000,netdev=n1,mac=52:54:00:12:34:56 \
1970                   -netdev socket,id=n1,mcast=239.192.168.1:1102,localaddr=1.2.3.4
1971
1972       -netdev
1973       l2tpv3,id=id,src=srcaddr,dst=dstaddr[,srcport=srcport][,dstport=dstport],txsession=txsession[,rxsession=rxsession][,ipv6][,udp][,cookie64][,counter][,pincounter][,txcookie=txcookie][,rxcookie=rxcookie][,offset=offset]
1974           Configure a L2TPv3 pseudowire host network backend. L2TPv3
1975           (RFC3391) is a popular protocol to transport Ethernet (and other
1976           Layer 2) data frames between two systems. It is present in routers,
1977           firewalls and the Linux kernel (from version 3.3 onwards).
1978
1979           This transport allows a VM to communicate to another VM, router or
1980           firewall directly.
1981
1982           src=srcaddr
1983               source address (mandatory)
1984
1985           dst=dstaddr
1986               destination address (mandatory)
1987
1988           udp select udp encapsulation (default is ip).
1989
1990           srcport=srcport
1991               source udp port.
1992
1993           dstport=dstport
1994               destination udp port.
1995
1996           ipv6
1997               force v6, otherwise defaults to v4.
1998
1999           rxcookie=rxcookie
2000           txcookie=txcookie
2001               Cookies are a weak form of security in the l2tpv3
2002               specification.  Their function is mostly to prevent
2003               misconfiguration. By default they are 32 bit.
2004
2005           cookie64
2006               Set cookie size to 64 bit instead of the default 32
2007
2008           counter=off
2009               Force a 'cut-down' L2TPv3 with no counter as in
2010               draft-mkonstan-l2tpext-keyed-ipv6-tunnel-00
2011
2012           pincounter=on
2013               Work around broken counter handling in peer. This may also help
2014               on networks which have packet reorder.
2015
2016           offset=offset
2017               Add an extra offset between header and data
2018
2019           For example, to attach a VM running on host 4.3.2.1 via L2TPv3 to
2020           the bridge br-lan on the remote Linux host 1.2.3.4:
2021
2022                   # Setup tunnel on linux host using raw ip as encapsulation
2023                   # on 1.2.3.4
2024                   ip l2tp add tunnel remote 4.3.2.1 local 1.2.3.4 tunnel_id 1 peer_tunnel_id 1 \
2025                   encap udp udp_sport 16384 udp_dport 16384
2026                   ip l2tp add session tunnel_id 1 name vmtunnel0 session_id \
2027                   0xFFFFFFFF peer_session_id 0xFFFFFFFF
2028                   ifconfig vmtunnel0 mtu 1500
2029                   ifconfig vmtunnel0 up
2030                   brctl addif br-lan vmtunnel0
2031
2032
2033                   # on 4.3.2.1
2034                   # launch QEMU instance - if your network has reorder or is very lossy add ,pincounter
2035
2036                   qemu-system-i386 linux.img -device e1000,netdev=n1 \
2037                   -netdev l2tpv3,id=n1,src=4.2.3.1,dst=1.2.3.4,udp,srcport=16384,dstport=16384,rxsession=0xffffffff,txsession=0xffffffff,counter
2038
2039       -netdev
2040       vde,id=id[,sock=socketpath][,port=n][,group=groupname][,mode=octalmode]
2041           Configure VDE backend to connect to PORT n of a vde switch running
2042           on host and listening for incoming connections on socketpath. Use
2043           GROUP groupname and MODE octalmode to change default ownership and
2044           permissions for communication port. This option is only available
2045           if QEMU has been compiled with vde support enabled.
2046
2047           Example:
2048
2049                   # launch vde switch
2050                   vde_switch -F -sock /tmp/myswitch
2051                   # launch QEMU instance
2052                   qemu-system-i386 linux.img -nic vde,sock=/tmp/myswitch
2053
2054       -netdev vhost-user,chardev=id[,vhostforce=on|off][,queues=n]
2055           Establish a vhost-user netdev, backed by a chardev id. The chardev
2056           should be a unix domain socket backed one. The vhost-user uses a
2057           specifically defined protocol to pass vhost ioctl replacement
2058           messages to an application on the other end of the socket. On non-
2059           MSIX guests, the feature can be forced with vhostforce. Use
2060           'queues=n' to specify the number of queues to be created for
2061           multiqueue vhost-user.
2062
2063           Example:
2064
2065                   qemu -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,share=on \
2066                   -numa node,memdev=mem \
2067                   -chardev socket,id=chr0,path=/path/to/socket \
2068                   -netdev type=vhost-user,id=net0,chardev=chr0 \
2069                   -device virtio-net-pci,netdev=net0
2070
2071       -netdev hubport,id=id,hubid=hubid[,netdev=nd]
2072           Create a hub port on the emulated hub with ID hubid.
2073
2074           The hubport netdev lets you connect a NIC to a QEMU emulated hub
2075           instead of a single netdev. Alternatively, you can also connect the
2076           hubport to another netdev with ID nd by using the netdev=nd option.
2077
2078       -net nic[,netdev=nd][,macaddr=mac][,model=type]
2079       [,name=name][,addr=addr][,vectors=v]
2080           Legacy option to configure or create an on-board (or machine
2081           default) Network Interface Card(NIC) and connect it either to the
2082           emulated hub with ID 0 (i.e.  the default hub), or to the netdev
2083           nd.  The NIC is an e1000 by default on the PC target. Optionally,
2084           the MAC address can be changed to mac, the device address set to
2085           addr (PCI cards only), and a name can be assigned for use in
2086           monitor commands.  Optionally, for PCI cards, you can specify the
2087           number v of MSI-X vectors that the card should have; this option
2088           currently only affects virtio cards; set v = 0 to disable MSI-X. If
2089           no -net option is specified, a single NIC is created.  QEMU can
2090           emulate several different models of network card.  Use "-net
2091           nic,model=help" for a list of available devices for your target.
2092
2093       -net user|tap|bridge|socket|l2tpv3|vde[,...][,name=name]
2094           Configure a host network backend (with the options corresponding to
2095           the same -netdev option) and connect it to the emulated hub 0 (the
2096           default hub). Use name to specify the name of the hub port.
2097
2098       Character device options
2099
2100       The general form of a character device option is:
2101
2102       -chardev backend,id=id[,mux=on|off][,options]
2103           Backend is one of: null, socket, udp, msmouse, vc, ringbuf, file,
2104           pipe, console, serial, pty, stdio, braille, tty, parallel, parport,
2105           spicevmc, spiceport.  The specific backend will determine the
2106           applicable options.
2107
2108           Use "-chardev help" to print all available chardev backend types.
2109
2110           All devices must have an id, which can be any string up to 127
2111           characters long.  It is used to uniquely identify this device in
2112           other command line directives.
2113
2114           A character device may be used in multiplexing mode by multiple
2115           front-ends.  Specify mux=on to enable this mode.  A multiplexer is
2116           a "1:N" device, and here the "1" end is your specified chardev
2117           backend, and the "N" end is the various parts of QEMU that can talk
2118           to a chardev.  If you create a chardev with id=myid and mux=on,
2119           QEMU will create a multiplexer with your specified ID, and you can
2120           then configure multiple front ends to use that chardev ID for their
2121           input/output. Up to four different front ends can be connected to a
2122           single multiplexed chardev. (Without multiplexing enabled, a
2123           chardev can only be used by a single front end.)  For instance you
2124           could use this to allow a single stdio chardev to be used by two
2125           serial ports and the QEMU monitor:
2126
2127                   -chardev stdio,mux=on,id=char0 \
2128                   -mon chardev=char0,mode=readline \
2129                   -serial chardev:char0 \
2130                   -serial chardev:char0
2131
2132           You can have more than one multiplexer in a system configuration;
2133           for instance you could have a TCP port multiplexed between UART 0
2134           and UART 1, and stdio multiplexed between the QEMU monitor and a
2135           parallel port:
2136
2137                   -chardev stdio,mux=on,id=char0 \
2138                   -mon chardev=char0,mode=readline \
2139                   -parallel chardev:char0 \
2140                   -chardev tcp,...,mux=on,id=char1 \
2141                   -serial chardev:char1 \
2142                   -serial chardev:char1
2143
2144           When you're using a multiplexed character device, some escape
2145           sequences are interpreted in the input.
2146
2147           Note that some other command line options may implicitly create
2148           multiplexed character backends; for instance -serial mon:stdio
2149           creates a multiplexed stdio backend connected to the serial port
2150           and the QEMU monitor, and -nographic also multiplexes the console
2151           and the monitor to stdio.
2152
2153           There is currently no support for multiplexing in the other
2154           direction (where a single QEMU front end takes input and output
2155           from multiple chardevs).
2156
2157           Every backend supports the logfile option, which supplies the path
2158           to a file to record all data transmitted via the backend. The
2159           logappend option controls whether the log file will be truncated or
2160           appended to when opened.
2161
2162       The available backends are:
2163
2164       -chardev null,id=id
2165           A void device. This device will not emit any data, and will drop
2166           any data it receives. The null backend does not take any options.
2167
2168       -chardev socket,id=id[,TCP options or unix
2169       options][,server][,nowait][,telnet][,websocket][,reconnect=seconds][,tls-creds=id][,tls-authz=id]
2170           Create a two-way stream socket, which can be either a TCP or a unix
2171           socket. A unix socket will be created if path is specified.
2172           Behaviour is undefined if TCP options are specified for a unix
2173           socket.
2174
2175           server specifies that the socket shall be a listening socket.
2176
2177           nowait specifies that QEMU should not block waiting for a client to
2178           connect to a listening socket.
2179
2180           telnet specifies that traffic on the socket should interpret telnet
2181           escape sequences.
2182
2183           websocket specifies that the socket uses WebSocket protocol for
2184           communication.
2185
2186           reconnect sets the timeout for reconnecting on non-server sockets
2187           when the remote end goes away.  qemu will delay this many seconds
2188           and then attempt to reconnect.  Zero disables reconnecting, and is
2189           the default.
2190
2191           tls-creds requests enablement of the TLS protocol for encryption,
2192           and specifies the id of the TLS credentials to use for the
2193           handshake. The credentials must be previously created with the
2194           -object tls-creds argument.
2195
2196           tls-auth provides the ID of the QAuthZ authorization object against
2197           which the client's x509 distinguished name will be validated. This
2198           object is only resolved at time of use, so can be deleted and
2199           recreated on the fly while the chardev server is active. If
2200           missing, it will default to denying access.
2201
2202           TCP and unix socket options are given below:
2203
2204           TCP options: port=port[,host=host][,to=to][,ipv4][,ipv6][,nodelay]
2205               host for a listening socket specifies the local address to be
2206               bound.  For a connecting socket species the remote host to
2207               connect to. host is optional for listening sockets. If not
2208               specified it defaults to 0.0.0.0.
2209
2210               port for a listening socket specifies the local port to be
2211               bound. For a connecting socket specifies the port on the remote
2212               host to connect to.  port can be given as either a port number
2213               or a service name.  port is required.
2214
2215               to is only relevant to listening sockets. If it is specified,
2216               and port cannot be bound, QEMU will attempt to bind to
2217               subsequent ports up to and including to until it succeeds. to
2218               must be specified as a port number.
2219
2220               ipv4 and ipv6 specify that either IPv4 or IPv6 must be used.
2221               If neither is specified the socket may use either protocol.
2222
2223               nodelay disables the Nagle algorithm.
2224
2225           unix options: path=path
2226               path specifies the local path of the unix socket. path is
2227               required.
2228
2229       -chardev
2230       udp,id=id[,host=host],port=port[,localaddr=localaddr][,localport=localport][,ipv4][,ipv6]
2231           Sends all traffic from the guest to a remote host over UDP.
2232
2233           host specifies the remote host to connect to. If not specified it
2234           defaults to "localhost".
2235
2236           port specifies the port on the remote host to connect to. port is
2237           required.
2238
2239           localaddr specifies the local address to bind to. If not specified
2240           it defaults to 0.0.0.0.
2241
2242           localport specifies the local port to bind to. If not specified any
2243           available local port will be used.
2244
2245           ipv4 and ipv6 specify that either IPv4 or IPv6 must be used.  If
2246           neither is specified the device may use either protocol.
2247
2248       -chardev msmouse,id=id
2249           Forward QEMU's emulated msmouse events to the guest. msmouse does
2250           not take any options.
2251
2252       -chardev
2253       vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]
2254           Connect to a QEMU text console. vc may optionally be given a
2255           specific size.
2256
2257           width and height specify the width and height respectively of the
2258           console, in pixels.
2259
2260           cols and rows specify that the console be sized to fit a text
2261           console with the given dimensions.
2262
2263       -chardev ringbuf,id=id[,size=size]
2264           Create a ring buffer with fixed size size.  size must be a power of
2265           two and defaults to "64K".
2266
2267       -chardev file,id=id,path=path
2268           Log all traffic received from the guest to a file.
2269
2270           path specifies the path of the file to be opened. This file will be
2271           created if it does not already exist, and overwritten if it does.
2272           path is required.
2273
2274       -chardev pipe,id=id,path=path
2275           Create a two-way connection to the guest. The behaviour differs
2276           slightly between Windows hosts and other hosts:
2277
2278           On Windows, a single duplex pipe will be created at \\.pipe\path.
2279
2280           On other hosts, 2 pipes will be created called path.in and
2281           path.out. Data written to path.in will be received by the guest.
2282           Data written by the guest can be read from path.out. QEMU will not
2283           create these fifos, and requires them to be present.
2284
2285           path forms part of the pipe path as described above. path is
2286           required.
2287
2288       -chardev console,id=id
2289           Send traffic from the guest to QEMU's standard output. console does
2290           not take any options.
2291
2292           console is only available on Windows hosts.
2293
2294       -chardev serial,id=id,path=path
2295           Send traffic from the guest to a serial device on the host.
2296
2297           On Unix hosts serial will actually accept any tty device, not only
2298           serial lines.
2299
2300           path specifies the name of the serial device to open.
2301
2302       -chardev pty,id=id
2303           Create a new pseudo-terminal on the host and connect to it. pty
2304           does not take any options.
2305
2306           pty is not available on Windows hosts.
2307
2308       -chardev stdio,id=id[,signal=on|off]
2309           Connect to standard input and standard output of the QEMU process.
2310
2311           signal controls if signals are enabled on the terminal, that
2312           includes exiting QEMU with the key sequence Control-c. This option
2313           is enabled by default, use signal=off to disable it.
2314
2315       -chardev braille,id=id
2316           Connect to a local BrlAPI server. braille does not take any
2317           options.
2318
2319       -chardev tty,id=id,path=path
2320           tty is only available on Linux, Sun, FreeBSD, NetBSD, OpenBSD and
2321           DragonFlyBSD hosts.  It is an alias for serial.
2322
2323           path specifies the path to the tty. path is required.
2324
2325       -chardev parallel,id=id,path=path
2326       -chardev parport,id=id,path=path
2327           parallel is only available on Linux, FreeBSD and DragonFlyBSD
2328           hosts.
2329
2330           Connect to a local parallel port.
2331
2332           path specifies the path to the parallel port device. path is
2333           required.
2334
2335       -chardev spicevmc,id=id,debug=debug,name=name
2336           spicevmc is only available when spice support is built in.
2337
2338           debug debug level for spicevmc
2339
2340           name name of spice channel to connect to
2341
2342           Connect to a spice virtual machine channel, such as vdiport.
2343
2344       -chardev spiceport,id=id,debug=debug,name=name
2345           spiceport is only available when spice support is built in.
2346
2347           debug debug level for spicevmc
2348
2349           name name of spice port to connect to
2350
2351           Connect to a spice port, allowing a Spice client to handle the
2352           traffic identified by a name (preferably a fqdn).
2353
2354       Bluetooth(R) options
2355
2356       -bt hci[...]
2357           Defines the function of the corresponding Bluetooth HCI.  -bt
2358           options are matched with the HCIs present in the chosen machine
2359           type.  For example when emulating a machine with only one HCI built
2360           into it, only the first "-bt hci[...]" option is valid and defines
2361           the HCI's logic.  The Transport Layer is decided by the machine
2362           type.  Currently the machines "n800" and "n810" have one HCI and
2363           all other machines have none.
2364
2365           Note: This option and the whole bluetooth subsystem is considered
2366           as deprecated.  If you still use it, please send a mail to
2367           <qemu-devel@nongnu.org> where you describe your usecase.
2368
2369           The following three types are recognized:
2370
2371           -bt hci,null
2372               (default) The corresponding Bluetooth HCI assumes no internal
2373               logic and will not respond to any HCI commands or emit events.
2374
2375           -bt hci,host[:id]
2376               ("bluez" only) The corresponding HCI passes commands / events
2377               to / from the physical HCI identified by the name id (default:
2378               "hci0") on the computer running QEMU.  Only available on
2379               "bluez" capable systems like Linux.
2380
2381           -bt hci[,vlan=n]
2382               Add a virtual, standard HCI that will participate in the
2383               Bluetooth scatternet n (default 0).  Similarly to -net VLANs,
2384               devices inside a bluetooth network n can only communicate with
2385               other devices in the same network (scatternet).
2386
2387       -bt vhci[,vlan=n]
2388           (Linux-host only) Create a HCI in scatternet n (default 0) attached
2389           to the host bluetooth stack instead of to the emulated target.
2390           This allows the host and target machines to participate in a common
2391           scatternet and communicate.  Requires the Linux "vhci" driver
2392           installed.  Can be used as following:
2393
2394                   qemu-system-i386 [...OPTIONS...] -bt hci,vlan=5 -bt vhci,vlan=5
2395
2396       -bt device:dev[,vlan=n]
2397           Emulate a bluetooth device dev and place it in network n (default
2398           0).  QEMU can only emulate one type of bluetooth devices currently:
2399
2400           keyboard
2401               Virtual wireless keyboard implementing the HIDP bluetooth
2402               profile.
2403
2404       TPM device options
2405
2406       The general form of a TPM device option is:
2407
2408       -tpmdev backend,id=id[,options]
2409           The specific backend type will determine the applicable options.
2410           The "-tpmdev" option creates the TPM backend and requires a
2411           "-device" option that specifies the TPM frontend interface model.
2412
2413           Use "-tpmdev help" to print all available TPM backend types.
2414
2415       The available backends are:
2416
2417       -tpmdev passthrough,id=id,path=path,cancel-path=cancel-path
2418           (Linux-host only) Enable access to the host's TPM using the
2419           passthrough driver.
2420
2421           path specifies the path to the host's TPM device, i.e., on a Linux
2422           host this would be "/dev/tpm0".  path is optional and by default
2423           "/dev/tpm0" is used.
2424
2425           cancel-path specifies the path to the host TPM device's sysfs entry
2426           allowing for cancellation of an ongoing TPM command.  cancel-path
2427           is optional and by default QEMU will search for the sysfs entry to
2428           use.
2429
2430           Some notes about using the host's TPM with the passthrough driver:
2431
2432           The TPM device accessed by the passthrough driver must not be used
2433           by any other application on the host.
2434
2435           Since the host's firmware (BIOS/UEFI) has already initialized the
2436           TPM, the VM's firmware (BIOS/UEFI) will not be able to initialize
2437           the TPM again and may therefore not show a TPM-specific menu that
2438           would otherwise allow the user to configure the TPM, e.g., allow
2439           the user to enable/disable or activate/deactivate the TPM.
2440           Further, if TPM ownership is released from within a VM then the
2441           host's TPM will get disabled and deactivated. To enable and
2442           activate the TPM again afterwards, the host has to be rebooted and
2443           the user is required to enter the firmware's menu to enable and
2444           activate the TPM.  If the TPM is left disabled and/or deactivated
2445           most TPM commands will fail.
2446
2447           To create a passthrough TPM use the following two options:
2448
2449                   -tpmdev passthrough,id=tpm0 -device tpm-tis,tpmdev=tpm0
2450
2451           Note that the "-tpmdev" id is "tpm0" and is referenced by
2452           "tpmdev=tpm0" in the device option.
2453
2454       -tpmdev emulator,id=id,chardev=dev
2455           (Linux-host only) Enable access to a TPM emulator using Unix domain
2456           socket based chardev backend.
2457
2458           chardev specifies the unique ID of a character device backend that
2459           provides connection to the software TPM server.
2460
2461           To create a TPM emulator backend device with chardev socket
2462           backend:
2463
2464                   -chardev socket,id=chrtpm,path=/tmp/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0
2465
2466       Linux/Multiboot boot specific
2467
2468       When using these options, you can use a given Linux or Multiboot kernel
2469       without installing it in the disk image. It can be useful for easier
2470       testing of various kernels.
2471
2472       -kernel bzImage
2473           Use bzImage as kernel image. The kernel can be either a Linux
2474           kernel or in multiboot format.
2475
2476       -append cmdline
2477           Use cmdline as kernel command line
2478
2479       -initrd file
2480           Use file as initial ram disk.
2481
2482       -initrd "file1 arg=foo,file2"
2483           This syntax is only available with multiboot.
2484
2485           Use file1 and file2 as modules and pass arg=foo as parameter to the
2486           first module.
2487
2488       -dtb file
2489           Use file as a device tree binary (dtb) image and pass it to the
2490           kernel on boot.
2491
2492       Debug/Expert options
2493
2494       -fw_cfg [name=]name,file=file
2495           Add named fw_cfg entry with contents from file file.
2496
2497       -fw_cfg [name=]name,string=str
2498           Add named fw_cfg entry with contents from string str.
2499
2500           The terminating NUL character of the contents of str will not be
2501           included as part of the fw_cfg item data. To insert contents with
2502           embedded NUL characters, you have to use the file parameter.
2503
2504           The fw_cfg entries are passed by QEMU through to the guest.
2505
2506           Example:
2507
2508                   -fw_cfg name=opt/com.mycompany/blob,file=./my_blob.bin
2509
2510           creates an fw_cfg entry named opt/com.mycompany/blob with contents
2511           from ./my_blob.bin.
2512
2513       -serial dev
2514           Redirect the virtual serial port to host character device dev. The
2515           default device is "vc" in graphical mode and "stdio" in non
2516           graphical mode.
2517
2518           This option can be used several times to simulate up to 4 serial
2519           ports.
2520
2521           Use "-serial none" to disable all serial ports.
2522
2523           Available character devices are:
2524
2525           vc[:WxH]
2526               Virtual console. Optionally, a width and height can be given in
2527               pixel with
2528
2529                       vc:800x600
2530
2531               It is also possible to specify width or height in characters:
2532
2533                       vc:80Cx24C
2534
2535           pty [Linux only] Pseudo TTY (a new PTY is automatically allocated)
2536
2537           none
2538               No device is allocated.
2539
2540           null
2541               void device
2542
2543           chardev:id
2544               Use a named character device defined with the "-chardev"
2545               option.
2546
2547           /dev/XXX
2548               [Linux only] Use host tty, e.g. /dev/ttyS0. The host serial
2549               port parameters are set according to the emulated ones.
2550
2551           /dev/parportN
2552               [Linux only, parallel port only] Use host parallel port N.
2553               Currently SPP and EPP parallel port features can be used.
2554
2555           file:filename
2556               Write output to filename. No character can be read.
2557
2558           stdio
2559               [Unix only] standard input/output
2560
2561           pipe:filename
2562               name pipe filename
2563
2564           COMn
2565               [Windows only] Use host serial port n
2566
2567           udp:[remote_host]:remote_port[@[src_ip]:src_port]
2568               This implements UDP Net Console.  When remote_host or src_ip
2569               are not specified they default to 0.0.0.0.  When not using a
2570               specified src_port a random port is automatically chosen.
2571
2572               If you just want a simple readonly console you can use "netcat"
2573               or "nc", by starting QEMU with: "-serial udp::4555" and nc as:
2574               "nc -u -l -p 4555". Any time QEMU writes something to that port
2575               it will appear in the netconsole session.
2576
2577               If you plan to send characters back via netconsole or you want
2578               to stop and start QEMU a lot of times, you should have QEMU use
2579               the same source port each time by using something like "-serial
2580               udp::4555@4556" to QEMU. Another approach is to use a patched
2581               version of netcat which can listen to a TCP port and send and
2582               receive characters via udp.  If you have a patched version of
2583               netcat which activates telnet remote echo and single char
2584               transfer, then you can use the following options to set up a
2585               netcat redirector to allow telnet on port 5555 to access the
2586               QEMU port.
2587
2588               "QEMU Options:"
2589                   -serial udp::4555@4556
2590
2591               "netcat options:"
2592                   -u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
2593
2594               "telnet options:"
2595                   localhost 5555
2596
2597           tcp:[host]:port[,server][,nowait][,nodelay][,reconnect=seconds]
2598               The TCP Net Console has two modes of operation.  It can send
2599               the serial I/O to a location or wait for a connection from a
2600               location.  By default the TCP Net Console is sent to host at
2601               the port.  If you use the server option QEMU will wait for a
2602               client socket application to connect to the port before
2603               continuing, unless the "nowait" option was specified.  The
2604               "nodelay" option disables the Nagle buffering algorithm.  The
2605               "reconnect" option only applies if noserver is set, if the
2606               connection goes down it will attempt to reconnect at the given
2607               interval.  If host is omitted, 0.0.0.0 is assumed. Only one TCP
2608               connection at a time is accepted. You can use "telnet" to
2609               connect to the corresponding character device.
2610
2611               "Example to send tcp console to 192.168.0.2 port 4444"
2612                   -serial tcp:192.168.0.2:4444
2613
2614               "Example to listen and wait on port 4444 for connection"
2615                   -serial tcp::4444,server
2616
2617               "Example to not wait and listen on ip 192.168.0.100 port 4444"
2618                   -serial tcp:192.168.0.100:4444,server,nowait
2619
2620           telnet:host:port[,server][,nowait][,nodelay]
2621               The telnet protocol is used instead of raw tcp sockets.  The
2622               options work the same as if you had specified "-serial tcp".
2623               The difference is that the port acts like a telnet server or
2624               client using telnet option negotiation.  This will also allow
2625               you to send the MAGIC_SYSRQ sequence if you use a telnet that
2626               supports sending the break sequence.  Typically in unix telnet
2627               you do it with Control-] and then type "send break" followed by
2628               pressing the enter key.
2629
2630           websocket:host:port,server[,nowait][,nodelay]
2631               The WebSocket protocol is used instead of raw tcp socket. The
2632               port acts as a WebSocket server. Client mode is not supported.
2633
2634           unix:path[,server][,nowait][,reconnect=seconds]
2635               A unix domain socket is used instead of a tcp socket.  The
2636               option works the same as if you had specified "-serial tcp"
2637               except the unix domain socket path is used for connections.
2638
2639           mon:dev_string
2640               This is a special option to allow the monitor to be multiplexed
2641               onto another serial port.  The monitor is accessed with key
2642               sequence of Control-a and then pressing c.  dev_string should
2643               be any one of the serial devices specified above.  An example
2644               to multiplex the monitor onto a telnet server listening on port
2645               4444 would be:
2646
2647               "-serial mon:telnet::4444,server,nowait"
2648
2649               When the monitor is multiplexed to stdio in this way, Ctrl+C
2650               will not terminate QEMU any more but will be passed to the
2651               guest instead.
2652
2653           braille
2654               Braille device.  This will use BrlAPI to display the braille
2655               output on a real or fake device.
2656
2657           msmouse
2658               Three button serial mouse. Configure the guest to use Microsoft
2659               protocol.
2660
2661       -parallel dev
2662           Redirect the virtual parallel port to host device dev (same devices
2663           as the serial port). On Linux hosts, /dev/parportN can be used to
2664           use hardware devices connected on the corresponding host parallel
2665           port.
2666
2667           This option can be used several times to simulate up to 3 parallel
2668           ports.
2669
2670           Use "-parallel none" to disable all parallel ports.
2671
2672       -monitor dev
2673           Redirect the monitor to host device dev (same devices as the serial
2674           port).  The default device is "vc" in graphical mode and "stdio" in
2675           non graphical mode.  Use "-monitor none" to disable the default
2676           monitor.
2677
2678       -qmp dev
2679           Like -monitor but opens in 'control' mode.
2680
2681       -qmp-pretty dev
2682           Like -qmp but uses pretty JSON formatting.
2683
2684       -mon [chardev=]name[,mode=readline|control][,pretty[=on|off]]
2685           Setup monitor on chardev name. "pretty" turns on JSON pretty
2686           printing easing human reading and debugging.
2687
2688       -debugcon dev
2689           Redirect the debug console to host device dev (same devices as the
2690           serial port).  The debug console is an I/O port which is typically
2691           port 0xe9; writing to that I/O port sends output to this device.
2692           The default device is "vc" in graphical mode and "stdio" in non
2693           graphical mode.
2694
2695       -pidfile file
2696           Store the QEMU process PID in file. It is useful if you launch QEMU
2697           from a script.
2698
2699       -singlestep
2700           Run the emulation in single step mode.
2701
2702       --preconfig
2703           Pause QEMU for interactive configuration before the machine is
2704           created, which allows querying and configuring properties that will
2705           affect machine initialization.  Use QMP command 'x-exit-preconfig'
2706           to exit the preconfig state and move to the next state (i.e. run
2707           guest if -S isn't used or pause the second time if -S is used).
2708           This option is experimental.
2709
2710       -S  Do not start CPU at startup (you must type 'c' in the monitor).
2711
2712       -realtime mlock=on|off
2713           Run qemu with realtime features.  mlocking qemu and guest memory
2714           can be enabled via mlock=on (enabled by default).
2715
2716       -overcommit mem-lock=on|off
2717       -overcommit cpu-pm=on|off
2718           Run qemu with hints about host resource overcommit. The default is
2719           to assume that host overcommits all resources.
2720
2721           Locking qemu and guest memory can be enabled via mem-lock=on
2722           (disabled by default).  This works when host memory is not
2723           overcommitted and reduces the worst-case latency for guest.  This
2724           is equivalent to realtime.
2725
2726           Guest ability to manage power state of host cpus (increasing
2727           latency for other processes on the same host cpu, but decreasing
2728           latency for guest) can be enabled via cpu-pm=on (disabled by
2729           default).  This works best when host CPU is not overcommitted. When
2730           used, host estimates of CPU cycle and power utilization will be
2731           incorrect, not taking into account guest idle time.
2732
2733       -gdb dev
2734           Wait for gdb connection on device dev. Typical connections will
2735           likely be TCP-based, but also UDP, pseudo TTY, or even stdio are
2736           reasonable use case. The latter is allowing to start QEMU from
2737           within gdb and establish the connection via a pipe:
2738
2739                   (gdb) target remote | exec qemu-system-i386 -gdb stdio ...
2740
2741       -s  Shorthand for -gdb tcp::1234, i.e. open a gdbserver on TCP port
2742           1234.
2743
2744       -d item1[,...]
2745           Enable logging of specified items. Use '-d help' for a list of log
2746           items.
2747
2748       -D logfile
2749           Output log in logfile instead of to stderr
2750
2751       -dfilter range1[,...]
2752           Filter debug output to that relevant to a range of target
2753           addresses. The filter spec can be either start+size, start-size or
2754           start..end where start end and size are the addresses and sizes
2755           required. For example:
2756
2757                   -dfilter 0x8000..0x8fff,0xffffffc000080000+0x200,0xffffffc000060000-0x1000
2758
2759           Will dump output for any code in the 0x1000 sized block starting at
2760           0x8000 and the 0x200 sized block starting at 0xffffffc000080000 and
2761           another 0x1000 sized block starting at 0xffffffc00005f000.
2762
2763       -seed number
2764           Force the guest to use a deterministic pseudo-random number
2765           generator, seeded with number.  This does not affect crypto
2766           routines within the host.
2767
2768       -L  path
2769           Set the directory for the BIOS, VGA BIOS and keymaps.
2770
2771           To list all the data directories, use "-L help".
2772
2773       -bios file
2774           Set the filename for the BIOS.
2775
2776       -enable-kvm
2777           Enable KVM full virtualization support. This option is only
2778           available if KVM support is enabled when compiling.
2779
2780       -xen-domid id
2781           Specify xen guest domain id (XEN only).
2782
2783       -xen-attach
2784           Attach to existing xen domain.  libxl will use this when starting
2785           QEMU (XEN only).  Restrict set of available xen operations to
2786           specified domain id (XEN only).
2787
2788       -no-reboot
2789           Exit instead of rebooting.
2790
2791       -no-shutdown
2792           Don't exit QEMU on guest shutdown, but instead only stop the
2793           emulation.  This allows for instance switching to monitor to commit
2794           changes to the disk image.
2795
2796       -loadvm file
2797           Start right away with a saved state ("loadvm" in monitor)
2798
2799       -daemonize
2800           Daemonize the QEMU process after initialization.  QEMU will not
2801           detach from standard IO until it is ready to receive connections on
2802           any of its devices.  This option is a useful way for external
2803           programs to launch QEMU without having to cope with initialization
2804           race conditions.
2805
2806       -option-rom file
2807           Load the contents of file as an option ROM.  This option is useful
2808           to load things like EtherBoot.
2809
2810       -rtc
2811       [base=utc|localtime|datetime][,clock=host|rt|vm][,driftfix=none|slew]
2812           Specify base as "utc" or "localtime" to let the RTC start at the
2813           current UTC or local time, respectively. "localtime" is required
2814           for correct date in MS-DOS or Windows. To start at a specific point
2815           in time, provide datetime in the format "2006-06-17T16:01:21" or
2816           "2006-06-17". The default base is UTC.
2817
2818           By default the RTC is driven by the host system time. This allows
2819           using of the RTC as accurate reference clock inside the guest,
2820           specifically if the host time is smoothly following an accurate
2821           external reference clock, e.g. via NTP.  If you want to isolate the
2822           guest time from the host, you can set clock to "rt" instead, which
2823           provides a host monotonic clock if host support it.  To even
2824           prevent the RTC from progressing during suspension, you can set
2825           clock to "vm" (virtual clock). clock=vm is recommended especially
2826           in icount mode in order to preserve determinism; however, note that
2827           in icount mode the speed of the virtual clock is variable and can
2828           in general differ from the host clock.
2829
2830           Enable driftfix (i386 targets only) if you experience time drift
2831           problems, specifically with Windows' ACPI HAL. This option will try
2832           to figure out how many timer interrupts were not processed by the
2833           Windows guest and will re-inject them.
2834
2835       -icount
2836       [shift=N|auto][,rr=record|replay,rrfile=filename,rrsnapshot=snapshot]
2837           Enable virtual instruction counter.  The virtual cpu will execute
2838           one instruction every 2^N ns of virtual time.  If "auto" is
2839           specified then the virtual cpu speed will be automatically adjusted
2840           to keep virtual time within a few seconds of real time.
2841
2842           When the virtual cpu is sleeping, the virtual time will advance at
2843           default speed unless sleep=on|off is specified.  With sleep=on|off,
2844           the virtual time will jump to the next timer deadline instantly
2845           whenever the virtual cpu goes to sleep mode and will not advance if
2846           no timer is enabled. This behavior give deterministic execution
2847           times from the guest point of view.
2848
2849           Note that while this option can give deterministic behavior, it
2850           does not provide cycle accurate emulation.  Modern CPUs contain
2851           superscalar out of order cores with complex cache hierarchies.  The
2852           number of instructions executed often has little or no correlation
2853           with actual performance.
2854
2855           align=on will activate the delay algorithm which will try to
2856           synchronise the host clock and the virtual clock. The goal is to
2857           have a guest running at the real frequency imposed by the shift
2858           option.  Whenever the guest clock is behind the host clock and if
2859           align=on is specified then we print a message to the user to inform
2860           about the delay.  Currently this option does not work when shift is
2861           "auto".  Note: The sync algorithm will work for those shift values
2862           for which the guest clock runs ahead of the host clock. Typically
2863           this happens when the shift value is high (how high depends on the
2864           host machine).
2865
2866           When rr option is specified deterministic record/replay is enabled.
2867           Replay log is written into filename file in record mode and read
2868           from this file in replay mode.
2869
2870           Option rrsnapshot is used to create new vm snapshot named snapshot
2871           at the start of execution recording. In replay mode this option is
2872           used to load the initial VM state.
2873
2874       -watchdog model
2875           Create a virtual hardware watchdog device.  Once enabled (by a
2876           guest action), the watchdog must be periodically polled by an agent
2877           inside the guest or else the guest will be restarted. Choose a
2878           model for which your guest has drivers.
2879
2880           The model is the model of hardware watchdog to emulate. Use
2881           "-watchdog help" to list available hardware models. Only one
2882           watchdog can be enabled for a guest.
2883
2884           The following models may be available:
2885
2886           ib700
2887               iBASE 700 is a very simple ISA watchdog with a single timer.
2888
2889           i6300esb
2890               Intel 6300ESB I/O controller hub is a much more featureful PCI-
2891               based dual-timer watchdog.
2892
2893           diag288
2894               A virtual watchdog for s390x backed by the diagnose 288
2895               hypercall (currently KVM only).
2896
2897       -watchdog-action action
2898           The action controls what QEMU will do when the watchdog timer
2899           expires.  The default is "reset" (forcefully reset the guest).
2900           Other possible actions are: "shutdown" (attempt to gracefully
2901           shutdown the guest), "poweroff" (forcefully poweroff the guest),
2902           "inject-nmi" (inject a NMI into the guest), "pause" (pause the
2903           guest), "debug" (print a debug message and continue), or "none" (do
2904           nothing).
2905
2906           Note that the "shutdown" action requires that the guest responds to
2907           ACPI signals, which it may not be able to do in the sort of
2908           situations where the watchdog would have expired, and thus
2909           "-watchdog-action shutdown" is not recommended for production use.
2910
2911           Examples:
2912
2913           "-watchdog i6300esb -watchdog-action pause"
2914           "-watchdog ib700"
2915       -echr numeric_ascii_value
2916           Change the escape character used for switching to the monitor when
2917           using monitor and serial sharing.  The default is 0x01 when using
2918           the "-nographic" option.  0x01 is equal to pressing "Control-a".
2919           You can select a different character from the ascii control keys
2920           where 1 through 26 map to Control-a through Control-z.  For
2921           instance you could use the either of the following to change the
2922           escape character to Control-t.
2923
2924           "-echr 0x14"
2925           "-echr 20"
2926       -show-cursor
2927           Show cursor.
2928
2929       -tb-size n
2930           Set TB size.
2931
2932       -incoming tcp:[host]:port[,to=maxport][,ipv4][,ipv6]
2933       -incoming rdma:host:port[,ipv4][,ipv6]
2934           Prepare for incoming migration, listen on a given tcp port.
2935
2936       -incoming unix:socketpath
2937           Prepare for incoming migration, listen on a given unix socket.
2938
2939       -incoming fd:fd
2940           Accept incoming migration from a given filedescriptor.
2941
2942       -incoming exec:cmdline
2943           Accept incoming migration as an output from specified external
2944           command.
2945
2946       -incoming defer
2947           Wait for the URI to be specified via migrate_incoming.  The monitor
2948           can be used to change settings (such as migration parameters) prior
2949           to issuing the migrate_incoming to allow the migration to begin.
2950
2951       -only-migratable
2952           Only allow migratable devices. Devices will not be allowed to enter
2953           an unmigratable state.
2954
2955       -nodefaults
2956           Don't create default devices. Normally, QEMU sets the default
2957           devices like serial port, parallel port, virtual console, monitor
2958           device, VGA adapter, floppy and CD-ROM drive and others. The
2959           "-nodefaults" option will disable all those default devices.
2960
2961       -chroot dir
2962           Immediately before starting guest execution, chroot to the
2963           specified directory.  Especially useful in combination with -runas.
2964
2965       -runas user
2966           Immediately before starting guest execution, drop root privileges,
2967           switching to the specified user.
2968
2969       -prom-env variable=value
2970           Set OpenBIOS nvram variable to given value (PPC, SPARC only).
2971
2972       -semihosting
2973           Enable semihosting mode (ARM, M68K, Xtensa, MIPS, Nios II only).
2974
2975       -semihosting-config
2976       [enable=on|off][,target=native|gdb|auto][,chardev=id][,arg=str[,...]]
2977           Enable and configure semihosting (ARM, M68K, Xtensa, MIPS, Nios II
2978           only).
2979
2980           target="native|gdb|auto"
2981               Defines where the semihosting calls will be addressed, to QEMU
2982               ("native") or to GDB ("gdb"). The default is "auto", which
2983               means "gdb" during debug sessions and "native" otherwise.
2984
2985           chardev=str1
2986               Send the output to a chardev backend output for native or auto
2987               output when not in gdb
2988
2989           arg=str1,arg=str2,...
2990               Allows the user to pass input arguments, and can be used
2991               multiple times to build up a list. The old-style
2992               "-kernel"/"-append" method of passing a command line is still
2993               supported for backward compatibility. If both the
2994               "--semihosting-config arg" and the "-kernel"/"-append" are
2995               specified, the former is passed to semihosting as it always
2996               takes precedence.
2997
2998       -old-param
2999           Old param mode (ARM only).
3000
3001       -sandbox
3002       arg[,obsolete=string][,elevateprivileges=string][,spawn=string][,resourcecontrol=string]
3003           Enable Seccomp mode 2 system call filter. 'on' will enable syscall
3004           filtering and 'off' will disable it.  The default is 'off'.
3005
3006           obsolete=string
3007               Enable Obsolete system calls
3008
3009           elevateprivileges=string
3010               Disable set*uid|gid system calls
3011
3012           spawn=string
3013               Disable *fork and execve
3014
3015           resourcecontrol=string
3016               Disable process affinity and schedular priority
3017
3018       -readconfig file
3019           Read device configuration from file. This approach is useful when
3020           you want to spawn QEMU process with many command line options but
3021           you don't want to exceed the command line character limit.
3022
3023       -writeconfig file
3024           Write device configuration to file. The file can be either filename
3025           to save command line and device configuration into file or dash
3026           "-") character to print the output to stdout. This can be later
3027           used as input file for "-readconfig" option.
3028
3029       -no-user-config
3030           The "-no-user-config" option makes QEMU not load any of the user-
3031           provided config files on sysconfdir.
3032
3033       -trace [[enable=]pattern][,events=file][,file=file]
3034           Specify tracing options.
3035
3036           [enable=]pattern
3037               Immediately enable events matching pattern (either event name
3038               or a globbing pattern).  This option is only available if QEMU
3039               has been compiled with the simple, log or ftrace tracing
3040               backend.  To specify multiple events or patterns, specify the
3041               -trace option multiple times.
3042
3043               Use "-trace help" to print a list of names of trace points.
3044
3045           events=file
3046               Immediately enable events listed in file.  The file must
3047               contain one event name (as listed in the trace-events-all file)
3048               per line; globbing patterns are accepted too.  This option is
3049               only available if QEMU has been compiled with the simple, log
3050               or ftrace tracing backend.
3051
3052           file=file
3053               Log output traces to file.  This option is only available if
3054               QEMU has been compiled with the simple tracing backend.
3055
3056       -enable-fips
3057           Enable FIPS 140-2 compliance mode.
3058
3059       -msg timestamp[=on|off]
3060           prepend a timestamp to each log message.(default:on)
3061
3062       -dump-vmstate file
3063           Dump json-encoded vmstate information for current machine type to
3064           file in file
3065
3066       -enable-sync-profile
3067           Enable synchronization profiling.
3068
3069       Generic object creation
3070
3071       -object typename[,prop1=value1,...]
3072           Create a new object of type typename setting properties in the
3073           order they are specified.  Note that the 'id' property must be set.
3074           These objects are placed in the '/objects' path.
3075
3076           -object
3077           memory-backend-file,id=id,size=size,mem-path=dir,share=on|off,discard-data=on|off,merge=on|off,dump=on|off,prealloc=on|off,host-nodes=host-
3078           nodes,policy=default|preferred|bind|interleave,align=align
3079               Creates a memory file backend object, which can be used to back
3080               the guest RAM with huge pages.
3081
3082               The id parameter is a unique ID that will be used to reference
3083               this memory region when configuring the -numa argument.
3084
3085               The size option provides the size of the memory region, and
3086               accepts common suffixes, eg 500M.
3087
3088               The mem-path provides the path to either a shared memory or
3089               huge page filesystem mount.
3090
3091               The share boolean option determines whether the memory region
3092               is marked as private to QEMU, or shared. The latter allows a
3093               co-operating external process to access the QEMU memory region.
3094
3095               The share is also required for pvrdma devices due to
3096               limitations in the RDMA API provided by Linux.
3097
3098               Setting share=on might affect the ability to configure NUMA
3099               bindings for the memory backend under some circumstances, see
3100               Documentation/vm/numa_memory_policy.txt on the Linux kernel
3101               source tree for additional details.
3102
3103               Setting the discard-data boolean option to on indicates that
3104               file contents can be destroyed when QEMU exits, to avoid
3105               unnecessarily flushing data to the backing file.  Note that
3106               discard-data is only an optimization, and QEMU might not
3107               discard file contents if it aborts unexpectedly or is
3108               terminated using SIGKILL.
3109
3110               The merge boolean option enables memory merge, also known as
3111               MADV_MERGEABLE, so that Kernel Samepage Merging will consider
3112               the pages for memory deduplication.
3113
3114               Setting the dump boolean option to off excludes the memory from
3115               core dumps. This feature is also known as MADV_DONTDUMP.
3116
3117               The prealloc boolean option enables memory preallocation.
3118
3119               The host-nodes option binds the memory range to a list of NUMA
3120               host nodes.
3121
3122               The policy option sets the NUMA policy to one of the following
3123               values:
3124
3125               default
3126                   default host policy
3127
3128               preferred
3129                   prefer the given host node list for allocation
3130
3131               bind
3132                   restrict memory allocation to the given host node list
3133
3134               interleave
3135                   interleave memory allocations across the given host node
3136                   list
3137
3138               The align option specifies the base address alignment when QEMU
3139               mmap(2) mem-path, and accepts common suffixes, eg 2M. Some
3140               backend store specified by mem-path requires an alignment
3141               different than the default one used by QEMU, eg the device DAX
3142               /dev/dax0.0 requires 2M alignment rather than 4K. In such
3143               cases, users can specify the required alignment via this
3144               option.
3145
3146               The pmem option specifies whether the backing file specified by
3147               mem-path is in host persistent memory that can be accessed
3148               using the SNIA NVM programming model (e.g. Intel NVDIMM).  If
3149               pmem is set to 'on', QEMU will take necessary operations to
3150               guarantee the persistence of its own writes to mem-path (e.g.
3151               in vNVDIMM label emulation and live migration).  Also, we will
3152               map the backend-file with MAP_SYNC flag, which ensures the file
3153               metadata is in sync for mem-path in case of host crash or a
3154               power failure. MAP_SYNC requires support from both the host
3155               kernel (since Linux kernel 4.15) and the filesystem of mem-path
3156               mounted with DAX option.
3157
3158           -object
3159           memory-backend-ram,id=id,merge=on|off,dump=on|off,share=on|off,prealloc=on|off,size=size,host-nodes=host-
3160           nodes,policy=default|preferred|bind|interleave
3161               Creates a memory backend object, which can be used to back the
3162               guest RAM.  Memory backend objects offer more control than the
3163               -m option that is traditionally used to define guest RAM.
3164               Please refer to memory-backend-file for a description of the
3165               options.
3166
3167           -object
3168           memory-backend-memfd,id=id,merge=on|off,dump=on|off,share=on|off,prealloc=on|off,size=size,host-nodes=host-
3169           nodes,policy=default|preferred|bind|interleave,seal=on|off,hugetlb=on|off,hugetlbsize=size
3170               Creates an anonymous memory file backend object, which allows
3171               QEMU to share the memory with an external process (e.g. when
3172               using vhost-user). The memory is allocated with memfd and
3173               optional sealing. (Linux only)
3174
3175               The seal option creates a sealed-file, that will block further
3176               resizing the memory ('on' by default).
3177
3178               The hugetlb option specify the file to be created resides in
3179               the hugetlbfs filesystem (since Linux 4.14).  Used in
3180               conjunction with the hugetlb option, the hugetlbsize option
3181               specify the hugetlb page size on systems that support multiple
3182               hugetlb page sizes (it must be a power of 2 value supported by
3183               the system).
3184
3185               In some versions of Linux, the hugetlb option is incompatible
3186               with the seal option (requires at least Linux 4.16).
3187
3188               Please refer to memory-backend-file for a description of the
3189               other options.
3190
3191               The share boolean option is on by default with memfd.
3192
3193           -object rng-random,id=id,filename=/dev/random
3194               Creates a random number generator backend which obtains entropy
3195               from a device on the host. The id parameter is a unique ID that
3196               will be used to reference this entropy backend from the virtio-
3197               rng device. The filename parameter specifies which file to
3198               obtain entropy from and if omitted defaults to /dev/urandom.
3199
3200           -object rng-egd,id=id,chardev=chardevid
3201               Creates a random number generator backend which obtains entropy
3202               from an external daemon running on the host. The id parameter
3203               is a unique ID that will be used to reference this entropy
3204               backend from the virtio-rng device. The chardev parameter is
3205               the unique ID of a character device backend that provides the
3206               connection to the RNG daemon.
3207
3208           -object
3209           tls-creds-anon,id=id,endpoint=endpoint,dir=/path/to/cred/dir,verify-peer=on|off
3210               Creates a TLS anonymous credentials object, which can be used
3211               to provide TLS support on network backends. The id parameter is
3212               a unique ID which network backends will use to access the
3213               credentials. The endpoint is either server or client depending
3214               on whether the QEMU network backend that uses the credentials
3215               will be acting as a client or as a server. If verify-peer is
3216               enabled (the default) then once the handshake is completed, the
3217               peer credentials will be verified, though this is a no-op for
3218               anonymous credentials.
3219
3220               The dir parameter tells QEMU where to find the credential
3221               files. For server endpoints, this directory may contain a file
3222               dh-params.pem providing diffie-hellman parameters to use for
3223               the TLS server. If the file is missing, QEMU will generate a
3224               set of DH parameters at startup. This is a computationally
3225               expensive operation that consumes random pool entropy, so it is
3226               recommended that a persistent set of parameters be generated
3227               upfront and saved.
3228
3229           -object
3230           tls-creds-psk,id=id,endpoint=endpoint,dir=/path/to/keys/dir[,username=username]
3231               Creates a TLS Pre-Shared Keys (PSK) credentials object, which
3232               can be used to provide TLS support on network backends. The id
3233               parameter is a unique ID which network backends will use to
3234               access the credentials. The endpoint is either server or client
3235               depending on whether the QEMU network backend that uses the
3236               credentials will be acting as a client or as a server. For
3237               clients only, username is the username which will be sent to
3238               the server.  If omitted it defaults to "qemu".
3239
3240               The dir parameter tells QEMU where to find the keys file.  It
3241               is called "dir/keys.psk" and contains "username:key" pairs.
3242               This file can most easily be created using the GnuTLS "psktool"
3243               program.
3244
3245               For server endpoints, dir may also contain a file dh-params.pem
3246               providing diffie-hellman parameters to use for the TLS server.
3247               If the file is missing, QEMU will generate a set of DH
3248               parameters at startup. This is a computationally expensive
3249               operation that consumes random pool entropy, so it is
3250               recommended that a persistent set of parameters be generated up
3251               front and saved.
3252
3253           -object
3254           tls-creds-x509,id=id,endpoint=endpoint,dir=/path/to/cred/dir,priority=priority,verify-peer=on|off,passwordid=id
3255               Creates a TLS anonymous credentials object, which can be used
3256               to provide TLS support on network backends. The id parameter is
3257               a unique ID which network backends will use to access the
3258               credentials. The endpoint is either server or client depending
3259               on whether the QEMU network backend that uses the credentials
3260               will be acting as a client or as a server. If verify-peer is
3261               enabled (the default) then once the handshake is completed, the
3262               peer credentials will be verified. With x509 certificates, this
3263               implies that the clients must be provided with valid client
3264               certificates too.
3265
3266               The dir parameter tells QEMU where to find the credential
3267               files. For server endpoints, this directory may contain a file
3268               dh-params.pem providing diffie-hellman parameters to use for
3269               the TLS server. If the file is missing, QEMU will generate a
3270               set of DH parameters at startup. This is a computationally
3271               expensive operation that consumes random pool entropy, so it is
3272               recommended that a persistent set of parameters be generated
3273               upfront and saved.
3274
3275               For x509 certificate credentials the directory will contain
3276               further files providing the x509 certificates. The certificates
3277               must be stored in PEM format, in filenames ca-cert.pem,
3278               ca-crl.pem (optional), server-cert.pem (only servers),
3279               server-key.pem (only servers), client-cert.pem (only clients),
3280               and client-key.pem (only clients).
3281
3282               For the server-key.pem and client-key.pem files which contain
3283               sensitive private keys, it is possible to use an encrypted
3284               version by providing the passwordid parameter. This provides
3285               the ID of a previously created "secret" object containing the
3286               password for decryption.
3287
3288               The priority parameter allows to override the global default
3289               priority used by gnutls. This can be useful if the system
3290               administrator needs to use a weaker set of crypto priorities
3291               for QEMU without potentially forcing the weakness onto all
3292               applications. Or conversely if one wants wants a stronger
3293               default for QEMU than for all other applications, they can do
3294               this through this parameter. Its format is a gnutls priority
3295               string as described at
3296               <https://gnutls.org/manual/html_node/Priority-Strings.html>.
3297
3298           -object
3299           filter-buffer,id=id,netdev=netdevid,interval=t[,queue=all|rx|tx][,status=on|off]
3300               Interval t can't be 0, this filter batches the packet delivery:
3301               all packets arriving in a given interval on netdev netdevid are
3302               delayed until the end of the interval. Interval is in
3303               microseconds.  status is optional that indicate whether the
3304               netfilter is on (enabled) or off (disabled), the default status
3305               for netfilter will be 'on'.
3306
3307               queue all|rx|tx is an option that can be applied to any
3308               netfilter.
3309
3310               all: the filter is attached both to the receive and the
3311               transmit queue of the netdev (default).
3312
3313               rx: the filter is attached to the receive queue of the netdev,
3314               where it will receive packets sent to the netdev.
3315
3316               tx: the filter is attached to the transmit queue of the netdev,
3317               where it will receive packets sent by the netdev.
3318
3319           -object
3320           filter-mirror,id=id,netdev=netdevid,outdev=chardevid,queue=all|rx|tx[,vnet_hdr_support]
3321               filter-mirror on netdev netdevid,mirror net packet to
3322               chardevchardevid, if it has the vnet_hdr_support flag, filter-
3323               mirror will mirror packet with vnet_hdr_len.
3324
3325           -object
3326           filter-redirector,id=id,netdev=netdevid,indev=chardevid,outdev=chardevid,queue=all|rx|tx[,vnet_hdr_support]
3327               filter-redirector on netdev netdevid,redirect filter's net
3328               packet to chardev chardevid,and redirect indev's packet to
3329               filter.if it has the vnet_hdr_support flag, filter-redirector
3330               will redirect packet with vnet_hdr_len.  Create a filter-
3331               redirector we need to differ outdev id from indev id, id can
3332               not be the same. we can just use indev or outdev, but at least
3333               one of indev or outdev need to be specified.
3334
3335           -object
3336           filter-rewriter,id=id,netdev=netdevid,queue=all|rx|tx,[vnet_hdr_support]
3337               Filter-rewriter is a part of COLO project.It will rewrite tcp
3338               packet to secondary from primary to keep secondary tcp
3339               connection,and rewrite tcp packet to primary from secondary
3340               make tcp packet can be handled by client.if it has the
3341               vnet_hdr_support flag, we can parse packet with vnet header.
3342
3343               usage: colo secondary: -object
3344               filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0 -object
3345               filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1 -object
3346               filter-rewriter,id=rew0,netdev=hn0,queue=all
3347
3348           -object filter-dump,id=id,netdev=dev[,file=filename][,maxlen=len]
3349               Dump the network traffic on netdev dev to the file specified by
3350               filename. At most len bytes (64k by default) per packet are
3351               stored.  The file format is libpcap, so it can be analyzed with
3352               tools such as tcpdump or Wireshark.
3353
3354           -object
3355           colo-compare,id=id,primary_in=chardevid,secondary_in=chardevid,outdev=chardevid,iothread=id[,vnet_hdr_support][,notify_dev=id]
3356               Colo-compare gets packet from primary_inchardevid and
3357               secondary_inchardevid, than compare primary packet with
3358               secondary packet. If the packets are same, we will output
3359               primary packet to outdevchardevid, else we will notify colo-
3360               frame do checkpoint and send primary packet to outdevchardevid.
3361               In order to improve efficiency, we need to put the task of
3362               comparison in another thread. If it has the vnet_hdr_support
3363               flag, colo compare will send/recv packet with vnet_hdr_len.  If
3364               you want to use Xen COLO, will need the notify_dev to notify
3365               Xen colo-frame to do checkpoint.
3366
3367               we must use it with the help of filter-mirror and filter-
3368               redirector.
3369
3370                       KVM COLO
3371
3372                       primary:
3373                       -netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
3374                       -device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66
3375                       -chardev socket,id=mirror0,host=3.3.3.3,port=9003,server,nowait
3376                       -chardev socket,id=compare1,host=3.3.3.3,port=9004,server,nowait
3377                       -chardev socket,id=compare0,host=3.3.3.3,port=9001,server,nowait
3378                       -chardev socket,id=compare0-0,host=3.3.3.3,port=9001
3379                       -chardev socket,id=compare_out,host=3.3.3.3,port=9005,server,nowait
3380                       -chardev socket,id=compare_out0,host=3.3.3.3,port=9005
3381                       -object iothread,id=iothread1
3382                       -object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0
3383                       -object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out
3384                       -object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0
3385                       -object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0,iothread=iothread1
3386
3387                       secondary:
3388                       -netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,down script=/etc/qemu-ifdown
3389                       -device e1000,netdev=hn0,mac=52:a4:00:12:78:66
3390                       -chardev socket,id=red0,host=3.3.3.3,port=9003
3391                       -chardev socket,id=red1,host=3.3.3.3,port=9004
3392                       -object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0
3393                       -object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1
3394
3395
3396                       Xen COLO
3397
3398                       primary:
3399                       -netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
3400                       -device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66
3401                       -chardev socket,id=mirror0,host=3.3.3.3,port=9003,server,nowait
3402                       -chardev socket,id=compare1,host=3.3.3.3,port=9004,server,nowait
3403                       -chardev socket,id=compare0,host=3.3.3.3,port=9001,server,nowait
3404                       -chardev socket,id=compare0-0,host=3.3.3.3,port=9001
3405                       -chardev socket,id=compare_out,host=3.3.3.3,port=9005,server,nowait
3406                       -chardev socket,id=compare_out0,host=3.3.3.3,port=9005
3407                       -chardev socket,id=notify_way,host=3.3.3.3,port=9009,server,nowait
3408                       -object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0
3409                       -object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out
3410                       -object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0
3411                       -object iothread,id=iothread1
3412                       -object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0,notify_dev=nofity_way,iothread=iothread1
3413
3414                       secondary:
3415                       -netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,down script=/etc/qemu-ifdown
3416                       -device e1000,netdev=hn0,mac=52:a4:00:12:78:66
3417                       -chardev socket,id=red0,host=3.3.3.3,port=9003
3418                       -chardev socket,id=red1,host=3.3.3.3,port=9004
3419                       -object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0
3420                       -object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1
3421
3422               If you want to know the detail of above command line, you can
3423               read the colo-compare git log.
3424
3425           -object cryptodev-backend-builtin,id=id[,queues=queues]
3426               Creates a cryptodev backend which executes crypto opreation
3427               from the QEMU cipher APIS. The id parameter is a unique ID that
3428               will be used to reference this cryptodev backend from the
3429               virtio-crypto device. The queues parameter is optional, which
3430               specify the queue number of cryptodev backend, the default of
3431               queues is 1.
3432
3433                       # qemu-system-x86_64 \
3434                       [...] \
3435                       -object cryptodev-backend-builtin,id=cryptodev0 \
3436                       -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \
3437                       [...]
3438
3439           -object
3440           cryptodev-vhost-user,id=id,chardev=chardevid[,queues=queues]
3441               Creates a vhost-user cryptodev backend, backed by a chardev
3442               chardevid.  The id parameter is a unique ID that will be used
3443               to reference this cryptodev backend from the virtio-crypto
3444               device.  The chardev should be a unix domain socket backed one.
3445               The vhost-user uses a specifically defined protocol to pass
3446               vhost ioctl replacement messages to an application on the other
3447               end of the socket.  The queues parameter is optional, which
3448               specify the queue number of cryptodev backend for multiqueue
3449               vhost-user, the default of queues is 1.
3450
3451                       # qemu-system-x86_64 \
3452                       [...] \
3453                       -chardev socket,id=chardev0,path=/path/to/socket \
3454                       -object cryptodev-vhost-user,id=cryptodev0,chardev=chardev0 \
3455                       -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \
3456                       [...]
3457
3458           -object
3459           secret,id=id,data=string,format=raw|base64[,keyid=secretid,iv=string]
3460           -object
3461           secret,id=id,file=filename,format=raw|base64[,keyid=secretid,iv=string]
3462               Defines a secret to store a password, encryption key, or some
3463               other sensitive data. The sensitive data can either be passed
3464               directly via the data parameter, or indirectly via the file
3465               parameter. Using the data parameter is insecure unless the
3466               sensitive data is encrypted.
3467
3468               The sensitive data can be provided in raw format (the default),
3469               or base64.  When encoded as JSON, the raw format only supports
3470               valid UTF-8 characters, so base64 is recommended for sending
3471               binary data. QEMU will convert from which ever format is
3472               provided to the format it needs internally. eg, an RBD password
3473               can be provided in raw format, even though it will be base64
3474               encoded when passed onto the RBD sever.
3475
3476               For added protection, it is possible to encrypt the data
3477               associated with a secret using the AES-256-CBC cipher. Use of
3478               encryption is indicated by providing the keyid and iv
3479               parameters. The keyid parameter provides the ID of a previously
3480               defined secret that contains the AES-256 decryption key. This
3481               key should be 32-bytes long and be base64 encoded. The iv
3482               parameter provides the random initialization vector used for
3483               encryption of this particular secret and should be a base64
3484               encrypted string of the 16-byte IV.
3485
3486               The simplest (insecure) usage is to provide the secret inline
3487
3488                       # $QEMU -object secret,id=sec0,data=letmein,format=raw
3489
3490               The simplest secure usage is to provide the secret via a file
3491
3492               # printf "letmein" > mypasswd.txt # $QEMU -object
3493               secret,id=sec0,file=mypasswd.txt,format=raw
3494
3495               For greater security, AES-256-CBC should be used. To illustrate
3496               usage, consider the openssl command line tool which can encrypt
3497               the data. Note that when encrypting, the plaintext must be
3498               padded to the cipher block size (32 bytes) using the standard
3499               PKCS#5/6 compatible padding algorithm.
3500
3501               First a master key needs to be created in base64 encoding:
3502
3503                       # openssl rand -base64 32 > key.b64
3504                       # KEY=$(base64 -d key.b64 | hexdump  -v -e '/1 "%02X"')
3505
3506               Each secret to be encrypted needs to have a random
3507               initialization vector generated. These do not need to be kept
3508               secret
3509
3510                       # openssl rand -base64 16 > iv.b64
3511                       # IV=$(base64 -d iv.b64 | hexdump  -v -e '/1 "%02X"')
3512
3513               The secret to be defined can now be encrypted, in this case
3514               we're telling openssl to base64 encode the result, but it could
3515               be left as raw bytes if desired.
3516
3517                       # SECRET=$(printf "letmein" |
3518                       openssl enc -aes-256-cbc -a -K $KEY -iv $IV)
3519
3520               When launching QEMU, create a master secret pointing to
3521               "key.b64" and specify that to be used to decrypt the user
3522               password. Pass the contents of "iv.b64" to the second secret
3523
3524                       # $QEMU \
3525                       -object secret,id=secmaster0,format=base64,file=key.b64 \
3526                       -object secret,id=sec0,keyid=secmaster0,format=base64,\
3527                       data=$SECRET,iv=$(<iv.b64)
3528
3529           -object
3530           sev-guest,id=id,cbitpos=cbitpos,reduced-phys-bits=val,[sev-device=string,policy=policy,handle=handle,dh-cert-file=file,session-file=file]
3531               Create a Secure Encrypted Virtualization (SEV) guest object,
3532               which can be used to provide the guest memory encryption
3533               support on AMD processors.
3534
3535               When memory encryption is enabled, one of the physical address
3536               bit (aka the C-bit) is utilized to mark if a memory page is
3537               protected. The cbitpos is used to provide the C-bit position.
3538               The C-bit position is Host family dependent hence user must
3539               provide this value. On EPYC, the value should be 47.
3540
3541               When memory encryption is enabled, we loose certain bits in
3542               physical address space.  The reduced-phys-bits is used to
3543               provide the number of bits we loose in physical address space.
3544               Similar to C-bit, the value is Host family dependent.  On EPYC,
3545               the value should be 5.
3546
3547               The sev-device provides the device file to use for
3548               communicating with the SEV firmware running inside AMD Secure
3549               Processor. The default device is '/dev/sev'. If hardware
3550               supports memory encryption then /dev/sev devices are created by
3551               CCP driver.
3552
3553               The policy provides the guest policy to be enforced by the SEV
3554               firmware and restrict what configuration and operational
3555               commands can be performed on this guest by the hypervisor. The
3556               policy should be provided by the guest owner and is bound to
3557               the guest and cannot be changed throughout the lifetime of the
3558               guest.  The default is 0.
3559
3560               If guest policy allows sharing the key with another SEV guest
3561               then handle can be use to provide handle of the guest from
3562               which to share the key.
3563
3564               The dh-cert-file and session-file provides the guest owner's
3565               Public Diffie-Hillman key defined in SEV spec. The PDH and
3566               session parameters are used for establishing a cryptographic
3567               session with the guest owner to negotiate keys used for
3568               attestation. The file must be encoded in base64.
3569
3570               e.g to launch a SEV guest
3571
3572                       # $QEMU \
3573                       ......
3574                       -object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=5 \
3575                       -machine ...,memory-encryption=sev0
3576                       .....
3577
3578           -object authz-simple,id=id,identity=string
3579               Create an authorization object that will control access to
3580               network services.
3581
3582               The identity parameter is identifies the user and its format
3583               depends on the network service that authorization object is
3584               associated with. For authorizing based on TLS x509
3585               certificates, the identity must be the x509 distinguished name.
3586               Note that care must be taken to escape any commas in the
3587               distinguished name.
3588
3589               An example authorization object to validate a x509
3590               distinguished name would look like:
3591
3592                       # $QEMU \
3593                       ...
3594                       -object 'authz-simple,id=auth0,identity=CN=laptop.example.com,,O=Example Org,,L=London,,ST=London,,C=GB' \
3595                       ...
3596
3597               Note the use of quotes due to the x509 distinguished name
3598               containing whitespace, and escaping of ','.
3599
3600           -object authz-listfile,id=id,filename=path,refresh=yes|no
3601               Create an authorization object that will control access to
3602               network services.
3603
3604               The filename parameter is the fully qualified path to a file
3605               containing the access control list rules in JSON format.
3606
3607               An example set of rules that match against SASL usernames might
3608               look like:
3609
3610                       {
3611                       "rules": [
3612                       { "match": "fred", "policy": "allow", "format": "exact" },
3613                       { "match": "bob", "policy": "allow", "format": "exact" },
3614                       { "match": "danb", "policy": "deny", "format": "glob" },
3615                       { "match": "dan*", "policy": "allow", "format": "exact" },
3616                       ],
3617                       "policy": "deny"
3618                       }
3619
3620               When checking access the object will iterate over all the rules
3621               and the first rule to match will have its policy value returned
3622               as the result. If no rules match, then the default policy value
3623               is returned.
3624
3625               The rules can either be an exact string match, or they can use
3626               the simple UNIX glob pattern matching to allow wildcards to be
3627               used.
3628
3629               If refresh is set to true the file will be monitored and
3630               automatically reloaded whenever its content changes.
3631
3632               As with the "authz-simple" object, the format of the identity
3633               strings being matched depends on the network service, but is
3634               usually a TLS x509 distinguished name, or a SASL username.
3635
3636               An example authorization object to validate a SASL username
3637               would look like:
3638
3639                       # $QEMU \
3640                       ...
3641                       -object authz-simple,id=auth0,filename=/etc/qemu/vnc-sasl.acl,refresh=yes
3642                       ...
3643
3644           -object authz-pam,id=id,service=string
3645               Create an authorization object that will control access to
3646               network services.
3647
3648               The service parameter provides the name of a PAM service to use
3649               for authorization. It requires that a file "/etc/pam.d/service"
3650               exist to provide the configuration for the "account" subsystem.
3651
3652               An example authorization object to validate a TLS x509
3653               distinguished name would look like:
3654
3655                       # $QEMU \
3656                       ...
3657                       -object authz-pam,id=auth0,service=qemu-vnc
3658                       ...
3659
3660               There would then be a corresponding config file for PAM at
3661               "/etc/pam.d/qemu-vnc" that contains:
3662
3663                       account requisite  pam_listfile.so item=user sense=allow \
3664                       file=/etc/qemu/vnc.allow
3665
3666               Finally the "/etc/qemu/vnc.allow" file would contain the list
3667               of x509 distingished names that are permitted access
3668
3669                       CN=laptop.example.com,O=Example Home,L=London,ST=London,C=GB
3670
3671       During the graphical emulation, you can use special key combinations to
3672       change modes. The default key mappings are shown below, but if you use
3673       "-alt-grab" then the modifier is Ctrl-Alt-Shift (instead of Ctrl-Alt)
3674       and if you use "-ctrl-grab" then the modifier is the right Ctrl key
3675       (instead of Ctrl-Alt):
3676
3677       Ctrl-Alt-f
3678           Toggle full screen
3679
3680       Ctrl-Alt-+
3681           Enlarge the screen
3682
3683       Ctrl-Alt--
3684           Shrink the screen
3685
3686       Ctrl-Alt-u
3687           Restore the screen's un-scaled dimensions
3688
3689       Ctrl-Alt-n
3690           Switch to virtual console 'n'. Standard console mappings are:
3691
3692           1   Target system display
3693
3694           2   Monitor
3695
3696           3   Serial port
3697
3698       Ctrl-Alt
3699           Toggle mouse and keyboard grab.
3700
3701       In the virtual consoles, you can use Ctrl-Up, Ctrl-Down, Ctrl-PageUp
3702       and Ctrl-PageDown to move in the back log.
3703
3704       During emulation, if you are using a character backend multiplexer
3705       (which is the default if you are using -nographic) then several
3706       commands are available via an escape sequence. These key sequences all
3707       start with an escape character, which is Ctrl-a by default, but can be
3708       changed with -echr. The list below assumes you're using the default.
3709
3710       Ctrl-a h
3711           Print this help
3712
3713       Ctrl-a x
3714           Exit emulator
3715
3716       Ctrl-a s
3717           Save disk data back to file (if -snapshot)
3718
3719       Ctrl-a t
3720           Toggle console timestamps
3721
3722       Ctrl-a b
3723           Send break (magic sysrq in Linux)
3724
3725       Ctrl-a c
3726           Rotate between the frontends connected to the multiplexer (usually
3727           this switches between the monitor and the console)
3728
3729       Ctrl-a Ctrl-a
3730           Send the escape character to the frontend
3731
3732       The following options are specific to the PowerPC emulation:
3733
3734       -g WxH[xDEPTH]
3735           Set the initial VGA graphic mode. The default is 800x600x32.
3736
3737       -prom-env string
3738           Set OpenBIOS variables in NVRAM, for example:
3739
3740                   qemu-system-ppc -prom-env 'auto-boot?=false' \
3741                    -prom-env 'boot-device=hd:2,\yaboot' \
3742                    -prom-env 'boot-args=conf=hd:2,\yaboot.conf'
3743
3744           These variables are not used by Open Hack'Ware.
3745
3746       The following options are specific to the Sparc32 emulation:
3747
3748       -g WxHx[xDEPTH]
3749           Set the initial graphics mode. For TCX, the default is 1024x768x8
3750           with the option of 1024x768x24. For cgthree, the default is
3751           1024x768x8 with the option of 1152x900x8 for people who wish to use
3752           OBP.
3753
3754       -prom-env string
3755           Set OpenBIOS variables in NVRAM, for example:
3756
3757                   qemu-system-sparc -prom-env 'auto-boot?=false' \
3758                    -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
3759
3760       -M [SS-4|SS-5|SS-10|SS-20|SS-600MP|LX|Voyager|SPARCClassic]
3761       [|SPARCbook]
3762           Set the emulated machine type. Default is SS-5.
3763
3764       The following options are specific to the Sparc64 emulation:
3765
3766       -prom-env string
3767           Set OpenBIOS variables in NVRAM, for example:
3768
3769                   qemu-system-sparc64 -prom-env 'auto-boot?=false'
3770
3771       -M [sun4u|sun4v|niagara]
3772           Set the emulated machine type. The default is sun4u.
3773
3774       The following options are specific to the ARM emulation:
3775
3776       -semihosting
3777           Enable semihosting syscall emulation.
3778
3779           On ARM this implements the "Angel" interface.
3780
3781           Note that this allows guest direct access to the host filesystem,
3782           so should only be used with trusted guest OS.
3783
3784       The following options are specific to the ColdFire emulation:
3785
3786       -semihosting
3787           Enable semihosting syscall emulation.
3788
3789           On M68K this implements the "ColdFire GDB" interface used by
3790           libgloss.
3791
3792           Note that this allows guest direct access to the host filesystem,
3793           so should only be used with trusted guest OS.
3794
3795       The following options are specific to the Xtensa emulation:
3796
3797       -semihosting
3798           Enable semihosting syscall emulation.
3799
3800           Xtensa semihosting provides basic file IO calls, such as
3801           open/read/write/seek/select.  Tensilica baremetal libc for ISS and
3802           linux platform "sim" use this interface.
3803
3804           Note that this allows guest direct access to the host filesystem,
3805           so should only be used with trusted guest OS.
3806

NOTES

3808       In addition to using normal file images for the emulated storage
3809       devices, QEMU can also use networked resources such as iSCSI devices.
3810       These are specified using a special URL syntax.
3811
3812       iSCSI
3813           iSCSI support allows QEMU to access iSCSI resources directly and
3814           use as images for the guest storage. Both disk and cdrom images are
3815           supported.
3816
3817           Syntax for specifying iSCSI LUNs is
3818           "iscsi://<target-ip>[:<port>]/<target-iqn>/<lun>"
3819
3820           By default qemu will use the iSCSI initiator-name
3821           'iqn.2008-11.org.linux-kvm[:<name>]' but this can also be set from
3822           the command line or a configuration file.
3823
3824           Since version Qemu 2.4 it is possible to specify a iSCSI request
3825           timeout to detect stalled requests and force a reestablishment of
3826           the session. The timeout is specified in seconds. The default is 0
3827           which means no timeout. Libiscsi 1.15.0 or greater is required for
3828           this feature.
3829
3830           Example (without authentication):
3831
3832                   qemu-system-i386 -iscsi initiator-name=iqn.2001-04.com.example:my-initiator \
3833                                    -cdrom iscsi://192.0.2.1/iqn.2001-04.com.example/2 \
3834                                    -drive file=iscsi://192.0.2.1/iqn.2001-04.com.example/1
3835
3836           Example (CHAP username/password via URL):
3837
3838                   qemu-system-i386 -drive file=iscsi://user%password@192.0.2.1/iqn.2001-04.com.example/1
3839
3840           Example (CHAP username/password via environment variables):
3841
3842                   LIBISCSI_CHAP_USERNAME="user" \
3843                   LIBISCSI_CHAP_PASSWORD="password" \
3844                   qemu-system-i386 -drive file=iscsi://192.0.2.1/iqn.2001-04.com.example/1
3845
3846       NBD QEMU supports NBD (Network Block Devices) both using TCP protocol
3847           as well as Unix Domain Sockets.
3848
3849           Syntax for specifying a NBD device using TCP
3850           "nbd:<server-ip>:<port>[:exportname=<export>]"
3851
3852           Syntax for specifying a NBD device using Unix Domain Sockets
3853           "nbd:unix:<domain-socket>[:exportname=<export>]"
3854
3855           Example for TCP
3856
3857                   qemu-system-i386 --drive file=nbd:192.0.2.1:30000
3858
3859           Example for Unix Domain Sockets
3860
3861                   qemu-system-i386 --drive file=nbd:unix:/tmp/nbd-socket
3862
3863       SSH QEMU supports SSH (Secure Shell) access to remote disks.
3864
3865           Examples:
3866
3867                   qemu-system-i386 -drive file=ssh://user@host/path/to/disk.img
3868                   qemu-system-i386 -drive file.driver=ssh,file.user=user,file.host=host,file.port=22,file.path=/path/to/disk.img
3869
3870           Currently authentication must be done using ssh-agent.  Other
3871           authentication methods may be supported in future.
3872
3873       Sheepdog
3874           Sheepdog is a distributed storage system for QEMU.  QEMU supports
3875           using either local sheepdog devices or remote networked devices.
3876
3877           Syntax for specifying a sheepdog device
3878
3879                   sheepdog[+tcp|+unix]://[host:port]/vdiname[?socket=path][#snapid|#tag]
3880
3881           Example
3882
3883                   qemu-system-i386 --drive file=sheepdog://192.0.2.1:30000/MyVirtualMachine
3884
3885           See also <https://sheepdog.github.io/sheepdog/>.
3886
3887       GlusterFS
3888           GlusterFS is a user space distributed file system.  QEMU supports
3889           the use of GlusterFS volumes for hosting VM disk images using TCP,
3890           Unix Domain Sockets and RDMA transport protocols.
3891
3892           Syntax for specifying a VM disk image on GlusterFS volume is
3893
3894                   URI:
3895                   gluster[+type]://[host[:port]]/volume/path[?socket=...][,debug=N][,logfile=...]
3896
3897                   JSON:
3898                   'json:{"driver":"qcow2","file":{"driver":"gluster","volume":"testvol","path":"a.img","debug":N,"logfile":"...",
3899                                                    "server":[{"type":"tcp","host":"...","port":"..."},
3900                                                              {"type":"unix","socket":"..."}]}}'
3901
3902           Example
3903
3904                   URI:
3905                   qemu-system-x86_64 --drive file=gluster://192.0.2.1/testvol/a.img,
3906                                                  file.debug=9,file.logfile=/var/log/qemu-gluster.log
3907
3908                   JSON:
3909                   qemu-system-x86_64 'json:{"driver":"qcow2",
3910                                             "file":{"driver":"gluster",
3911                                                      "volume":"testvol","path":"a.img",
3912                                                      "debug":9,"logfile":"/var/log/qemu-gluster.log",
3913                                                      "server":[{"type":"tcp","host":"1.2.3.4","port":24007},
3914                                                                {"type":"unix","socket":"/var/run/glusterd.socket"}]}}'
3915                   qemu-system-x86_64 -drive driver=qcow2,file.driver=gluster,file.volume=testvol,file.path=/path/a.img,
3916                                                         file.debug=9,file.logfile=/var/log/qemu-gluster.log,
3917                                                         file.server.0.type=tcp,file.server.0.host=1.2.3.4,file.server.0.port=24007,
3918                                                         file.server.1.type=unix,file.server.1.socket=/var/run/glusterd.socket
3919
3920           See also <http://www.gluster.org>.
3921
3922       HTTP/HTTPS/FTP/FTPS
3923           QEMU supports read-only access to files accessed over http(s) and
3924           ftp(s).
3925
3926           Syntax using a single filename:
3927
3928                   <protocol>://[<username>[:<password>]@]<host>/<path>
3929
3930           where:
3931
3932           protocol
3933               'http', 'https', 'ftp', or 'ftps'.
3934
3935           username
3936               Optional username for authentication to the remote server.
3937
3938           password
3939               Optional password for authentication to the remote server.
3940
3941           host
3942               Address of the remote server.
3943
3944           path
3945               Path on the remote server, including any query string.
3946
3947           The following options are also supported:
3948
3949           url The full URL when passing options to the driver explicitly.
3950
3951           readahead
3952               The amount of data to read ahead with each range request to the
3953               remote server.  This value may optionally have the suffix 'T',
3954               'G', 'M', 'K', 'k' or 'b'. If it does not have a suffix, it
3955               will be assumed to be in bytes. The value must be a multiple of
3956               512 bytes. It defaults to 256k.
3957
3958           sslverify
3959               Whether to verify the remote server's certificate when
3960               connecting over SSL. It can have the value 'on' or 'off'. It
3961               defaults to 'on'.
3962
3963           cookie
3964               Send this cookie (it can also be a list of cookies separated by
3965               ';') with each outgoing request.  Only supported when using
3966               protocols such as HTTP which support cookies, otherwise
3967               ignored.
3968
3969           timeout
3970               Set the timeout in seconds of the CURL connection. This timeout
3971               is the time that CURL waits for a response from the remote
3972               server to get the size of the image to be downloaded. If not
3973               set, the default timeout of 5 seconds is used.
3974
3975           Note that when passing options to qemu explicitly, driver is the
3976           value of <protocol>.
3977
3978           Example: boot from a remote Fedora 20 live ISO image
3979
3980                   qemu-system-x86_64 --drive media=cdrom,file=http://dl.fedoraproject.org/pub/fedora/linux/releases/20/Live/x86_64/Fedora-Live-Desktop-x86_64-20-1.iso,readonly
3981
3982                   qemu-system-x86_64 --drive media=cdrom,file.driver=http,file.url=http://dl.fedoraproject.org/pub/fedora/linux/releases/20/Live/x86_64/Fedora-Live-Desktop-x86_64-20-1.iso,readonly
3983
3984           Example: boot from a remote Fedora 20 cloud image using a local
3985           overlay for writes, copy-on-read, and a readahead of 64k
3986
3987                   qemu-img create -f qcow2 -o backing_file='json:{"file.driver":"http",, "file.url":"https://dl.fedoraproject.org/pub/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
3988
3989                   qemu-system-x86_64 -drive file=/tmp/Fedora-x86_64-20-20131211.1-sda.qcow2,copy-on-read=on
3990
3991           Example: boot from an image stored on a VMware vSphere server with
3992           a self-signed certificate using a local overlay for writes, a
3993           readahead of 64k and a timeout of 10 seconds.
3994
3995                   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
3996
3997                   qemu-system-x86_64 -drive file=/tmp/test.qcow2
3998

SEE ALSO

4000       The HTML documentation of QEMU for more precise information and Linux
4001       user mode emulator invocation.
4002

AUTHOR

4004       Fabrice Bellard
4005
4006
4007
4008                                  2019-11-15                         QEMU.1(1)
Impressum