QEMU(1) QEMU QEMU(1) (NAME) qemu - QEMU (SYNOPSIS) qemu-system-x86_64 [options] [disk_image] (DESCRIPTION) (PC) QEMU : o PCI i440FX PCI ISA PIIX3 o Cirrus CLGD 5446 PCI (dummy) Bochs VESA ( ). o PS/2 o PCI IDE CD-ROM o o PCI ISA o o IPMI BMC o Creative SoundBlaster 16 o ENSONIQ AudioPCI ES1370 o Intel 82801AA AC97 Audio o Intel HD Audio HDA o Adlib (OPL2) - Yamaha YM3812 o Gravis Ultrasound GF1 o CS4231A o (PC speaker) o USB PCI UHCI OHCI EHCI XHCI USB-1.1. SMP ( ) (vCPU) ( ). QEMU (PC BIOS) Seabios VGA BIOS LGPL Plex86/Bochs . QEMU YM3812 Tatsuyuki Satoh . QEMU GUS ( GUSEMU32 ) Tibor "TS" Schutz . GUS IRQ(7) (parallel) GUS QEMU . qemu-system-x86_64 dos.img -device gus -parallel none : qemu-system-x86_64 dos.img -device gus,irq=5 (IRQ) . CS4231A Windows Sound System GUSMAX . (PC speaker) pcspk-audiodev : qemu-system-x86_64 some.img -audiodev ,id= -machine pcspk-audiodev= : o x-south-bridge=PIIX3|piix4-isa ( (south bridge) . : PIIX3) (OPTIONS) disk_image IDE 0 . . "file=my,file" "string=a,b" . "-fw_cfg name=z,string=a,,b" "-fw_cfg name=z,string=a,b" . (Standard options) -h -version -machine [type=]name[,prop=value[,...]] . -machine help . (live migration) . 2.8.0 "pc-i440fx-2.8" "pc-q35-2.8" x86_64/i686 . QEMU 2.8.0 QEMU 2.9.0 2.9.0 "pc-i440fx-2.8" "pc-q35-2.8" . QEMU . : accel=accels1[:accels2[:...]] . kvm xen hvf nitro nvmm whpx mshv tcg . tcg . . vmport=on|off|auto IO VMWare vmmouse . auto accel i8042 . accel=xen i8042=off off on . dump-guest-core=on|off core dump . on . mem-merge=on|off (memory merge) . (de-duplicate) ( ). aes-key-wrap=on|off AES (AES key wrapping) s390-ccw . AES AES . on . dea-key-wrap=on|off DEA (DEA key wrapping) s390-ccw . DEA DEA . on . nvdimm=on|off NVDIMM . off . confidential-guest-support= (confidential guest support) . none . memory-encryption= confidential-guest-support . confidential-guest-support . hmat=on|off ACPI Heterogeneous Memory Attribute Table (HMAT) . off . spcr=on|off ACPI Serial Port Console Redirection Table (SPCR) . on . aux-ram-share=on|off RAM (anonymous file) . . memory-backend-objects -m . off . cpr-transfer aux-ram-share=on . memory-backend='id' -mem-path mem-prealloc. memory backend RAM . : -object memory-backend-file,id=pc.ram,size=512M,mem-path=/hugetlbfs,prealloc=on,share=on -machine memory-backend=pc.ram -m 512M : o backend 'default-ram-id' ( QMP query-machines ) / QEMU (<5.0) . o 4.0 / QEMU (<5.0) x-use-canonical-path-for-ramblock-id=off . : -object memory-backend-ram,id=pc.ram,size=512M,x-use-canonical-path-for-ramblock-id=off -machine memory-backend=pc.ram -m 512M cxl-fmw.0.targets.0=firsttarget,cxl-fmw.0.targets.1=secondtarget,cxl-fmw.0.size=size[,cxl-fmw.0.interleave-granularity=granularity] CXL Fixed Memory Window (CFMW) . CXL 2.0 ECN: CEDT CFMWS & QTG _DSM . (Host Physical Addresses HPA) CXL (interleaved) . Host-managed Device Memory (HDM) root port . targets.X=target CXL id -device . . X 0 . size=size CFMW . 256MiB . 256MiB . interleave-granularity=granularity (granularity) . 256 () . 256 512 1k 2k 4k 8k 16k . : -machine cxl-fmw.0.targets.0=cxl.0,cxl-fmw.0.targets.1=cxl.1,cxl-fmw.0.size=128G,cxl-fmw.0.interleave-granularity=512 sgx-epc.0.memdev=,sgx-epc.0.node= SGX EPC ..TP smp-cache.0.cache=cachename,smp-cache.0.topology=topologylevel () SMP. cache=cachename . . l1d ( L1) l1i ( L1) l2 ( L2) l3 ( L3) . topology=topologylevel . core module cluster die socket book drawer default . default . . topology=core . default . i386 PC : l1d l1i l2 core l3 die . : -machine smp-cache.0.cache=l1d,smp-cache.0.topology=core,smp-cache.1.cache=l1i,smp-cache.1.topology=core -M -machine. -cpu model (-cpu help ) -accel name[,prop=value[,...]] . kvm xen hvf nitro nvmm whpx mshv tcg . tcg . . igd-passthru=on|off Xen Intel passthrough (=off). kernel-irqchip=on|off|split irqchip KVM . . x86 split irqchip non-MSI . irqchip . kvm-shadow-mem=size shadow MMU KVM . one-insn-per-tb=on|off TCG (translation block) . -d . split-wx=on|off w^x TCG . on . off . tb-size=n ( MiB) TCG . thread=single|multi TCG . TCG (multi-threaded) vCPU . (back-end) (front-end) TCG ( icount/replay). dirty-ring-size=n KVM vCPU ( vCPU) . 1024 ( ). 4096 . 0 . (dirty-ring-size=0). KVM . eager-split-size=n KVM PAGE_SIZE dirty-logging huge-page PAGE_SIZE . KVM ARM (lazy) . huge-page (eager) TLBI break-before-make . 1GiB/2MiB/4KiB 32MiB/16KiB 512MiB/64KiB PAGE_SIZE 4KiB/16KiB/64KiB . . (eager-split-size=0). notify-vmexit=run|internal-error|disable,notify-window=n notify VM exit x86 VM exit . run . . internal-error . disable . ( notify-window) . : notify-vmexit=run,notify-window=0. device=path KVM . /dev/kvm . /dev/fdset/NN KVM . hyperv=on|off|auto WHPX Hyper-V . x86_64 Hyper-V (on) . AArch64 (off) . -smp [[cpus=]n][,maxcpus=maxcpus][,drawers=drawers][,books=books][,sockets=sockets][,dies=dies][,clusters=clusters][,modules=modules][,cores=cores][,threads=threads] SMP 'n' . 'maxcpus' . . . . . . . . . 1 . . "cpus=0" . . ( ) sockets/cores/threads . : -smp 8,sockets=2,cores=2,threads=2,maxcpus=8 ( die die ) PC sockets/dies/modules/cores/threads . : -smp 32,sockets=2,dies=2,modules=2,cores=2,threads=2,maxcpus=32 CPU ( ) ARM virt /// . : -smp 16,sockets=2,clusters=2,cores=2,threads=2,maxcpus=16 ( ) . 6.2 . 6.2 . 6.2 6.2 : -smp 2 : ACPI -smp . -numa node[,mem=size][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=initiator] -numa node[,memdev=id][,cpus=firstcpu[-lastcpu]][,nodeid=node][,initiator=initiator] -numa dist,src=source,dst=destination,val=distance -numa cpu,node-id=node[,socket-id=x][,core-id=y][,thread-id=z] -numa hmat-lb,initiator=node,target=node,hierarchy=hierarchy,data-type=type[,latency=lat][,bandwidth=bw] -numa hmat-cache,node-id=node,size=size,level=level[,associativity=str][,policy=str][,line=size] NUMA RAM VCPU . NUMA . ACPI . VCPU 'cpus' firstcpu lastcpu CPU . 'cpus' CPU ( VCPU lastcpu ). VCPU 'cpus' . 'cpus' VCPU . VCPU NUMA : -numa node,cpus=0-2,cpus=5 'cpu' 'cpus' 'socket-id|core-id|thread-id' CPU CPU . / 'smp' . 'hotpluggable-cpus' . 'node-id' CPU 'cpu' 'node' . : -M pc \ -smp 1,sockets=2,maxcpus=2 \ -numa node,nodeid=0 -numa node,nodeid=1 \ -numa cpu,node-id=0,socket-id=0 -numa cpu,node-id=1,socket-id=1 'memdev' RAM (memory backend device) . 'mem' 'memdev' 'memdev' RAM ( 'prealloc' '-memory-backend-ram' ). 'mem' 5.0 . 'mem' 'memdev' . 'memdev' 'memdev' . NUMA 'memdev' ( 'mem' ) . QEMU 5.2 '-numa node' . 'initiator' NUMA (initiator) ( ) NUMA . 'hmat' 'on' . NUMA 0 CPU 1 0 . 0 CPU 0 . -machine hmat=on \ -m 2G,slots=2,maxmem=4G \ -object memory-backend-ram,size=1G,id=m0 \ -object memory-backend-ram,size=1G,id=m1 \ -numa node,nodeid=0,memdev=m0 \ -numa node,nodeid=1,memdev=m1,initiator=0 \ -smp 2,sockets=2,maxcpus=2 \ -numa cpu,node-id=0,socket-id=0 \ -numa cpu,node-id=0,socket-id=1 source destination NUMA . distance NUMA source destination . . . . . . -numa NUMA . -m -smp RAM VCPU . 'hmat-lb' (System Locality Latency and Bandwidth Information) NUMA ACPI (HMAT) . NUMA . NUMA . 'hmat-lb' node NUMA . hierarchy NUMA : hierarchy 'memory' hierarchy 'first-level|second-level|third-level' (memory side caches) . type 'data-type' : 'hierarchy' 'memory' 'data-type' 'access|read|write' 'access|read|write' 'hierarchy' 'first-level|second-level|third-level' 'data-type' (hit latency) 'access|read|write' (hit bandwidth) 'access|read|write' . lat . bw NUM[M|G|T] NUM ( MiB/s GiB/s TiB/s). 0 ..sp 'hmat-cache' node-id NUMA . size (memory side cache) . level 0 'hmat-cache' . associativity (cache associativity) : 'none/direct(direct-mapped)/complex(complex cache indexing)'. policy (write policy) . line . NUMA . 0 (cpu) ram 1 ram . 0 (access-latency) (access-bandwidth) (200 MiB/s) 0 NUMA 0 (100 MiB/s) NUMA 1 . NUMA 0 1 1 10KiB write-back : -machine hmat=on \ -m 2G \ -object memory-backend-ram,size=1G,id=m0 \ -object memory-backend-ram,size=1G,id=m1 \ -smp 2,sockets=2,maxcpus=2 \ -numa node,nodeid=0,memdev=m0 \ -numa node,nodeid=1,memdev=m1,initiator=0 \ -numa cpu,node-id=0,socket-id=0 \ -numa cpu,node-id=0,socket-id=1 \ -numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-latency,latency=5 \ -numa hmat-lb,initiator=0,target=0,hierarchy=memory,data-type=access-bandwidth,bandwidth=200M \ -numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-latency,latency=10 \ -numa hmat-lb,initiator=0,target=1,hierarchy=memory,data-type=access-bandwidth,bandwidth=100M \ -numa hmat-cache,node-id=0,size=10K,level=1,associativity=direct,policy=write-back,line=8 \ -numa hmat-cache,node-id=1,size=10K,level=1,associativity=direct,policy=write-back,line=8 -add-fd fd=fd,set=set[,opaque=opaque] fd. : fd=fd (duplicate) fd . stdin stdout stderr . set=set fd . opaque=opaque fd . fd : qemu-system-x86_64 \ -add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \ -add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \ -drive file=/dev/fdset/2,index=0,media=disk -set group.id.arg=value arg id group. -global driver.prop=value -global driver=driver,property=property,value=value prop driver value : qemu-system-x86_64 -global ide-hd.physical_block_size=4096 disk-image.img . -device . -global driver.prop=value -global driver=driver,property=prop,value=value . driver . -boot [order=drives][,once=drives][,menu=on|off][,splash=sp_name][,splash-time=sp_time][,reboot-timeout=rb_timeout][,strict=on|off] (boot order) . . x86 PC : a, b ( ) c ( ) d ( CD-ROM) n-p ( Etherboot ) . once . order once bootindex (firmware) . / /BIOS menu=on . . splash=sp_name menu=on (splash) bios /BIOS . Seabios X86 . : splash jpeg BMP 24 BPP ( true color) . SVGA 320x240 640x480 800x640. (timeout) bios rb_timeout . rb_timeout '-1' qemu '-1' bios . Seabios X86 . (strict boot) /BIOS strict=on . bootindex . . # qemu-system-x86_64 -boot order=nc # CD-ROM qemu-system-x86_64 -boot once=d # qemu-system-x86_64 -boot menu=on,splash=/root/boot.bmp,splash-time=5000 : '-boot drives' . -m [size=]megs[,slots=n,maxmem=size] RAM megs . 128 MiB . "M" "G" . slots maxmem (hotpluggable) . maxmem (page size) . RAM 1GiB 4GiB : qemu-system-x86_64 -m 1G,slots=3,maxmem=4G slots maxmem RAM . -mem-path path RAM path. -mem-prealloc -mem-path. -k language language ( fr ). PC ( raw PC keycodes) ( Mac X11 VNC curses). PC/Linux PC/Windows . : ar de-ch es fo fr-ca hu ja mk no pt-br sv da en-gb et fr fr-ch is lt nl pl ru th de en-us fi fr-be hr it lv nl-be pt sl tr en-us . -audio [driver=]driver[,model=value][,prop=value[,...]] model -audio . model=modelname . model=help . -audio : qemu-system-x86_64 -audiodev pa,id=pa -device sb16,audiodev=pa qemu-system-x86_64 -audio pa,model=sb16 model -audio audiodev . -audio none . driver -audiodev . driver=help . -audiodev [driver=]driver,id=id[,prop=value[,...]] id . QEMU . -display . . in|out. . in.prop out.prop . : -audiodev alsa,id=example,in.frequency=44110,out.frequency=8000 -audiodev alsa,id=example,out.channels=1 # leaves in.channels unspecified : QEMU . : id=identifier . timer-period=period . 10000 ( ) . in|out.mixing-engine=on|off QEMU QEMU . (off) fixed-settings . . 5.1 7.1 . on . in|out.fixed-settings=on|off . (off) . frequency channels format . on . in|out.frequency=frequency () fixed-settings . 44100Hz . in|out.channels=channels fixed-settings . 2 () . in|out.format=format fixed-settings . : s8 s16 s32 u8 u16 u32 f32. s16 . in|out.voices=voices voice . 1 . in|out.buffer-length=usecs . -audiodev none,id=id[,prop=value[,...]] (dummy) . . -audiodev alsa,id=id[,prop=value[,...]] ALSA . Linux . ALSA : in|out.dev=device ALSA / . default . in|out.period-length=usecs (period length) . in|out.try-poll=on|off poll . off . threshold=threshold ( ) . 0 . -audiodev coreaudio,id=id[,prop=value[,...]] Core Audio Apple . Mac OS . Core Audio : in|out.buffer-count=count . -audiodev dbus,id=id[,prop=value[,...]] D-Bus . ( -display dbus,audiodev=id). ( 7.0) D-Bus : nsamples / ( ) ( 10.0) -audiodev dsound,id=id[,prop=value[,...]] DirectSound Microsoft . Windows . DirectSound : latency=usecs usecs . 10000 ( ) . -audiodev oss,id=id[,prop=value[,...]] OSS . . OSS : in|out.dev=device OSS . /dev/dsp ..TP in|out.buffer-count=count . in|out.try-poll=on|off poll . on . try-mmap=on|off (memory-mapped). off . exclusive=on|off ( vmix ). off . dsp-policy=policy ( 0 10 ). -1 buffer buffer-count . OSS 4 . 5 . -audiodev pa,id=id[,prop=value[,...]] PulseAudio . . PulseAudio : server=server PulseAudio . in|out.name=sink / (source/sink) / . in|out.latency=usecs . PulseAudio . -audiodev pipewire,id=id[,prop=value[,...]] PipeWire . . PipeWire : in|out.latency=usecs . in|out.name=sink / (source/sink) / . in|out.stream-name (stream) PipeWire . -audiodev sdl,id=id[,prop=value[,...]] SDL . . SDL : in|out.buffer-count=count . -audiodev sndio,id=id[,prop=value[,...]] SNDIO . OpenBSD . Sndio : in|out.dev=device sndio / . default . in|out.latency=usecs (period length) . -audiodev spice,id=id[,prop=value[,...]] SPICE . -spice . . -audiodev wav,id=id[,prop=value[,...]] WAV . : path=path . qemu.wav . -device driver[,prop=value[,...]] . prop=value . . -device help -device driver,help . : -device ipmi-bmc-sim,id=id[,prop=value[,...]] IPMI BMC. . watchdog (reset) / (power control) . IPMI . (slave address) IPMI BMC. 0x20 . BMC I2C . . id=id BMC . slave_addr=val (slave) BMC. 0x20 . sdrfile=file Sensor Data Records (SDR). none . fruareasize=val Field Replaceable Unit (FRU). 1024 . frudatafile=file (FRU). none . guid=uuid GUID BMC UUID. "Get GUID" BMC . "Get GUID" . lan.channel=val LAN . 0 0x1 0xb ( ) . 0 LAN LAN . 0 . lan.ipaddr=addr ipv4 (LAN) BMC. lan.ipsrc=val ipv4 (LAN) BMC. 0 ( ) 1 ( ) 2 (DHCP) 3 ( ) 4 ( ) . 0 . lan.macaddr=mac mac (LAN) BMC. lan.netmask=mask (subnet mask) ipv4 LAN BMC. lan.defgw_ipaddr=addr ipv4 (default gateway) LAN BMC. lan.defgw_macaddr=mac mac LAN BMC. -device ipmi-bmc-extern,id=id,chardev=id[,slave_addr=val] IPMI BMC. BMC IPMI . BMC . chardev "reconnect-ms=" . (NMI) (VM) . QEMU localhost QEMU ..sp "lanserv/README.vm" OpenIPMI . -device isa-ipmi-kcs,bmc=id[,ioport=val][,irq=val] KCS IPMI ISA . ACPI SMBIOS . bmc=id BMC ipmi-bmc-sim ipmi-bmc-extern . ioport=val I/O . KCS 0xca0 . irq=val . 5 . 0 . -device isa-ipmi-bt,bmc=id[,ioport=val][,irq=val] KCS BT . 0xe4 5 . -device pci-ipmi-kcs,bmc=id KCS IPMI PCI . bmc=id BMC ipmi-bmc-sim ipmi-bmc-extern . -device pci-ipmi-bt,bmc=id KCS BT PCI . -device intel-iommu[,option=...] -machine q35 Intel VT-d . : intremap=on|off (: auto) (interrupt remapping) . x2apic . kvm kernel-irqchip off split kernel-irqchip . "auto" kernel-irqchip . caching-mode=on|off (: off) VT-d . caching-mode DMA IOTLB IOMMU vIOMMU . -device vfio-pci VT-d DMA DMA . device-iotlb=on|off (: off) device-iotlb VT-d . virtio/vhost ats=on . aw-bits=39|48 (: 39) IOVA . IOMMU IOMMU . VT-d QEMU : . -device virtio-iommu-pci[,option=...] -machine q35 (x86_64) -machine virt (ARM) . : granule=val ( 4k 8k 16k 64k host : host) virtio-iommu . host . aw-bits=val ( 32 64 ) IOVA . -device arm-smmuv3,primary-bus=id[,option=...] -machine virt (ARM) . primary-bus=id (pcie.0) pxb-pcie . accel=on|off (: off) SMMUv3 . accel SMMUv3 (nested mode) (passthrough) vfio-pci . auto . accel=on auto IOMMU_GET_HW_INFO SMMUv3 . accel=on vfio-pci (cold-plugged) QEMU (abort). accel=off auto . ril=on|off|auto (: auto) (Range Invalidation) SMMUv3 TLB IOVA . SMMUv3 . o accel=off auto 'on' . ats=on|off|auto (: auto) (Address Translation Services) PCIe TLB (cache) . SMMUv3 vIOMMU ATS . o accel=off auto 'off' . oas=val|auto ( 44 48 . : auto) (Output Address Size) . OAS SMMUv3 (IPA) SMMU (stage-2) IPA . o accel=off auto 44 . ssidsize=val|auto ( 0 20. : auto) Substream . PASID vIOMMU (SVA) . o accel=off auto 0 . cmdqv=on|off|auto (: auto) (CMDQV) SMMUv3 . NVIDIA Tegra241 CMDQV . o accel=on auto SMMU . o accel=off auto 'off' . -device amd-iommu[,option=...] / (IOMMU) AMD-Vi . -machine q35 : dma-remap=on|off (: off) DMA (passthrough) / AMD v1 . -device vfio-pci,... DMA vIOMMU . intremap=on|off (: auto) IOMMU x86 amd-iommu . x2apic . kernel-irqchip=off|split kernel-irqchip=on . xtsup=on|off (: off) x2apic IRTE . vCPU APIC 0xff . -name name . SDL . VNC . . . -uuid uuid UUID . (Block device options) QEMU . QEMU . -device -blockdev backend . backend QEMU . . -drive backend . blockdev . -hda -drive . QEMU (legacy PC) . -fda file -fdb file file 0/1 ( Disk Images <#disk-images> System Emulation Users Guide ). -hda file -hdb file -hdc file -hdd file file 0 1 2 3 ( x86 IDE SCSI virtio ). Disk Images <#disk-images> System Emulation Users Guide . -cdrom file file CD-ROM ( x86 IDE1 master -hdc -cdrom ). /dev/cdrom CD-ROM . -blockdev option[,option[,option[,...]]] . . . ( file) . (file=node-name) (file.filename=path,file.aio=native). -blockdev drive -device . Valid options for any block driver node: driver . node-name . ( -drive) . . QEMU . . read-only . . . read-only=off . auto-read-only auto-read-only=on QEMU read-only=off . force-share QEMU . ( QEMU ) . force-share=on read-only=on . cache.direct cache.direct=on (page cache) . / . QEMU . cache.no-flush cache.no-flush=on . QEMU . . discard=discard discard "ignore" ( "off") "unmap" ( "on") discard ( trim unmap ) . discard . detect-zeroes=detect-zeroes detect-zeroes "off" "on" "unmap" . discard "unmap" "unmap" unmap . Driver-specific options for file . filename aio backend AIO ( threads/native/io_uring : threads) locking Linux OFD / POSIX . Linux Open File Descriptor . ( auto/on/off : auto) : -blockdev driver=file,node-name=disk,filename=disk.img raw (raw) . file . file ( file) : -blockdev driver=file,node-name=disk_file,filename=disk.img -blockdev driver=raw,node-name=disk,file=disk_file : -blockdev driver=raw,node-name=disk,file.driver=file,file.filename=disk.img qcow2 qcow2 . file . file ( file) backing (backing file) ( ). null . lazy-refcounts (lazy refcounts) ( on/off ) cache-size L2 refcount (: l2-cache-size refcount-cache-size) l2-cache-size L2 (: cache-size - 32M 8M cache-size refcount) refcount-cache-size refcount (: cache-size L2 ) cache-clean-interval L2 refcount. . . . pass-discard-request discard qcow2 (on/off : discard=unmap on off) pass-discard-snapshot qcow2 ( snapshot) discard (on/off : on) pass-discard-other discard (on/off : off) discard-no-unref ( (discard) ) . ( ) pass-discard-request . (fragmentation) qcow2 . (guest) . ( qcow2 ) . overlap-check (none/constant/cached/all : cached). QAPI blockdev-add . : -blockdev driver=file,node-name=my_file,filename=/tmp/disk.qcow2 -blockdev driver=qcow2,node-name=hda,file=my_file,overlap-check=none,cache-size=16777216 : -blockdev driver=qcow2,node-name=disk,file.driver=http,file.filename=http://example.com/image.qcow2 QAPI QMP blockdev-add . -drive option[,option[,option[,...]]] . ( backend) (guest device) -blockdev -device . -drive -blockdev . : file=file ( Disk Images <#disk- images> System Emulation Users Guide ) . ( "file=my,,file" "my,file"). iSCSI URL . "Device URL Syntax" . if=interface . : ide scsi sd mtd floppy pflash virtio none. bus=bus,unit=unit (bus) (unit id) . index=index (index) . media=media : disk cdrom. snapshot=snapshot snapshot "on" "off" snapshot (-snapshot )..TP cache=cache cache "none" "writeback" "unsafe" "directsync" "writethrough" . cache.direct cache.no-flush ( -blockdev ) cache.writeback write-cache ( -device ) . : +-------------+-----------------+--------------+----------------+ | | cache.writeback | cache.direct | cache.no-flush | +-------------+-----------------+--------------+----------------+ |writeback | on | off | off | +-------------+-----------------+--------------+----------------+ |none | on | on | off | +-------------+-----------------+--------------+----------------+ |writethrough | off | off | off | +-------------+-----------------+--------------+----------------+ |directsync | off | on | off | +-------------+-----------------+--------------+----------------+ |unsafe | on | off | on | +-------------+-----------------+--------------+----------------+ cache=writeback . aio=aio aio "threads" "native" "io_uring" / (I/O) pthread Linux AIO Linux io_uring . format=format . format=raw . werror=action,rerror=action . : "ignore" ( ) "stop" ( QEMU) "report" ( ) "enospc" ( QEMU ). werror=enospc rerror=report . copy-on-read=copy-on-read copy-on-read "on" "off" (backing file) . bps=b,bps_rd=r,bps_wr=w . (timeout) . 2 MiB/s . bps_max=bm,bps_rd_max=rm,bps_wr_max=wm (bursts) . / . iops=i,iops_rd=r,iops_wr=w . iops_max=bm,iops_rd_max=rm,iops_wr_max=wm . / . iops_size=is is iops . iops . group=g g. . . cache.writeback=on . page cache . (flush) . . cache.writeback=off . page cache QEMU (flush) . . -snapshot (unsafe) . Copy-on-read . copy-on-read (off) . -cdrom : qemu-system-x86_64 -drive file=file,index=2,media=cdrom -hda -hdb -hdc -hdd : qemu-system-x86_64 -drive file=file,index=0,media=disk qemu-system-x86_64 -drive file=file,index=1,media=disk qemu-system-x86_64 -drive file=file,index=2,media=disk qemu-system-x86_64 -drive file=file,index=3,media=disk (fd) fd set : qemu-system-x86_64 \ -add-fd fd=3,set=2,opaque="rdwr:/path/to/file" \ -add-fd fd=4,set=2,opaque="rdonly:/path/to/file" \ -drive file=/dev/fdset/2,index=0,media=disk CDROM (slave) ide0 : qemu-system-x86_64 -drive file=file,if=ide,index=1,media=cdrom "file=" : qemu-system-x86_64 -drive if=ide,index=1,media=cdrom -fda -fdb : qemu-system-x86_64 -drive file=file,index=0,if=floppy qemu-system-x86_64 -drive file=file,index=1,if=floppy "ide" (index) : qemu-system-x86_64 -drive file=a -drive file=b : qemu-system-x86_64 -hda a -hdb b -mtdblock file file (on-board). -sd file file SecureDigital. -snapshot . . C-a s ( Disk Images <#disk-images> ). : snapshot -blockdev ( qemu-img snapshot blockdev ). -blockdev -drive 'snapshot' drive . -fsdev local,id=id,path=path,security_model=security_model [,writeout=writeout][,readonly=on][,fmode=fmode][,dmode=dmode][,max_xattr=max] [,throttling.option=value[,throttling.option=value[,...]]] -fsdev synth,id=id[,readonly=on][,max_xattr=max] . : local QEMU . synth (synthetic) QTests . id=id . path=path (export) . 9p . security_model=security_model . "passthrough" "mapped-xattr" "mapped-file" "none". "passthrough" (credentials) . QEMU (root) . "mapped-xattr" uid gid (mode bits) (xattr) . "mapped-file" .virtfs_metadata . . "none" passthrough . fsdriver local . writeout=writeout . "immediate" . (page cache) . readonly=on 9p (mount) . (read-write) . fmode=fmode (mode) . "mapped-xattr" "mapped-file" . dmode=dmode (mode) . "mapped-xattr" "mapped-file" . throttling.bps-total=b,throttling.bps-read=r,throttling.bps-write=w (throttling) . throttling.bps-total-max=bm,bps-read-max=rm,bps-write-max=wm (bursts) . I/O . throttling.iops-total=i,throttling.iops-read=r, throttling.iops-write=w . throttling.iops-total-max=im,throttling.iops-read-max=irm, throttling.iops-write-max=iwm (bursts) . I/O . throttling.iops-size=is is iops . max_xattr=max FID xattr . 1024 . 0 FID xattr . FID xattr (memory exhaustion) . -fsdev (driver) "virtio-9p-..." . -device virtio-9p-type,fsdev=id,mount_tag=mount_tag virtio-9p-... : type . "pci" "ccw" "device" . fsdev=id id -fsdev . mount_tag=mount_tag (mount) . -virtfs local,path=path,mount_tag=mount_tag ,security_model=security_model[,writeout=writeout][,readonly=on] [,fmode=fmode][,dmode=dmode][,multidevs=multidevs][,max_xattr=max].TP -virtfs synth,mount_tag=mount_tag[,max_xattr=max] virtio-9p-device ( 9pfs) 9P (pass-through) . -virtfs -fsdev -device virtio-9p-pci . : local QEMU . synth (synthetic) QTests . id=id . path=path (export) . 9p . security_model=security_model . "passthrough" "mapped-xattr" "mapped-file" "none". "passthrough" (credentials) . QEMU (root) . "mapped-xattr" uid gid (mode bits) . "mapped-file" .virtfs_metadata . . "none" passthrough . fsdriver (local) . writeout=writeout . "immediate" . (page cache) . readonly=on 9p (readonly mount) . . fmode=fmode (mode) . "mapped-xattr" "mapped-file" . dmode=dmode (mode) . "mapped-xattr" "mapped-file" . mount_tag=mount_tag (tag) (mount) . max_xattr=max FID xattr . 1024 . 0 FID xattr . FID xattr (memory exhaustion) . multidevs=remap|forbid|warn 9p (file ID collisions) . "remap" () "forbid" "warn". remap : 9p . inode . inode . virtfs . inode . warn : virtfs 9p . 9p () qemu . . . forbid : "warn" 9p . "forbid" ( ()readdir ). -iscsi iSCSI. -usb USB USB (on-board) ( ). USB USB 3.0 . PCI -device qemu-xhci . -usbdevice devname USB devname USB ( -machine usb=on ). . USB ( ) USB -device . -usbdevice mouse -device qemu-xhci -device usb-mouse USB USB 3.0 ( PCI USB ). USB <#connecting-usb-devices> (System Emulation Users Guide) . devname : braille (Braille). BrlAPI ( USB usb-braille chardev braille ). keyboard USB. PS/2 ( ) . mouse . PS/2 . tablet ( ). QEMU (grab) . PS/2 . wacom-tablet USB (Wacom PenPartner). -display type . (backend) . -display help . type : spice-app[,gl=on|off] QEMU Spice Spice. Spice QEMU (redirect) . ( 4.0) dbus D-Bus. ( 7.0) dbus dbus . "org.qemu" ( ). addr= : D-Bus . p2p=yes|no : (peer-to-peer) add_client QMP. gl=on|off|core|es : OpenGL ( D-Bus DMABUF ). sdl SDL ( SDL ). : grab-mod= : (modifier) "g" . lshift-lctrl-lalt rctrl . gl=on|off|core|es : OpenGL show-cursor=on|off : window-close=on|off : qemu gtk GTK. . : clipboard=on|off ( ) "off" full-screen=on|off : gl=on|off : OpenGL grab-on-hover=on|off : show-tabs=on|off ( ) ( VGA ) . show-cursor=on|off : window-close=on|off : qemu show-menubar=on|off : "on" zoom-to-fit=on|off ( ) "off" curses[,charset=] curses. QEMU curses/ncurses . . VGA . (charset) charset charset=CP850 IBM CP850. CP437 . cocoa Cocoa. Mac. . : full-grab=on|off ( .) (accessibility) . (: off) . swap-opt-cmd=on|off ( Option Command ) Mac Meta/Super Alt . (: off) show-cursor=on|off : left-command-key=on|off : (Command) full-screen=on|off : zoom-to-fit=on|off ( ) "off" egl-headless[,rendernode=] OpenGL DRI . VNC SPICE . vnc= VNC none . QEMU . -nographic -nographic . -nographic QEMU QEMU . QEMU . (mux) ( ). QEMU . C-a h . -spice option[,option[,...]] spice . : port= TCP spice (plaintext) . addr= IP spice . . ipv4=on|off; ipv6=on|off; unix=on|off IP. password-secret= secret . sasl=on|off spice SASL . SASL 'qemu' . /etc/sasl2/qemu.conf . QEMU SASL_CONF_PATH . SASL ( GSSAPI) SASL 'tls' 'x509' SSL . . disable-ticketing=on|off . disable-copy-paste=on|off (copy paste) . disable-agent-file-xfer=on|off spice-vdagent . tls-port= TCP spice . x509-dir= x509. -vnc $display,x509=$dir . x509-key-file=; x509-key-password=; x509-cert-file=; x509-cacert-file=; x509-dh-key-file= x509 . tls-ciphers= (ciphers) . tls-channel=main|display|cursor|inputs|record|playback; plaintext-channel=main|display|cursor|inputs|record|playback TLS. . "default" . spice tls plaintext . image-compression=auto_glz|auto_lz|quic|glz|lz|off ( ). auto_glz . jpeg-wan-compression=auto|never|always; zlib-glz-wan-compression=auto|never|always wan ( ). auto . streaming-video=off|all|filter . off . agent-mouse=on|off / vdagent. on . playback-compression=on|off / ( celt 0.5.1). on . seamless-migration=on|off / (seamless migration) spice. off . video-codec= Spice Gstreamer . gl=on . gstreamer:h264 . gl=off Spice . max-refresh-rate=rate ( FPS) Spice . 30 . gl=on|off / OpenGL. off . rendernode= DRM OpenGL. . ( 2.9) -vga type VGA . type : cirrus Cirrus Logic GD5446. Windows Windows 95 . . ( QEMU 2.2 ) std VGA Bochs VBE. VESA 2.0 VBE ( Windows XP) (>= 1280x1024x16) . ( QEMU 2.2 ) vmware VMWare SVGA-II. XFree86/XOrg Windows . qxl (paravirtual) QXL. VGA ( VESA 2.0 VBE). qxl . spice. tcx ( sun4m) Sun TCX. sun4m 1024x768 . cg3 ( sun4m) Sun cgthree. sun4m 1024x768 ( OpenBIOS) 1152x900 ( OBP) Solaris . virtio Virtio VGA. none VGA. -full-screen . -g widthxheight[xdepth] ( PPC SPARC). PPC 800x600x32 . SPARC TCX 1024x768x8 1024x768x24 . cgthree 1024x768x8 1152x900x8 OBP . -vnc display[,option[,option[,...]]] QEMU QEMU . QEMU VNC VGA VNC . usb ( -device usb-tablet). VNC en-us -k . display : to=L "-vnc display" 5900+display QEMU VNC L . to=0 . host:d TCP host d . TCP 5900+d . host . unix:path (UNIX domain sockets) path . none VNC . change VNC . . : reverse=on|off VNC <<>> ("reverse"). display . (host:d,``reverse``) d TCP . websocket=on|off TCP VNC . websocket 5700+display . websocket=port . host . websocket=host:port . websocket=unix:path path . TLS . TLS . password=on|off . set_password QEMU <#qemu-monitor> . : set_password "vnc" "spice" . expire_password : now never +seconds 60+ 1335196800 "Mon Apr 23 12:00:00 EDT 2012" ( ). "now" "never" . password-secret= secret secret-id . tls-creds=ID (ID) TLS VNC . VNC ( ) . TLS VNC VeNCrypt . -object tls-creds . tls-authz=ID QAuthZ (distinguished name) x509 . VNC . . sasl=on|off SASL VNC. SASL / 'qemu' . /etc/sasl2/qemu.conf . QEMU SASL_CONF_PATH . SASL ( GSSAPI) SASL 'tls' 'x509' SSL . . SASL VNC <#vnc-security> . sasl-authz=ID QAuthZ SASL . VNC . . acl=on|off x509 SASL. authz-list vnc.username vnc.x509dname . HMP ACL . . sasl-authz tls-authz . lossy=on|off ( gradient JPEG ). VNC . . non-adaptive=on|off . . ( JPEG) . . Tight . share=allow-exclusive|force-shared|ignore . 'allow-exclusive' . rfb . ( -shared vncviewer). . 'force-shared' . -shared . 'ignore' shared . rfb QEMU . key-delay-ms (key down) (key up) . 10 . . . audiodev=audiodev audiodev VNC . -audiodev audiodev . power-control=on|off shutdown reboot reset . -win2k-hack Windows 2000 . Windows 2000 ( IDE ). -global ide-device.win2k-install-hack=on . -no-fd-bootchk (boot signature) BIOS . . -m fd-bootchk=off . -acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n] [,asl_compiler_id=str][,asl_compiler_rev=n][,data=file1[:file2]...] ACPI . file= ACPI ACPI ( ). data= . SLIC QEMU oem_id oem_table_id SLIC RSDT FADT ( FACP ) Microsoft SLIC ACPI . -smbios file=binary SMBIOS . -smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d][,uefi=on|off] SMBIOS type 0 -smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str][,uuid=uuid][,sku=str][,family=str] SMBIOS type 1 -smbios type=2[,manufacturer=str][,product=str][,version=str][,serial=str][,asset=str][,location=str] SMBIOS type 2 -smbios type=3[,manufacturer=str][,version=str][,serial=str][,asset=str][,sku=str] SMBIOS type 3 -smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str][,asset=str][,part=str][,processor-family=%d][,processor-id=%d] SMBIOS type 4 -smbios type=9[,slot_designation=str][,slot_type=%d][,slot_data_bus_width=%d][,current_usage=%d][,slot_length=%d][,slot_id=%d][,slot_characteristics1=%d][,slot_characteristics12=%d][,pci_device=str] SMBIOS type 9 -smbios type=11[,value=str][,path=filename] SMBIOS type 11 . OEM . . value=str path=filename . NUL . value path SMBIOS . x86 SMBIOS . OEM . . : -smbios type=11,value=cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000/,\ value=anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os,\ path=/some/file/with/oemstringsdata.txt dmidecode : $ dmidecode -t 11 Handle 0x0E00, DMI type 11, 5 bytes OEM Strings String 1: cloud-init:ds=nocloud-net;s=http://10.10.0.1:8000 String 2: anaconda:method=http://dl.fedoraproject.org/pub/fedora/linux/releases/25/x86_64/os String 3: myapp:some extra data -smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str][,asset=str][,part=str][,speed=%d] SMBIOS type 17 -smbios type=41[,designation=str][,kind=str][,instance=%d][,pcidev=str] SMBIOS type 41 . enoX ( X ) PCI . : -netdev user,id=internet \ -device virtio-net-pci,mac=50:54:00:00:00:42,netdev=internet,id=internet-dev \ -smbios type=41,designation='Onboard LAN',instance=1,kind=ethernet,pcidev=internet-dev eno1 : ..parsed-literal: $ ip -brief l lo UNKNOWN 00:00:00:00:00:00 eno1 UP 50:54:00:00:00:42 PCI (root bus) . -nic [tap|passt|bridge|user|l2tpv3|vde|netmap|af-xdp|vhost-user|socket][,...][,mac=macaddr][,model=mn] (NIC) () Backend . Backend -netdev . NIC model=modelname . model=help . MAC mac=macaddr . -nic : qemu-system-x86_64 -netdev user,id=n1,ipv6=off -device e1000,netdev=n1,mac=52:54:98:76:54:32 qemu-system-x86_64 -nic user,ipv6=off,model=e1000,mac=52:54:98:76:54:32 -nic none . (NIC Backend "user") . -netdev passt,id=str[,option][,...] Backend passt ( ) . : id=id monitor. path=file passt . passt PATH . quiet=on|off quiet=on passt . quiet=on --quiet passt . vhost-user=on|off vhost-user=off QEMU Backend stream passt . vhost-user=on passt --vhost-user QEMU Backend vhost-user passt . @mtu MTU DHCP/NDP address IPv4 IPv6 netmask IPv4 mac MAC gateway IPv4 IPv6 (gateway) interface (interface) (routes) outbound (bind) outbound-if4 IPv4 outbound-if6 IPv6 dns IPv4 IPv6 DNS search fqdn (FQDN) dhcp-dns / DNS DHCP/DHCPv6/NDP dhcp-search / DHCP/DHCPv6/NDP map-host-loopback map-guest-addr dns-forward DNS dns-host (nameserver) tcp / TCP udp / UDP icmp / ICMP dhcp / DHCP ndp / NDP dhcpv6 / DHCPv6 ra / (route advertisements) freebind (forwarding) ipv4 / IPv4 ipv6 / IPv6 tcp-ports TCP udp-ports UDP param=string string passt param passt . --trace --log=trace.log: qemu-system-x86_64 -nic passt,param=--trace,param=--log=trace.log -netdev user,id=id[,option][,option][,...] Backend (user mode) ( ) . : id=id monitor. ipv4=on|off and ipv6=on|off IPv4 IPv6 . . net=addr[/mask] IP . netmask a.b.c.d . 10.0.2.0/24 . host=addr . IP x.x.x.2. ipv6-net=addr[/int] IPv6 ( fec0::/64 ). IPv6 . ( )..TP ipv6-host=addr IPv6 . IPv6 xxxx::2. restrict=on|off IP . (forwarding) . hostname=name (hostname) DHCP . dhcpstart=addr IP DHCP . IP x.x.x.15 x.x.x.31. dns=addr (virtual nameserver) . . IP x.x.x.3. ipv6-dns=addr IPv6 . . IP xxxx::3. dnssearch=domain DHCP . . (resolve) () . : qemu-system-x86_64 -nic user,dnssearch=mgmt.example.org,dnssearch=example.org domainname=domain DHCP . tftp=dir TFTP . dir TFTP . TFTP ( bin TFTP ). TFTP . QEMU . tftp-server-name=name BOOTP name "TFTP server name" ( RFC2132) (broadcast) . . bootfile=file file BOOTP . tftp . ( pxelinux): qemu-system-x86_64 -hda linux.img -boot n -device e1000,netdev=n1 \ -netdev user,id=n1,tftp=/path/to/tftp/files,bootfile=/pxelinux.0 smb=dir[,smbserver=addr] SMB Windows dir . IP SMB addr . IP x.x.x.4. Windows : 10.0.2.4 smbserver #PRE #NOFNR LMHOSTS . #PRE (pre-caching) Windows . #NOFNR Windows NT 3.1 NBNS QEMU . LMHOSTS Windows : o C:\WINDOWS\LMHOSTS Windows 3x/9x/Me o C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS Windows NT/2000 o C:\WINDOWS\SYSTEM32\DRIVERS\ETC\LMHOSTS Windows XP dir \\smbserver\qemu . SAMBA . hostfwd=[tcp|udp|unix]:[[hostaddr]:hostport|hostpath]-[guestaddr]:guestport TCP UDP UNIX hostport IP guestaddr guestport (redirect) . guestaddr x.x.x.15 ( DHCP ). hostaddr (bind) . TCP . . X11 : # on the host qemu-system-x86_64 -nic user,hostfwd=tcp:127.0.0.1:6001-:6000 # this host xterm should open in the guest X11 server xterm -display :1 telnet telnet : # on the host qemu-system-x86_64 -nic user,hostfwd=tcp::5555-:23 telnet localhost 5555 telnet localhost 5555 telnet . unix /tmp/vm tcp : # on the host qemu-system-x86_64 -nic user,hostfwd=unix:/tmp/vm-:23 guestfwd=[tcp]:server:port-dev; guestfwd=[tcp]:server:port-cmd:command TCP IP server port dev cmd:command (spawn) (forward) . . chardev QEMU : # 10.10.1.1:4321 10.0.2.100:1234 # qemu-system-x86_64 -nic user,guestfwd=tcp:10.0.2.100:1234- TCP QEMU inetd : # "netcat 10.10.1.1 4321" TCP 10.0.2.100:1234 # TCP stdin/stdout qemu-system-x86_64 -nic 'user,id=n1,guestfwd=tcp:10.0.2.100:1234-cmd:netcat 10.10.1.1 4321' -netdev tap,id=id[,fd=h][,ifname=name][,script=file][,downscript=dfile][,br=bridge][,helper=helper] TAP id. file dfile . name . /etc/qemu-ifup /etc/qemu-ifdown . script=no downscript=no . QEMU (helper) TAP bridge . /path/to/qemu-bridge-helper bridge br0 . fd=h (handle) TAP . : # QEMU qemu-system-x86_64 linux.img -nic tap # QEMU NIC # TAP qemu-system-x86_64 linux.img \ -netdev tap,id=nd0,ifname=tap0 -device e1000,netdev=nd0 \ -netdev tap,id=nd1,ifname=tap1 -device rtl8139,netdev=nd1 # QEMU # TAP bridge br0 qemu-system-x86_64 linux.img -device virtio-net-pci,netdev=n1 \ -netdev tap,id=n1,"helper=/path/to/qemu-bridge-helper" -netdev bridge,id=id[,br=bridge][,helper=helper] TAP bridge . helper TAP bridge . /path/to/qemu-bridge-helper bridge br0 . : # QEMU # TAP bridge br0 qemu-system-x86_64 linux.img -netdev bridge,id=n1 -device virtio-net,netdev=n1 # QEMU # TAP bridge qemubr0 qemu-system-x86_64 linux.img -netdev bridge,br=qemubr0,id=n1 -device virtio-net,netdev=n1 -netdev socket,id=id[,fd=h][,listen=[host]:port][,connect=host:port] QEMU TCP . listen QEMU port (host ). connect QEMU listen . fd=h TCP . : # QEMU qemu-system-x86_64 linux.img \ -device e1000,netdev=n1,mac=52:54:00:12:34:56 \ -netdev socket,id=n1,listen=:1234 # qemu-system-x86_64 linux.img \ -device e1000,netdev=n2,mac=52:54:00:12:34:57 \ -netdev socket,id=n2,connect=127.0.0.1:1234 -netdev socket,id=id[,fd=h][,mcast=maddr:port[,localaddr=addr]] QEMU (multicast) UDP (bus) QEMU maddr port . : 1. QEMU ( ). 2. mcast User Mode Linux ( ethN=mcast) . 3. fd=h UDP . : # QEMU qemu-system-x86_64 linux.img \ -device e1000,netdev=n1,mac=52:54:00:12:34:56 \ -netdev socket,id=n1,mcast=230.0.0.1:1234 # QEMU "bus" qemu-system-x86_64 linux.img \ -device e1000,netdev=n2,mac=52:54:00:12:34:57 \ -netdev socket,id=n2,mcast=230.0.0.1:1234 # QEMU "bus" qemu-system-x86_64 linux.img \ -device e1000,netdev=n3,mac=52:54:00:12:34:58 \ -netdev socket,id=n3,mcast=230.0.0.1:1234 ( User Mode Linux): # QEMU ( mcast UML ) qemu-system-x86_64 linux.img \ -device e1000,netdev=n1,mac=52:54:00:12:34:56 \ -netdev socket,id=n1,mcast=239.192.168.1:1102 # UML /path/to/linux ubd0=/path/to/root_fs eth0=mcast ( 1.2.3.4 ): qemu-system-x86_64 linux.img \ -device e1000,netdev=n1,mac=52:54:00:12:34:56 \ -netdev socket,id=n1,mcast=239.192.168.1:1102,localaddr=1.2.3.4 -netdev stream,id=str[,server=on|off],addr.type=inet,addr.host=host,addr.port=port[,to=maxport][,numeric=on|off][,keep-alive=on|off][,mptcp=on|off][,addr.ipv4=on|off][,addr.ipv6=on|off][,reconnect-ms=milliseconds] backend QEMU TCP/IP. server=on|off on addr.host=host,addr.port=port (server=on) (server=off) to=maxport port maxport . numeric=on|off on host port (: off) keep-alive=on|off keep-alive . (passive) . mptcp=on|off multipath TCP ipv4=on|off IPv4 IPv4 IPv6 ipv6=on|off IPv6 IPv4 IPv6 reconnect-ms=milliseconds . . (: 0) ( TCP/IP): # first VM qemu-system-x86_64 linux.img \ -device virtio-net,netdev=net0,mac=52:54:00:12:34:56 \ -netdev stream,id=net0,server=on,addr.type=inet,addr.host=localhost,addr.port=1234 # second VM qemu-system-x86_64 linux.img \ -device virtio-net,netdev=net0,mac=52:54:00:12:34:57 \ -netdev stream,id=net0,server=off,addr.type=inet,addr.host=localhost,addr.port=1234,reconnect-ms=5000 -netdev stream,id=str[,server=on|off],addr.type=unix,addr.path=path[,abstract=on|off][,tight=on|off][,reconnect-ms=milliseconds] backend QEMU unix domain. server=on|off on addr.path=path abstract=on|off on (abstract) . tight=on|off (false) (null bytes) sun_path struct sockaddr_un . reconnect-ms=milliseconds . . (: 0) ( passt -netdev user): # start passt server as a non privileged user passt UNIX domain socket bound at /tmp/passt_1.socket # start QEMU to connect to passt qemu-system-x86_64 linux.img \ -device virtio-net,netdev=net0 \ -netdev stream,id=net0,server=off,addr.type=unix,addr.path=/tmp/passt_1.socket ( unix domain): # first VM qemu-system-x86_64 linux.img \ -device virtio-net,netdev=net0,mac=52:54:00:12:34:56 \ netdev stream,id=net0,server=on,addr.type=unix,addr.path=/tmp/qemu0 # second VM qemu-system-x86_64 linux.img \ -device virtio-net,netdev=net0,mac=52:54:00:12:34:57 \ -netdev stream,id=net0,server=off,addr.type=unix,addr.path=/tmp/qemu0,reconnect-ms=5000 -netdev stream,id=str[,server=on|off],addr.type=fd,addr.str=file-descriptor[,reconnect-ms=milliseconds] backend QEMU . server=on|off on addr.str=file-descriptor reconnect-ms=milliseconds . . (: 0) -netdev dgram,id=str,remote.type=inet,remote.host=maddr,remote.port=port[,local.type=inet,local.host=addr] backend (multicast). remote.host=maddr,remote.port=port (multicast) local.host=addr : # launch one QEMU instance qemu-system-x86_64 linux.img \ -device virtio-net,netdev=net0,mac=52:54:00:12:34:56 \ -netdev dgram,id=net0,remote.type=inet,remote.host=224.0.0.1,remote.port=1234 # launch another QEMU instance on same "bus" qemu-system-x86_64 linux.img \ -device virtio-net,netdev=net0,mac=52:54:00:12:34:57 \ -netdev dgram,id=net0,remote.type=inet,remote.host=224.0.0.1,remote.port=1234 # launch yet another QEMU instance on same "bus" qemu-system-x86_64 linux.img \ -device virtio-net,netdev=net0,mac=52:54:00:12:34:58 \ -netdev dgram,id=net0,remote.type=inet,remote.host=224.0.0.1,remote.port=1234 -netdev dgram,id=str,remote.type=inet,remote.host=maddr,remote.port=port[,local.type=fd,local.str=file-descriptor] backend (multicast) UDP. remote.host=maddr,remote.port=port (multicast) local.str=file-descriptor -netdev dgram,id=str,local.type=inet,local.host=addr,local.port=port[,remote.type=inet,remote.host=addr,remote.port=port] backend QEMU (datagram oriented) unix domain. local.host=addr,local.port=port IP .TP remote.host=addr,remote.port=port IP ( UDP/IP): # first VM qemu-system-x86_64 linux.img \ -device virtio-net,netdev=net0,mac=52:54:00:12:34:56 \ -netdev dgram,id=net0,local.type=inet,local.host=localhost,local.port=1234,remote.type=inet,remote.host=localhost,remote.port=1235 # second VM qemu-system-x86_64 linux.img \ -device virtio-net,netdev=net0,mac=52:54:00:12:34:56 \ -netdev dgram,id=net0,local.type=inet,local.host=localhost,local.port=1235,remote.type=inet,remote.host=localhost,remote.port=1234 -netdev dgram,id=str,local.type=unix,local.path=path[,remote.type=unix,remote.path=path] QEMU unix . local.path=path (bind) remote.path=path ( sendto(2)) ( UDP/UNIX): # first VM qemu-system-x86_64 linux.img \ -device virtio-net,netdev=net0,mac=52:54:00:12:34:56 \ -netdev dgram,id=net0,local.type=unix,local.path=/tmp/qemu0,remote.type=unix,remote.path=/tmp/qemu1 # second VM qemu-system-x86_64 linux.img \ -device virtio-net,netdev=net0,mac=52:54:00:12:34:57 \ -netdev dgram,id=net0,local.type=unix,local.path=/tmp/qemu1,remote.type=unix,remote.path=/tmp/qemu0 -netdev dgram,id=str,local.type=fd,local.str=file-descriptor QEMU . local.str=file-descriptor -netdev l2tpv3,id=id,src=srcaddr,dst=dstaddr[,srcport=srcport][,dstport=dstport],txsession=txsession[,rxsession=rxsession][,ipv6=on|off][,udp=on|off][,cookie64=on|off][,counter=on|off][,pincounter=on|off][,txcookie=txcookie][,rxcookie=rxcookie][,offset=offset] (pseudowire) L2TPv3. L2TPv3 (RFC3931) Ethernet ( ) . ( . ) . . src=srcaddr () dst=dstaddr () udp=on udp ( ip ). srcport=srcport udp . dstport=dstport udp . ipv6=on v6 v4 . rxcookie=rxcookie; txcookie=txcookie l2tpv3 . . . cookie64=on counter=off L2TPv3 '' draft-mkonstan-l2tpext-keyed-ipv6-tunnel-00 pincounter=on (peer). . offset=offset (header) 4.3.2.1 L2TPv3 br-lan 1.2.3.4: # Setup tunnel on linux host using raw ip as encapsulation # on 1.2.3.4 ip l2tp add tunnel remote 4.3.2.1 local 1.2.3.4 tunnel_id 1 peer_tunnel_id 1 \ encap udp udp_sport 16384 udp_dport 16384 ip l2tp add session tunnel_id 1 name vmtunnel0 session_id \ 0xFFFFFFFF peer_session_id 0xFFFFFFFF ifconfig vmtunnel0 mtu 1500 ifconfig vmtunnel0 up brctl addif br-lan vmtunnel0 # on 4.3.2.1 # launch QEMU instance - if your network has reorder or is very lossy add ,pincounter qemu-system-x86_64 linux.img -device e1000,netdev=n1 \ -netdev l2tpv3,id=n1,src=4.2.3.1,dst=1.2.3.4,udp=on,srcport=16384,dstport=16384,rxsession=0xffffffff,txsession=0xffffffff,counter=on -netdev vde,id=id[,sock=socketpath][,port=n][,group=groupname][,mode=octalmode] VDE (PORT) n vde socketpath. GROUP groupname MODE octalmode . QEMU vde . : # launch vde switch vde_switch -F -sock /tmp/myswitch # launch QEMU instance qemu-system-x86_64 linux.img -nic vde,sock=/tmp/myswitch -netdev af-xdp,id=str,ifname=name[,mode=native|skb][,force-copy=on|off][,queues=n][,start-queue=m][,inhibit=on|off][,sock-fds=x:y:...:z][,map-path=/path/to/socket/map][,map-start-index=i] AF_XDP 'name' AF_XDP. XDP 'mode' best-effort . 'n' . . # set number of queues to 4 ethtool -L eth0 combined 4 # launch QEMU instance qemu-system-x86_64 linux.img -device virtio-net-pci,netdev=n1 \ -netdev af-xdp,id=n1,ifname=eth0,queues=4 'start-queue' [m, m + n] . NIC native . XDP AF_XDP . ethtool . # 1 ethtool -L eth0 combined 1 # (: 1) # : / . ethtool -N eth0 flow-type ether \ dst 00:00:00:00:00:00 m FF:FF:FF:FF:FF:FE action 1 ethtool -N eth0 flow-type ether \ dst 00:00:00:00:00:01 m FF:FF:FF:FF:FF:FE action 1 # QEMU qemu-system-x86_64 linux.img -device virtio-net-pci,netdev=n1 \ -netdev af-xdp,id=n1,ifname=eth0,queues=1,start-queue=1 XDP . 'inhibit' 'on' . 'inhibit' 'sock-fds' 'map-path' . 'sock-fds' XDP bind socket map . . qemu-system-x86_64 linux.img -device virtio-net-pci,netdev=n1 \ -netdev af-xdp,id=n1,ifname=eth0,queues=3,inhibit=on,sock-fds=15:16:17 'inhibit' 'on' 'map-path' XDP socket map BPF . QEMU socket map . qemu-system-x86_64 linux.img -device virtio-net-pci,netdev=n1 \ -netdev af-xdp,id=n1,ifname=eth0,queues=2,inhibit=on,map-path=/sys/fs/bpf/xsks_map 'map-start-index' socket map . 'map-path' 'sock-fds' . -netdev vhost-user,chardev=id[,vhostforce=on|off][,queues=n] netdev vhost-user chardev id. chardev unix domain socket . vhost-user ioctl vhost . MSI-X vhostforce . 'queues=n' vhost-user (multiqueue) . : qemu -m 512 -object memory-backend-file,id=mem,size=512M,mem-path=/hugetlbfs,share=on \ -numa node,memdev=mem \ -chardev socket,id=chr0,path=/path/to/socket \ -netdev type=vhost-user,id=net0,chardev=chr0 \ -device virtio-net-pci,netdev=net0 -netdev vhost-vdpa[,vhostdev=/path/to/dev][,vhostfd=h] netdev vhost-vdpa. vDPA (datapath) virtio (vendor specific) . vDPA . -netdev hubport,id=id,hubid=hubid[,netdev=nd] hubid. netdev hubport netdev (NIC) QEMU . netdev=nd hubport netdev nd . -net nic[,netdev=nd][,macaddr=mac][,model=type] [,name=name][,addr=addr][,vectors=v] (legacy) (NIC) ( ) 0 ( ) netdev nd. model NIC . NIC QEMU . MAC mac addr ( PCI) . PCI v MSI-X virtio MSI-X v = 0 . -net NIC . QEMU . -net nic,model=help . -net user|passt|tap|bridge|socket|l2tpv3|vde[,...][,name=name] ( -netdev) 0 ( ). name . : -chardev backend,id=id[,mux=on|off][,options] backend : null socket udp msmouse hub vc ringbuf file pipe console serial pty stdio braille parallel spicevmc spiceport dbus. backend . backend chardev -chardev help . id . . (multiplexing) front-end . mux=on . "1:N" "1" backend chardev "N" QEMU chardev . chardev id=myid mux=on QEMU frontend chardev / . frontend chardev . ( chardev frontend .) chardev stdio QEMU : -chardev stdio,mux=on,id=char0 \ -object monitor-hmp,id=hmp0,chardev=char0 \ -serial chardev:char0 \ -serial chardev:char0 TCP UART 0 UART 1 stdio QEMU (parallel port) : -chardev stdio,mux=on,id=char0 \ -object monitor-hmp,id=hmp0,chardev=char0 \ -parallel chardev:char0 \ -chardev tcp,...,mux=on,id=char1 \ -serial chardev:char1 \ -serial chardev:char1 (escape sequences) . Keys in the character backend multiplexer <# keys-in-the-character-backend- multiplexer> System Emulation Users Guide . backend -serial mon:stdio backend stdio QEMU -nographic stdio . ( frontend QEMU chardev backend ) hub chardev . backend logfile backend . logappend (truncate) (append) . backend : -chardev null,id=id (void). . null . -chardev socket,id=id[,TCP options or unix options][,server=on|off][,wait=on|off][,telnet=on|off][,websocket=on|off][,reconnect-ms=milliseconds][,tls-creds=id][,tls-authz=id] TCP unix . path unix . TCP unix . server=on|off (listening socket) . wait=on|off QEMU . telnet=on|off telnet . websocket=on|off WebSocket . reconnect-ms (non-server) . qemu . . tls-creds TLS id TLS (handshake) . -object tls-creds . tls-auth QAuthZ (distinguished name) x509 . chardev . . TCP unix : TCP: port=port[,host=host][,to=to][,ipv4=on|off][,ipv6=on|off][,nodelay=on|off] host (bind) . . host . 0.0.0.0 . port bind . . port . port . to . bind port QEMU to ( ) . to . ipv4=on|off ipv6=on|off IPv4 IPv6 . . nodelay=on|off Nagle . unix: path=path[,abstract=on|off][,tight=on|off] path unix . path . abstract=on|off (abstract socket namespace) . false . tight=on|off sun_path . true . -chardev udp,id=id[,host=host],port=port[,localaddr=localaddr][,localport=localport][,ipv4=on|off][,ipv6=on|off] UDP . host . localhost . port . port . localaddr bind . 0.0.0.0 . localport bind . . ipv4=on|off ipv6=on|off IPv4 IPv6 . . -chardev msmouse,id=id msmouse QEMU (forward) . msmouse . -chardev hub,id=id,chardevs.0=id[,chardevs.N=id] hub backend chardev backend frontend . hub frontend backend . backend frontend . chardev . ( 10.0).sp backend : vc0 pseudo TTY pty0 hub0 frontend virtio hvc . VNC . backend pty virtio hvc pseudo TTY . : -chardev pty,path=/tmp/pty,id=pty0 \ -chardev vc,id=vc0 \ -chardev hub,id=hub0,chardevs.0=pty0,chardevs.1=vc0 \ -device virtconsole,chardev=hub0 \ -vnc 0.0.0.0:0 QEMU VNC TTY hvc : # Start TTY emulator tio /tmp/pty # Start VNC client and switch to virtual console Ctrl-Alt-2 vncviewer :0 frontend . (multiplexers) . -chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]][,encoding=ENCODING] QEMU. backend . o (backend) GTK libvte ( ). o D-Bus Chardev . o spice-app Spice . QEMU VT100 vc . width height . cols rows . encoding : utf8 cp437 ( Extended ASCII / VGA). -chardev ringbuf,id=id[,size=size] size. size 64K . -chardev file,id=id,path=path[,input-path=input-path] . path . . path . input-path . input-path chardev . input-path Windows . -chardev pipe,id=id,path=path . Windows : Windows (pipe) \\.pipe\path . pipe path.in path.out . path.in . path.out . QEMU fifo . path pipe . path . -chardev console,id=id QEMU. console . console Windows . -chardev serial,id=id,path=path . Unix tty . path . -chardev pty,id=id[,path=path] (pseudo-terminal) . pty Windows . path QEMU (symbolic link) PTY . QMP HMP PTY . QEMU . QEMU . -chardev stdio,id=id[,signal=on|off] QEMU. signal QEMU Control-c . signal=off . -chardev braille,id=id BrlAPI. braille . -chardev parallel,id=id,path=path parallel Linux FreeBSD DragonFlyBSD . (parallel) . path . path . -chardev spicevmc,id=id,debug=debug,name=name spicevmc spice . debug spicevmc name spice spice vdiport. -chardev spiceport,id=id,debug=debug,name=name spiceport spice . debug spicevmc name spice spice Spice ( fqdn) . -chardev dbus,id=id,name=name dbus D-Bus . name chardev D-Bus D-Bus D-Bus . TPM : -tpmdev backend,id=id[,options] (backend) . -tpmdev TPM -device (frontend) TPM . TPM -tpmdev help . : -tpmdev passthrough,id=id,path=path,cancel-path=cancel-path ( ) TPM passthrough. path TPM /dev/tpm0 . path /dev/tpm0 . cancel-path sysfs TPM TPM . cancel-path QEMU sysfs . TPM passthrough: TPM passthrough . (BIOS/UEFI) TPM (BIOS/UEFI) (VM) TPM TPM / / TPM. TPM TPM . TPM (reboot) TPM . TPM / TPM . TPM passthrough : -tpmdev passthrough,id=tpm0 -device tpm-tis,tpmdev=tpm0 -tpmdev tpm0 tpmdev=tpm0 . -tpmdev emulator,id=id,chardev=dev ( ) TPM chardev (Unix domain socket). chardev (character device) TPM . TPM chardev: -chardev socket,id=chrtpm,path=/tmp/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0 (Boot Image or Kernel specific) QEMU : o o o o (probeable) ( DTB) . . (bare metal) (reset vectors) . x86 -bios . -pflash . QEMU System Emulator Targets <#system-targets- ref> . -bios file BIOS . -pflash file file (parallel flash). ( ) . . ( CPU ) . . -kernel bzImage bzImage . multiboot . -shim shim.efi 'shim.efi' -append cmdline cmdline -initrd file file (initial ram disk). -initrd "file1 arg=foo,file2" multiboot . file1 file2 arg=foo . (escape) : -initrd "bzImage earlyprintk=xen,,keep root=/dev/xvda1,initrd.img" Multiboot. bzImage "earlyprintk=xen,keep root=/dev/xvda1" initrd.img . -dtb file file (dtb) . . (reset vector) . loader : -device loader,addr=,data=,data-len=[,data-be=][,cpu-num=] guest loader DTB -kernel : -device guest-loader,addr=[,kernel=,[bootargs=]][,initrd=].SS / (Debug/Expert options) -compat [deprecated-input=][,deprecated-output=] (): deprecated-input=accept () deprecated-input=reject deprecated-input=crash (Crash) deprecated-output=accept () deprecated-output=hide : QMP . -compat [unstable-input=][,unstable-output=] (): unstable-input=accept () unstable-input=reject unstable-input=crash unstable-output=accept () unstable-output=hide : QMP . -fw_cfg [name=]name,file=file fw_cfg file. ( "file=my,,file" "my,file"). -fw_cfg [name=]name,string=str fw_cfg str. ( "string=my,,string" "my,string"). NUL str fw_cfg . NUL file . fw_cfg QEMU . : -fw_cfg name=opt/com.mycompany/blob,file=./my_blob.bin fw_cfg opt/com.mycompany/blob -serial dev (character device) dev. vc stdio . . -serial none . : vc[:WxH] . : vc:800x600 : vc:80Cx24C pty[:path] [ ] ( PTY ). path QEMU (symlink) PTY . QMP HMP PTY . QEMU . QEMU . none . null . . null UART . /dev/null . chardev:id -chardev . /dev/XXX [ ] tty /dev/ttyS0. . /dev/parportN [ ] N . SPP EPP . file:filename filename. . stdio [ ] / pipe:filename (named pipe) filename COMn [ ] n udp:[remote_host]:remote_port[@[src_ip]:src_port] UDP Net Console . remote_host src_ip 0.0.0.0 . src_port . netcat nc QEMU : -serial udp::4555 nc : nc -u -l -p 4555. QEMU netconsole . netconsole QEMU QEMU -serial udp::4555@:4556 . netcat TCP udp . netcat telnet remote echo (single char) netcat telnet 5555 QEMU . QEMU: -serial udp::4555@:4556 netcat: -u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T telnet: localhost 5555 tcp:[host]:port[,server=on|off][,wait=on|off][,nodelay=on|off][,reconnect-ms=milliseconds] TCP . / (I/O) . TCP host port . server=on QEMU wait=on|off . nodelay=on|off Nagle . reconnect-ms server=no . host 0.0.0.0 . TCP . telnet=on (character device) . tcp 192.168.0.2 4444 -serial 4444 -serial IP 192.168.0.100 4444 -serial telnet:host:port[,server=on|off][,wait=on|off][,nodelay=on|off] telnet tcp . -serial tcp . telnet telnet . telnet break MAGIC_SYSRQ . telnet Control-] "send break" . websocket:host:port,server=on[,wait=on|off][,nodelay=on|off] WebSocket tcp . WebSocket . . unix:path[,server=on|off][,wait=on|off][,reconnect-ms=milliseconds] (unix domain socket) tcp . -serial tcp . mon:dev_string (multiplex) . Control-a c . dev_string . telnet 4444 : -serial mon:telnet::4444,server=on,wait=off stdio Ctrl+C QEMU . braille . BrlAPI . msmouse . Microsoft . -parallel dev dev ( ). /dev/parportN . . -parallel none . -monitor dev dev ( ). vc stdio . -monitor none . -monitor dev dev -object monitor-hmp . (ID) compat_monitorNNN NNN 0 . -qmp dev -monitor 'control' . QMP 4444 localhost: -qmp tcp:localhost:4444,server=on,wait=off -qmp dev dev -object monitor-qmp . compat_monitorNNN NNN 0 . -qmp-pretty dev -qmp JSON . -mon [chardev=]name[,mode=readline|control][,pretty=on|off] chardev name. QEMU : Human Monitor Protocol (HMP ) QEMU Monitor Protocol (QMP JSON RPC). HMP mode=control QMP . pretty mode=control JSON . : -chardev socket,id=mon1,host=localhost,port=4444,server=on,wait=off \ -mon chardev=mon1,mode=control,pretty=on QMP 4444 localhost . -mon mode=readline -object monitor-hmp compat_monitorNNN NNN 0 . -mon mode=control -object monitor-qmp compat_monitorNNN NNN 0 . -debugcon dev dev ( ). I/O 0xe9 I/O . vc stdio . -pidfile file (PID) QEMU file. QEMU . --preconfig QEMU . QMP 'x-exit-preconfig' preconfig ( -S -S). . -S CPU ( 'c' ). -overcommit mem-lock=on|off|on-fault -overcommit cpu-pm=on|off qemu (host resource overcommit). ..sp qemu mem-lock=on mem-lock=on-fault ( ). (overcommit ) . on-fault (lazy) (fault) QEMU . . ( ) cpu-pm=on ( ). CPU . (idle) . -gdb dev gdb dev ( GDB usage <#gdb-usage> ). QEMU -- QEMU gdb continue -S QEMU . TCP : -gdb tcp::3117 backend UDP TTY stdio . stdio QEMU gdb (pipe) : (gdb) target remote | exec qemu-system-x86_64 -gdb stdio ... -s -gdb gdbserver TCP 1234 ( GDB usage <#gdb-usage> ). -d item1[,...] . '-d help' . -D logfile logfile stderr -dfilter range1[,...] . start+size start-size start..end start end size . : -dfilter 0x8000..0x8fff,0xffffffc000080000+0x200,0xffffffc000060000-0x1000 0x1000 0x8000 0x200 0xffffffc000080000 0x1000 0xffffffc00005f000 (dump) . -seed number (deterministic) number (seed) . . -L path BIOS VGA BIOS (keymaps). -L help . -enable-kvm KVM. KVM . -xen-domid id xen ( XEN). -xen-attach xen. libxl QEMU ( XEN). xen ( XEN). -no-reboot (reboot). -no-shutdown QEMU . monitor . -action event=action action QEMU . -no-reboot -no-shutdown . : -action panic=none -action reboot=shutdown,shutdown=pause -device i6300esb -action watchdog=pause -loadvm file (loadvm monitor) -daemonize QEMU . QEMU / . QEMU (race conditions) . -option-rom file file option ROM. EtherBoot . -rtc [base=utc|localtime|datetime][,clock=host|rt|vm][,driftfix=none|slew] base utc localtime RTC UTC . localtime MS-DOS Windows . datetime 2006-06-17T16:01:21 2006-06-17 . UTC . RTC . RTC NTP . clock rt (monotonic) . RTC (suspension) clock vm ( ) . 'clock=vm' icount (determinism) icount . (time drift) ACPI HAL Windows driftfix ( i386). Windows (re-inject) . -icount [shift=N|auto][,align=on|off][,sleep=on|off][,rr=record|replay,rrfile=filename[,rrsnapshot=snapshot]] . 2^N . auto . (cycle accurate) . superscalar (out of order) . . sleep=off . sleep=off . . icount sleep=on . sleep=off shift=auto align=on . align=on . shift . align=on . shift auto . : shift . shift ( ). icount align=off ..sp rr / (deterministic record/replay) . rrfile= . (record) (replay) . rrsnapshot . . . -watchdog-action action (watchdog timer) (QEMU) . reset ( ). : shutdown ( ) poweroff ( ) inject-nmi ( NMI ) pause ( ) debug ( ) none ( ). shutdown ACPI -watchdog-action shutdown . : -device i6300esb -watchdog-action pause -echr numeric_ascii_value (escape character) . -nographic 0x01 . 0x01 Control-a . (ASCII) Control-a Control-z . Control-t . -echr 0x14; -echr 20 -incoming (incoming migration) . . -incoming 'main' . -incoming . -incoming tcp:[host]:port[,to=maxport][,ipv4=on|off][,ipv6=on|off] -incoming rdma:host:port[,ipv4=on|off][,ipv6=on|off] tcp . -incoming unix:socketpath unix . -incoming fd:fd (file descriptor) . -incoming file:filename[,offset=offset] offset. offset 0x . -incoming exec:cmdline . -incoming . QAPI MigrationChannel . : -incoming '{"channel-type": "main", "addr": { "transport": "socket", "type": "unix", "path": "my.sock" }}' -incoming main,addr.transport=socket,addr.type=unix,addr.path=my.sock -incoming defer URI migrate_incoming. ( ) migrate_incoming . -only-migratable . . -nodefaults . QEMU VGA CD-ROM . -nodefaults . -prom-env variable=value nvram (OpenBIOS) ( PPC SPARC). qemu-system-sparc -prom-env 'auto-boot?=false' \ -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single' qemu-system-ppc -prom-env 'auto-boot?=false' \ -prom-env 'boot-device=hd:2,\yaboot' \ -prom-env 'boot-args=conf=hd:2,\yaboot.conf' -semihosting (Semihosting) <#semihosting> ( ARM M68K Xtensa MIPS RISC-V). : . -semihosting-config . -semihosting-config [enable=on|off][,target=native|gdb|auto][,chardev=id][,userspace=on|off][,arg=str[,...]] (Semihosting) <#semihosting> ( ARM M68K Xtensa MIPS RISC-V). : . target=native|gdb|auto semihosting QEMU (native) GDB (gdb). auto gdb native . chardev=str1 chardev native auto gdb userspace=on|off (userspace) semihosting . (privileged) semihosting . userspace=on ( [bare-metal]). arg=str1,arg=str2,... . -kernel/-append . --semihosting-config arg -kernel/-append semihosting . -sandbox arg[,obsolete=string][,elevateprivileges=string][,spawn=string][,resourcecontrol=string] (Seccomp mode 2). 'on' syscall 'off' . 'off' . obsolete=string (Obsolete).TP elevateprivileges=string set*uid|gid spawn=string *fork execve resourcecontrol=string (process affinity) -readconfig file file. QEMU . -no-user-config -no-user-config QEMU sysconfdir . -trace [[enable=]pattern][,events=file][,file=file] (tracing). [enable=]PATTERN PATTERN ( glob). QEMU simple log ftrace . -trace . -trace help . events=FILE FILE. ( trace-events-all ) globbing . QEMU simple log ftrace . file=FILE FILE. QEMU simple . -plugin file=file[,argname=argvalue] (plugin). file=file (shared library). argname=argvalue . ( .) -run-with [async-teardown=on|off][,chroot=dir][,exit-with-parent=on|off][,user=username|uid:gid] QEMU. async-teardown=on (asynchronous teardown) . "cleanup/" clone QEMU . QEMU . QEMU cleanup . cleanup cgroups QEMU (accounting) . cleanup QEMU SIGKILL . chroot=dir chroot . user=... . exit-with-parent=on QEMU . QEMU (captive appliance) . (crash) QEMU . Linux FreeBSD macOS . user=username user=uid:gid (root) . QEMU setuid setgid . user=username (supplementary groups) user=uid:gid gid . -msg [timestamp=on|off][,guest-name=on|off] . timestamp=on|off . off . guest-name=on|off -name guest . off . -dump-vmstate file vmstate json file -enable-sync-profile (synchronization profiling). -perfmap (map) perf (basic blocks) . -jitdump dump perf JIT . -object typename[,prop1=value1,...] typename . 'id' . '/objects' . -object monitor-hmp,id=id,chardev=chardev_id,readline=on|off Human Monitor Protocol chardev chardev_id . id . compat_monmitorNNN . -object -monitor . readline on (line editing) . -object monitor-qmp,id=id,chardev=chardev_id,pretty=on|off,close-action=none|delete QEMU Monitor Protocol chardev chardev_id . id . compat_monitorNNN . -object -qmp -qmp-pretty . pretty off JSON (pretty print) . close-action none . delete monitor-qmp . (hotplug) . -object memory-backend-file,id=id,size=size,mem-path=dir,share=on|off,discard-data=on|off,merge=on|off,dump=on|off,prealloc=on|off,host-nodes=host-nodes,policy=default|preferred|bind|interleave,align=align,offset=offset,readonly=on|off,rom=on|off|auto RAM (huge pages) . id -numa -device nvdimm . size 500M . mem-path (shared memory) huge page . share QEMU . QEMU . share=on NUMA Documentation/vm/numa_memory_policy.txt . discard-data on QEMU . discard-data QEMU SIGKILL . merge MADV_MERGEABLE Kernel Samepage Merging (deduplication) . dump off (core dump) . MADV_DONTDUMP . prealloc . host-nodes NUMA . policy NUMA : default preferred bind interleave (interleave) align mmap(2) mem-path QEMU 2M . mem-path QEMU DAX /dev/dax0.0 4K 2M . . offset . . pmem mem-path SNIA NVM ( Intel NVDIMM) . pmem 'on' QEMU mem-path ( vNVDIMM ). MAP_SYNC mem-path . MAP_SYNC ( 4.15 ) mem-path DAX . readonly - () . rom (ROM) . ROM . RAM ROM . NVDIMM (R/O) ROM . on ROM off RAM auto () readonly . rom ROM RAM : (VM templating) (readonly=on) QEMU (share=off). ROM RAM rom=off . -object memory-backend-ram,id=id,merge=on|off,dump=on|off,share=on|off,prealloc=on|off,size=size,host-nodes=host-nodes,policy=default|preferred|bind|interleave RAM . -m RAM . memory-backend-file . -object memory-backend-memfd,id=id,merge=on|off,dump=on|off,share=on|off,prealloc=on|off,size=size,host-nodes=host-nodes,policy=default|preferred|bind|interleave,seal=on|off,hugetlb=on|off,hugetlbsize=size (anonymous) QEMU ( vhost-user). memfd (sealing) . ( ) seal ( 'on'). hugetlb hugetlbfs ( 4.14 ). hugetlb hugetlbsize hugetlb hugetlb ( ). hugetlb seal ( 4.16 ). memory-backend-file . share memfd on ..TP -object memory-backend-shm,id=id,merge=on|off,dump=on|off,share=on|off,prealloc=on|off,size=size,host-nodes=host-nodes,policy=default|preferred|bind|interleave POSIX QEMU ( vhost-user) . memory-backend-shm memory-backend-memfd . POSIX memfd . memory-backend-file . share shm (on) . off . -object iommufd,id=id[,fd=fd] iommufd DMA /dev/iommu . id ( vfio-pci vdpa) iommufd . fd /dev/iommu . iommufd . -object rng-builtin,id=id QEMU . id virtio-rng . virtio-rng RNG . -object rng-random,id=id,filename=/dev/random . id virtio-rng . filename /dev/urandom . -object rng-egd,id=id,chardev=chardevid . id virtio-rng . chardev RNG . -object tls-creds-anon,id=id,endpoint=endpoint,dir=/path/to/cred/dir,verify-peer=on|off TLS TLS . id . endpoint QEMU server client . verify-peer () (no-op) . dir QEMU . dh-params.pem diffie-hellman TLS . QEMU DH . . -object tls-creds-psk,id=id,endpoint=endpoint,dir=/path/to/keys/dir[,username=username] TLS ( PSK) TLS . id . endpoint QEMU server client . username . "qemu" . dir QEMU . "dir/keys.psk" "username:key" . psktool GnuTLS . dir dh-params.pem diffie-hellman TLS . QEMU DH . . -object tls-creds-x509,id=id,endpoint=endpoint,dir=/path/to/cred/dir,priority=priority,verify-peer=on|off,passwordid=id TLS TLS . id . endpoint QEMU server client . verify-peer () . x509 . dir QEMU . dh-params.pem diffie-hellman TLS . QEMU DH . . x509 x509 . PEM ca-cert.pem ca-crl.pem () server-cert.pem ( ) server-key.pem ( ) client-cert.pem ( ) client-key.pem ( ) . server-key.pem client-key.pem passwordid . secret . priority gnutls . QEMU . QEMU . gnutls . -object tls-cipher-suites,id=id,priority=priority TLS / TLS . id TLS . priority gnutls . QEMU . QEMU . gnutls . UEFI HTTPS Boot . tls-cipher-suites TLS fw_cfg . IANA_TLS_CIPHER . IANA_TLS_CIPHER TLS . priority . QEMU GNUTLS priority=@SYSTEM /etc/crypto-policies/back-ends/gnutls.config . # qemu-system-x86_64 \ -object tls-cipher-suites,id=mysuite0,priority=@SYSTEM \ -fw_cfg name=etc/edk2/https/ciphers,gen_id=mysuite0 -object filter-buffer,id=id,netdev=netdevid,interval=t[,queue=all|rx|tx][,status=on|off][,position=head|tail|id=][,insert=behind|before] t 0 : netdev netdevid . . status netfilter () () netfilter 'on' ..sp queue all|rx|tx netfilter . all: netdev (). rx: netdev netdev . tx: netdev netdev . position head|tail|id= . netfilter . head: . tail: (). id=: insert . insert behind|before position=id= . netfilter . before: . behind: (). -object filter-mirror,id=id,netdev=netdevid,outdev=chardevid,queue=all|rx|tx[,vnet_hdr_support][,position=head|tail|id=][,insert=behind|before] filter-mirror netdev netdevid chardev chardevid (mirror) vnet_hdr_support filter-mirror vnet_hdr_len . -object filter-redirector,id=id,netdev=netdevid,indev=chardevid,outdev=chardevid,queue=all|rx|tx[,vnet_hdr_support][,position=head|tail|id=][,insert=behind|before] filter-redirector netdev netdevid chardev chardevid (redirect) indev . vnet_hdr_support filter-redirector vnet_hdr_len . filter-redirector outdev indev . indev outdev indev outdev . -object filter-rewriter,id=id,netdev=netdevid,queue=all|rx|tx,[vnet_hdr_support][,position=head|tail|id=][,insert=behind|before] Filter-rewriter COLO . tcp primary secondary tcp (secondary) tcp secondary primary tcp . vnet_hdr_support vnet . : colo secondary: -object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0 -object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1 -object filter-rewriter,id=rew0,netdev=hn0,queue=all -object filter-dump,id=id,netdev=dev[,file=filename][,maxlen=len][,position=head|tail|id=][,insert=behind|before] netdev dev filename (dump) . len ( 64k) . libpcap tcpdump Wireshark . -object colo-compare,id=,primary_in=,secondary_in=,outdev=,iothread=[,vnet_hdr_support][,notify_dev=][,compare_timeout=][,expired_scan_cycle=][,max_queue_size=] Colo-compare chardev primary_in secondary_in (payload) primary secondary . primary chardev outdev COLO-framework (checkpoint) primary outdev . iothread iothread iothread ( ). vnet_hdr_support colo compare vnet . compare_timeout colo-compare ( ) . expired_scan_cycle primary ( ) . max_queue_size . Xen COLO notify_dev colo-compare Xen colo-frame checkpoint . COLO-compare filter-mirror filter-redirector filter-rewriter . KVM COLO primary: -netdev tap,id=hn0,vhost=off -device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66 -chardev socket,id=mirror0,host=3.3.3.3,port=9003,server=on,wait=off -chardev socket,id=compare1,host=3.3.3.3,port=9004,server=on,wait=off -chardev socket,id=compare0,host=3.3.3.3,port=9001,server=on,wait=off -chardev socket,id=compare0-0,host=3.3.3.3,port=9001 -chardev socket,id=compare_out,host=3.3.3.3,port=9005,server=on,wait=off -chardev socket,id=compare_out0,host=3.3.3.3,port=9005 -object iothread,id=iothread1 -object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0 -object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out -object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0 -object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0,iothread=iothread1 secondary: -netdev tap,id=hn0,vhost=off -device e1000,netdev=hn0,mac=52:a4:00:12:78:66 -chardev socket,id=red0,host=3.3.3.3,port=9003 -chardev socket,id=red1,host=3.3.3.3,port=9004 -object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0 -object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1 Xen COLO primary: -netdev tap,id=hn0,vhost=off -device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66 -chardev socket,id=mirror0,host=3.3.3.3,port=9003,server=on,wait=off -chardev socket,id=compare1,host=3.3.3.3,port=9004,server=on,wait=off -chardev socket,id=compare0,host=3.3.3.3,port=9001,server=on,wait=off -chardev socket,id=compare0-0,host=3.3.3.3,port=9001 -chardev socket,id=compare_out,host=3.3.3.3,port=9005,server=on,wait=off -chardev socket,id=compare_out0,host=3.3.3.3,port=9005 -chardev socket,id=notify_way,host=3.3.3.3,port=9009,server=on,wait=off -object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0 -object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out -object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0 -object iothread,id=iothread1 -object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0,notify_dev=notify_way,iothread=iothread1 secondary: -netdev tap,id=hn0,vhost=off -device e1000,netdev=hn0,mac=52:a4:00:12:78:66 -chardev socket,id=red0,host=3.3.3.3,port=9003 -chardev socket,id=red1,host=3.3.3.3,port=9004 -object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0 -object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1 git log colo-compare . -object cryptodev-backend-builtin,id=id[,queues=queues] cryptodev API cipher QEMU . id cryptodev virtio-crypto . queues cryptodev queues 1 . # qemu-system-x86_64 \ [...] \ -object cryptodev-backend-builtin,id=cryptodev0 \ -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \ [...] -object cryptodev-vhost-user,id=id,chardev=chardevid[,queues=queues] cryptodev vhost-user chardev chardevid . id cryptodev virtio-crypto . chardev (unix domain socket) . vhost-user ioctl vhost . queues cryptodev vhost-user queues 1 . # qemu-system-x86_64 \ [...] \ -chardev socket,id=chardev0,path=/path/to/socket \ -object cryptodev-vhost-user,id=cryptodev0,chardev=chardev0 \ -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \ [...] -object secret,id=id,data=string,format=raw|base64[,keyid=secretid,iv=string] -object secret,id=id,file=filename,format=raw|base64[,keyid=secretid,iv=string] (secret) . data file . data . raw () base64 . JSON raw UTF-8 base64 . QEMU . RBD raw RBD base64 . AES-256-CBC . keyid iv . keyid (ID) AES-256 . base64 . iv (IV) base64 IV . () : # qemu-system-x86_64 -object secret,id=sec0,data=letmein,format=raw # printf "letmein" > mypasswd.txt # QEMU_SYSTEM_MACRO -object secret,id=sec0,file=mypasswd.txt,format=raw AES-256-CBC . openssl . (plaintext) PKCS#5/6 ( ) (pad) . (master key) base64 : # openssl rand -base64 32 > key.b64 # KEY=$(base64 -d key.b64 | hexdump -v -e '/1 "%02X"') (IV) . : # openssl rand -base64 16 > iv.b64 # IV=$(base64 -d iv.b64 | hexdump -v -e '/1 "%02X"') openssl base64 (raw) . # SECRET=$(printf "letmein" | openssl enc -aes-256-cbc -a -K $KEY -iv $IV) QEMU key.b64 . iv.b64 : # qemu-system-x86_64 \ -object secret,id=secmaster0,format=base64,file=key.b64 \ -object secret,id=sec0,keyid=secmaster0,format=base64,\ data=$SECRET,iv=$( Secure Encrypted Virtualization (SEV) AMD . ( C-bit) . cbitpos C-bit . C-bit (Host) . EPYC . . reduced-phys-bits . C-bit . EPYC . sev-device SEV AMD Secure Processor . '/dev/sev' . /dev/sev CCP . policy (policy) SEV (hypervisor) . . 0 . policy SEV handle . dh-cert-file session-file - (Public Diffie-Hillman) SEV . PDH (session) (attestation) . base64 . kernel-hashes (hashes) kernel/initrd/cmdline (measured Linux boot) -kernel . off . ( 6.2) SEV: # qemu-system-x86_64 \ ...... \ -object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=1 \ -machine ...,confidential-guest-support=sev0 \ ..... -object tdx-guest,id=id,[attributes=attrs,sept-ve-disable=on|off,mrconfigid=sha384_digest,mrowner=sha384_digest,mrownerconfig=sha384_digest,quote-generation-socket=socketaddr] Intel Trusted Domain eXtensions (TDX) confidential-guest-support . confidential-guest-support TDX . attributes TD ( TD attributes) . sept-ve-disable TD . on EPT #VE PENDING . ( TD) . on ..sp mrconfigid (digest) SHA384 base64 (non-owner-defined) TD . . mrowner SHA384 base64 TD . . mrownerconfig SHA384 base64 (owner-defined) TD (workload) . . quote-generation-socket Quote Generation Service (QGS) . QGS . QEMU TD QGS ( QUOTE ) QGS TD . # qemu-system-x86_64 \ ...... \ -object '{"qom-type":"tdx-guest","id":"tdx","quote-generation-socket":{"type":"unix","path":"/var/run/qgs.socket"}}' \ -machine ...,confidential-guest-support=tdx \ ...... -object igvm-cfg,file=file IGVM Independent Guest Virtual Machine (IGVM) . -machine q35 -machine pc . file IGVM . IGVM (memory map) . IGVM (firmware) igvm-cfg -bios x86 . IGVM : # qemu-system-x86_64 \ ...... \ -object igvm-cfg,id=igvm0,file=bios.igvm \ -machine ...,igvm-cfg=igvm0 \ ..... -object authz-simple,id=id,identity=string (authorization) . identity . TLS x509 (distinguished name) x509 . (escape) . x509 : # qemu-system-x86_64 \ ... \ -object 'authz-simple,id=auth0,identity=CN=laptop.example.com,,O=Example Org,,L=London,,ST=London,,C=GB' \ ... x509 ',' . -object authz-listfile,id=id,filename=path,refresh=on|off . filename (fully qualified path) (ACL) JSON . SASL : { "rules": [ { "match": "fred", "policy": "allow", "format": "exact" }, { "match": "bob", "policy": "allow", "format": "exact" }, { "match": "danb", "policy": "deny", "format": "glob" }, { "match": "dan*", "policy": "allow", "format": "exact" }, ], "policy": "deny" } policy . policy . glob (wildcards) . refresh true . authz-simple TLS x509 SASL . SASL : # qemu-system-x86_64 \ ... \ -object authz-simple,id=auth0,filename=/etc/qemu/vnc-sasl.acl,refresh=on \ ... -object authz-pam,id=id,service=string . service PAM . /etc/pam.d/service account . TLS x509 : # qemu-system-x86_64 \ ... \ -object authz-pam,id=auth0,service=qemu-vnc \ ... PAM /etc/pam.d/qemu-vnc : account requisite pam_listfile.so item=user sense=allow \ file=/etc/qemu/vnc.allow /etc/qemu/vnc.allow (distinguished names) x509 : CN=laptop.example.com,O=Example Home,L=London,ST=London,C=GB -object iothread,id=id,poll-max-ns=poll-max-ns,poll-grow=poll-grow,poll-shrink=poll-shrink,poll-weight=poll-weight,aio-max-batch=aio-max-batch (thread) . IOThread . vCPU . . IOThread I/O . id IOThread -device ...,iothread=id . IOThread . iothread . QMP query-iothreads IOThread (thread IDs) / (host CPU pinning/affinity) . IOThread (adaptive polling) . (blocking system call) (spin) . / . poll-max-ns (busy wait) . 0 . poll-grow . poll-shrink . poll-weight . . 0 3 . : 1 ( ) 2-4 ( ). aio-max-batch (batch) AIO 0 . IOThread qom-set ( iothread1 id IOThread ): (qemu) qom-set /objects/iothread1 poll-max-ns 100000 . (modifier) Ctrl+Alt ( ) mod= -display . -display sdl, grab-mod=lshift-lctrl-lalt Ctrl+Alt+Shift -display sdl,grab-mod=rctrl Ctrl . (MULTIPLEXER KEYS) +-------------------+-----------------------------------------------+ | | | | | | +-------------------+-----------------------------------------------+ |Ctrl+Alt+f | | | | | +-------------------+-----------------------------------------------+ |Ctrl+Alt++ | | +-------------------+-----------------------------------------------+ |Ctrl+Alt+- | | +-------------------+-----------------------------------------------+ |Ctrl+Alt+0 | | | | | | | | | | | +-------------------+-----------------------------------------------+ |Ctrl+Alt+n | | | | 'n'. | | | | | | | | | : 0.0 o 2 1: | | | | | | o 2 2: | | | (Monitor) o 2 3: | | | 840u | +-------------------+-----------------------------------------------+ |Ctrl+Alt+g | | | | | | | . | +-------------------+-----------------------------------------------+ Ctrl+Up Ctrl+Down Ctrl+PageUp Ctrl+PageDown (back log) . (character backend multiplexer) ( -nographic ) (escape sequence) . Ctrl+a -echr . ..SH " (MULTIPLEXER KEYS)" +-------------------+--------------------------------------+ | | | | | | +-------------------+--------------------------------------+ |Ctrl+a h | | | | | +-------------------+--------------------------------------+ |Ctrl+a x | | | | | +-------------------+--------------------------------------+ |Ctrl+a s | | | | | | | | | | ( | | | | | | -snapshot) | +-------------------+--------------------------------------+ |Ctrl+a t | | | | | | | | +-------------------+--------------------------------------+ |Ctrl+a b | | | | break ( magic sysrq | | | ) | +-------------------+--------------------------------------+ |Ctrl+a c | | | | | | | | | | | | | ( | | | | | | | | | ) | +-------------------+--------------------------------------+ |Ctrl+a Ctrl+a | | | | (escape) | | | | +-------------------+--------------------------------------+ (NOTES) QEMU iSCSI . URL . iSCSI iSCSI QEMU iSCSI . disk cdrom . LUN iSCSI : "iscsi://[:]//" qemu initiator-name iSCSI 'iqn.2008-11.org.linux-kvm[:]' . QEMU 2.4 (timeout) iSCSI . . 0 . Libiscsi 1.15.0 . ( ): qemu-system-x86_64 -iscsi initiator-name=iqn.2001-04.com.example:my-initiator \ -cdrom iscsi://192.0.2.1/iqn.2001-04.com.example/2 \ -drive file=iscsi://192.0.2.1/iqn.2001-04.com.example/1 ( / CHAP URL): qemu-system-x86_64 -drive file=iscsi://user%password@192.0.2.1/iqn.2001-04.com.example/1 ( / CHAP ): LIBISCSI_CHAP_USERNAME="user" \ LIBISCSI_CHAP_PASSWORD="password" \ qemu-system-x86_64 -drive file=iscsi://192.0.2.1/iqn.2001-04.com.example/1 NBD QEMU NBD ( Network Block Devices) TCP Unix Domain Sockets . TCP 10809 . NBD TCP URI: "nbd://[:]/[]" NBD Unix Domain Sockets '?' glob () : "nbd+unix:///[]?socket=" : "nbd::[:exportname=]" NBD Unix Domain Sockets: "nbd:unix:[:exportname=]" TCP qemu-system-x86_64 --drive file=nbd:192.0.2.1:30000 Unix Domain Sockets qemu-system-x86_64 --drive file=nbd:unix:/tmp/nbd-socket SSH QEMU SSH ( Secure Shell) . : qemu-system-x86_64 -drive file=ssh://user@host/path/to/disk.img qemu-system-x86_64 -drive file.driver=ssh,file.user=user,file.host=host,file.port=22,file.path=/path/to/disk.img ssh-agent . . HTTP/HTTPS/FTP/FTPS QEMU http(s) ftp(s) . : ://[[:]@]/ : protocol 'http' 'https' 'ftp' 'ftps'. username . password . host . path (query string). : url URL (driver). readahead (read ahead) (range request) . 'T' 'G' 'M' 'K' 'k' 'b' . . . 256k . sslverify SSL . 'on' 'off' . 'on' . cookie ( ';' ) . HTTP . timeout (timeout) CURL . CURL . . force-range HEAD HTTP http GET. URL S3 HEAD . 'false' . qemu driver . : (boot) ISO Fedora 20 qemu-system-x86_64 --drive media=cdrom,file=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/20/Live/x86_64/Fedora-Live-Desktop-x86_64-20-1.iso,readonly qemu-system-x86_64 --drive media=cdrom,file.driver=http,file.url=http://archives.fedoraproject.org/pub/fedora/linux/releases/20/Live/x86_64/Fedora-Live-Desktop-x86_64-20-1.iso,readonly : Fedora 20 (overlay) copy-on-read (readahead) 64k qemu-img create -f qcow2 -o backing_file='json:{"file.driver":"http",, "file.url":"",, "file.readahead":"64k"}' /tmp/Fedora-x86_64-20-20131211.1-sda.qcow2 qemu-system-x86_64 -drive file=/tmp/Fedora-x86_64-20-20131211.1-sda.qcow2,copy-on-read=on : VMware vSphere (self-signed) readahead 64k . qemu-img create -f qcow2 -o backing_file='json:{"file.driver":"https",, "file.url":"",, "file.sslverify":"off",, "file.readahead":"64k",, "file.timeout":10}' /tmp/test.qcow2 qemu-system-x86_64 -drive file=/tmp/test.qcow2 HTML QEMU . (AUTHOR) Fabrice Bellard (COPYRIGHT) 2026, The QEMU Project Developers 11.1.1 August 28, 2026 QEMU(1)