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