Merge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2017-07-25' into staging
[qemu.git] / qemu-doc.texi
blob48af5155c74d80386d1d5ce4732f6674c0c2cd4e
1 \input texinfo @c -*- texinfo -*-
2 @c %**start of header
3 @setfilename qemu-doc.info
4 @include version.texi
6 @documentlanguage en
7 @documentencoding UTF-8
9 @settitle QEMU version @value{VERSION} User Documentation
10 @exampleindent 0
11 @paragraphindent 0
12 @c %**end of header
14 @ifinfo
15 @direntry
16 * QEMU: (qemu-doc).    The QEMU Emulator User Documentation.
17 @end direntry
18 @end ifinfo
20 @iftex
21 @titlepage
22 @sp 7
23 @center @titlefont{QEMU version @value{VERSION}}
24 @sp 1
25 @center @titlefont{User Documentation}
26 @sp 3
27 @end titlepage
28 @end iftex
30 @ifnottex
31 @node Top
32 @top
34 @menu
35 * Introduction::
36 * QEMU PC System emulator::
37 * QEMU System emulator for non PC targets::
38 * QEMU Guest Agent::
39 * QEMU User space emulator::
40 * Implementation notes::
41 * License::
42 * Index::
43 @end menu
44 @end ifnottex
46 @contents
48 @node Introduction
49 @chapter Introduction
51 @menu
52 * intro_features:: Features
53 @end menu
55 @node intro_features
56 @section Features
58 QEMU is a FAST! processor emulator using dynamic translation to
59 achieve good emulation speed.
61 @cindex operating modes
62 QEMU has two operating modes:
64 @itemize
65 @cindex system emulation
66 @item Full system emulation. In this mode, QEMU emulates a full system (for
67 example a PC), including one or several processors and various
68 peripherals. It can be used to launch different Operating Systems
69 without rebooting the PC or to debug system code.
71 @cindex user mode emulation
72 @item User mode emulation. In this mode, QEMU can launch
73 processes compiled for one CPU on another CPU. It can be used to
74 launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
75 to ease cross-compilation and cross-debugging.
77 @end itemize
79 QEMU has the following features:
81 @itemize
82 @item QEMU can run without a host kernel driver and yet gives acceptable
83 performance.  It uses dynamic translation to native code for reasonable speed,
84 with support for self-modifying code and precise exceptions.
86 @item It is portable to several operating systems (GNU/Linux, *BSD, Mac OS X,
87 Windows) and architectures.
89 @item It performs accurate software emulation of the FPU.
90 @end itemize
92 QEMU user mode emulation has the following features:
93 @itemize
94 @item Generic Linux system call converter, including most ioctls.
96 @item clone() emulation using native CPU clone() to use Linux scheduler for threads.
98 @item Accurate signal handling by remapping host signals to target signals.
99 @end itemize
101 QEMU full system emulation has the following features:
102 @itemize
103 @item
104 QEMU uses a full software MMU for maximum portability.
106 @item
107 QEMU can optionally use an in-kernel accelerator, like kvm. The accelerators 
108 execute most of the guest code natively, while
109 continuing to emulate the rest of the machine.
111 @item
112 Various hardware devices can be emulated and in some cases, host
113 devices (e.g. serial and parallel ports, USB, drives) can be used
114 transparently by the guest Operating System. Host device passthrough
115 can be used for talking to external physical peripherals (e.g. a
116 webcam, modem or tape drive).
118 @item
119 Symmetric multiprocessing (SMP) support.  Currently, an in-kernel
120 accelerator is required to use more than one host CPU for emulation.
122 @end itemize
125 @node QEMU PC System emulator
126 @chapter QEMU PC System emulator
127 @cindex system emulation (PC)
129 @menu
130 * pcsys_introduction:: Introduction
131 * pcsys_quickstart::   Quick Start
132 * sec_invocation::     Invocation
133 * pcsys_keys::         Keys in the graphical frontends
134 * mux_keys::           Keys in the character backend multiplexer
135 * pcsys_monitor::      QEMU Monitor
136 * disk_images::        Disk Images
137 * pcsys_network::      Network emulation
138 * pcsys_other_devs::   Other Devices
139 * direct_linux_boot::  Direct Linux Boot
140 * pcsys_usb::          USB emulation
141 * vnc_security::       VNC security
142 * gdb_usage::          GDB usage
143 * pcsys_os_specific::  Target OS specific information
144 @end menu
146 @node pcsys_introduction
147 @section Introduction
149 @c man begin DESCRIPTION
151 The QEMU PC System emulator simulates the
152 following peripherals:
154 @itemize @minus
155 @item
156 i440FX host PCI bridge and PIIX3 PCI to ISA bridge
157 @item
158 Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
159 extensions (hardware level, including all non standard modes).
160 @item
161 PS/2 mouse and keyboard
162 @item
163 2 PCI IDE interfaces with hard disk and CD-ROM support
164 @item
165 Floppy disk
166 @item
167 PCI and ISA network adapters
168 @item
169 Serial ports
170 @item
171 IPMI BMC, either and internal or external one
172 @item
173 Creative SoundBlaster 16 sound card
174 @item
175 ENSONIQ AudioPCI ES1370 sound card
176 @item
177 Intel 82801AA AC97 Audio compatible sound card
178 @item
179 Intel HD Audio Controller and HDA codec
180 @item
181 Adlib (OPL2) - Yamaha YM3812 compatible chip
182 @item
183 Gravis Ultrasound GF1 sound card
184 @item
185 CS4231A compatible sound card
186 @item
187 PCI UHCI, OHCI, EHCI or XHCI USB controller and a virtual USB-1.1 hub.
188 @end itemize
190 SMP is supported with up to 255 CPUs.
192 QEMU uses the PC BIOS from the Seabios project and the Plex86/Bochs LGPL
193 VGA BIOS.
195 QEMU uses YM3812 emulation by Tatsuyuki Satoh.
197 QEMU uses GUS emulation (GUSEMU32 @url{http://www.deinmeister.de/gusemu/})
198 by Tibor "TS" Schütz.
200 Note that, by default, GUS shares IRQ(7) with parallel ports and so
201 QEMU must be told to not have parallel ports to have working GUS.
203 @example
204 qemu-system-i386 dos.img -soundhw gus -parallel none
205 @end example
207 Alternatively:
208 @example
209 qemu-system-i386 dos.img -device gus,irq=5
210 @end example
212 Or some other unclaimed IRQ.
214 CS4231A is the chip used in Windows Sound System and GUSMAX products
216 @c man end
218 @node pcsys_quickstart
219 @section Quick Start
220 @cindex quick start
222 Download and uncompress the linux image (@file{linux.img}) and type:
224 @example
225 qemu-system-i386 linux.img
226 @end example
228 Linux should boot and give you a prompt.
230 @node sec_invocation
231 @section Invocation
233 @example
234 @c man begin SYNOPSIS
235 @command{qemu-system-i386} [@var{options}] [@var{disk_image}]
236 @c man end
237 @end example
239 @c man begin OPTIONS
240 @var{disk_image} is a raw hard disk image for IDE hard disk 0. Some
241 targets do not need a disk image.
243 @include qemu-options.texi
245 @c man end
247 @node pcsys_keys
248 @section Keys in the graphical frontends
250 @c man begin OPTIONS
252 During the graphical emulation, you can use special key combinations to change
253 modes. The default key mappings are shown below, but if you use @code{-alt-grab}
254 then the modifier is Ctrl-Alt-Shift (instead of Ctrl-Alt) and if you use
255 @code{-ctrl-grab} then the modifier is the right Ctrl key (instead of Ctrl-Alt):
257 @table @key
258 @item Ctrl-Alt-f
259 @kindex Ctrl-Alt-f
260 Toggle full screen
262 @item Ctrl-Alt-+
263 @kindex Ctrl-Alt-+
264 Enlarge the screen
266 @item Ctrl-Alt--
267 @kindex Ctrl-Alt--
268 Shrink the screen
270 @item Ctrl-Alt-u
271 @kindex Ctrl-Alt-u
272 Restore the screen's un-scaled dimensions
274 @item Ctrl-Alt-n
275 @kindex Ctrl-Alt-n
276 Switch to virtual console 'n'. Standard console mappings are:
277 @table @emph
278 @item 1
279 Target system display
280 @item 2
281 Monitor
282 @item 3
283 Serial port
284 @end table
286 @item Ctrl-Alt
287 @kindex Ctrl-Alt
288 Toggle mouse and keyboard grab.
289 @end table
291 @kindex Ctrl-Up
292 @kindex Ctrl-Down
293 @kindex Ctrl-PageUp
294 @kindex Ctrl-PageDown
295 In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
296 @key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
298 @c man end
300 @node mux_keys
301 @section Keys in the character backend multiplexer
303 @c man begin OPTIONS
305 During emulation, if you are using a character backend multiplexer
306 (which is the default if you are using @option{-nographic}) then
307 several commands are available via an escape sequence. These
308 key sequences all start with an escape character, which is @key{Ctrl-a}
309 by default, but can be changed with @option{-echr}. The list below assumes
310 you're using the default.
312 @table @key
313 @item Ctrl-a h
314 @kindex Ctrl-a h
315 Print this help
316 @item Ctrl-a x
317 @kindex Ctrl-a x
318 Exit emulator
319 @item Ctrl-a s
320 @kindex Ctrl-a s
321 Save disk data back to file (if -snapshot)
322 @item Ctrl-a t
323 @kindex Ctrl-a t
324 Toggle console timestamps
325 @item Ctrl-a b
326 @kindex Ctrl-a b
327 Send break (magic sysrq in Linux)
328 @item Ctrl-a c
329 @kindex Ctrl-a c
330 Rotate between the frontends connected to the multiplexer (usually
331 this switches between the monitor and the console)
332 @item Ctrl-a Ctrl-a
333 @kindex Ctrl-a Ctrl-a
334 Send the escape character to the frontend
335 @end table
336 @c man end
338 @ignore
340 @c man begin SEEALSO
341 The HTML documentation of QEMU for more precise information and Linux
342 user mode emulator invocation.
343 @c man end
345 @c man begin AUTHOR
346 Fabrice Bellard
347 @c man end
349 @end ignore
351 @node pcsys_monitor
352 @section QEMU Monitor
353 @cindex QEMU monitor
355 The QEMU monitor is used to give complex commands to the QEMU
356 emulator. You can use it to:
358 @itemize @minus
360 @item
361 Remove or insert removable media images
362 (such as CD-ROM or floppies).
364 @item
365 Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
366 from a disk file.
368 @item Inspect the VM state without an external debugger.
370 @end itemize
372 @subsection Commands
374 The following commands are available:
376 @include qemu-monitor.texi
378 @include qemu-monitor-info.texi
380 @subsection Integer expressions
382 The monitor understands integers expressions for every integer
383 argument. You can use register names to get the value of specifics
384 CPU registers by prefixing them with @emph{$}.
386 @node disk_images
387 @section Disk Images
389 QEMU supports many disk image formats, including growable disk images
390 (their size increase as non empty sectors are written), compressed and
391 encrypted disk images.
393 @menu
394 * disk_images_quickstart::    Quick start for disk image creation
395 * disk_images_snapshot_mode:: Snapshot mode
396 * vm_snapshots::              VM snapshots
397 * qemu_img_invocation::       qemu-img Invocation
398 * qemu_nbd_invocation::       qemu-nbd Invocation
399 * disk_images_formats::       Disk image file formats
400 * host_drives::               Using host drives
401 * disk_images_fat_images::    Virtual FAT disk images
402 * disk_images_nbd::           NBD access
403 * disk_images_sheepdog::      Sheepdog disk images
404 * disk_images_iscsi::         iSCSI LUNs
405 * disk_images_gluster::       GlusterFS disk images
406 * disk_images_ssh::           Secure Shell (ssh) disk images
407 @end menu
409 @node disk_images_quickstart
410 @subsection Quick start for disk image creation
412 You can create a disk image with the command:
413 @example
414 qemu-img create myimage.img mysize
415 @end example
416 where @var{myimage.img} is the disk image filename and @var{mysize} is its
417 size in kilobytes. You can add an @code{M} suffix to give the size in
418 megabytes and a @code{G} suffix for gigabytes.
420 See @ref{qemu_img_invocation} for more information.
422 @node disk_images_snapshot_mode
423 @subsection Snapshot mode
425 If you use the option @option{-snapshot}, all disk images are
426 considered as read only. When sectors in written, they are written in
427 a temporary file created in @file{/tmp}. You can however force the
428 write back to the raw disk images by using the @code{commit} monitor
429 command (or @key{C-a s} in the serial console).
431 @node vm_snapshots
432 @subsection VM snapshots
434 VM snapshots are snapshots of the complete virtual machine including
435 CPU state, RAM, device state and the content of all the writable
436 disks. In order to use VM snapshots, you must have at least one non
437 removable and writable block device using the @code{qcow2} disk image
438 format. Normally this device is the first virtual hard drive.
440 Use the monitor command @code{savevm} to create a new VM snapshot or
441 replace an existing one. A human readable name can be assigned to each
442 snapshot in addition to its numerical ID.
444 Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
445 a VM snapshot. @code{info snapshots} lists the available snapshots
446 with their associated information:
448 @example
449 (qemu) info snapshots
450 Snapshot devices: hda
451 Snapshot list (from hda):
452 ID        TAG                 VM SIZE                DATE       VM CLOCK
453 1         start                   41M 2006-08-06 12:38:02   00:00:14.954
454 2                                 40M 2006-08-06 12:43:29   00:00:18.633
455 3         msys                    40M 2006-08-06 12:44:04   00:00:23.514
456 @end example
458 A VM snapshot is made of a VM state info (its size is shown in
459 @code{info snapshots}) and a snapshot of every writable disk image.
460 The VM state info is stored in the first @code{qcow2} non removable
461 and writable block device. The disk image snapshots are stored in
462 every disk image. The size of a snapshot in a disk image is difficult
463 to evaluate and is not shown by @code{info snapshots} because the
464 associated disk sectors are shared among all the snapshots to save
465 disk space (otherwise each snapshot would need a full copy of all the
466 disk images).
468 When using the (unrelated) @code{-snapshot} option
469 (@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
470 but they are deleted as soon as you exit QEMU.
472 VM snapshots currently have the following known limitations:
473 @itemize
474 @item
475 They cannot cope with removable devices if they are removed or
476 inserted after a snapshot is done.
477 @item
478 A few device drivers still have incomplete snapshot support so their
479 state is not saved or restored properly (in particular USB).
480 @end itemize
482 @node qemu_img_invocation
483 @subsection @code{qemu-img} Invocation
485 @include qemu-img.texi
487 @node qemu_nbd_invocation
488 @subsection @code{qemu-nbd} Invocation
490 @include qemu-nbd.texi
492 @node disk_images_formats
493 @subsection Disk image file formats
495 QEMU supports many image file formats that can be used with VMs as well as with
496 any of the tools (like @code{qemu-img}). This includes the preferred formats
497 raw and qcow2 as well as formats that are supported for compatibility with
498 older QEMU versions or other hypervisors.
500 Depending on the image format, different options can be passed to
501 @code{qemu-img create} and @code{qemu-img convert} using the @code{-o} option.
502 This section describes each format and the options that are supported for it.
504 @table @option
505 @item raw
507 Raw disk image format. This format has the advantage of
508 being simple and easily exportable to all other emulators. If your
509 file system supports @emph{holes} (for example in ext2 or ext3 on
510 Linux or NTFS on Windows), then only the written sectors will reserve
511 space. Use @code{qemu-img info} to know the real size used by the
512 image or @code{ls -ls} on Unix/Linux.
514 Supported options:
515 @table @code
516 @item preallocation
517 Preallocation mode (allowed values: @code{off}, @code{falloc}, @code{full}).
518 @code{falloc} mode preallocates space for image by calling posix_fallocate().
519 @code{full} mode preallocates space for image by writing zeros to underlying
520 storage.
521 @end table
523 @item qcow2
524 QEMU image format, the most versatile format. Use it to have smaller
525 images (useful if your filesystem does not supports holes, for example
526 on Windows), zlib based compression and support of multiple VM
527 snapshots.
529 Supported options:
530 @table @code
531 @item compat
532 Determines the qcow2 version to use. @code{compat=0.10} uses the
533 traditional image format that can be read by any QEMU since 0.10.
534 @code{compat=1.1} enables image format extensions that only QEMU 1.1 and
535 newer understand (this is the default). Amongst others, this includes
536 zero clusters, which allow efficient copy-on-read for sparse images.
538 @item backing_file
539 File name of a base image (see @option{create} subcommand)
540 @item backing_fmt
541 Image format of the base image
542 @item encryption
543 This option is deprecated and equivalent to @code{encrypt.format=aes}
545 @item encrypt.format
547 If this is set to @code{luks}, it requests that the qcow2 payload (not
548 qcow2 header) be encrypted using the LUKS format. The passphrase to
549 use to unlock the LUKS key slot is given by the @code{encrypt.key-secret}
550 parameter. LUKS encryption parameters can be tuned with the other
551 @code{encrypt.*} parameters.
553 If this is set to @code{aes}, the image is encrypted with 128-bit AES-CBC.
554 The encryption key is given by the @code{encrypt.key-secret} parameter.
555 This encryption format is considered to be flawed by modern cryptography
556 standards, suffering from a number of design problems:
558 @itemize @minus
559 @item The AES-CBC cipher is used with predictable initialization vectors based
560 on the sector number. This makes it vulnerable to chosen plaintext attacks
561 which can reveal the existence of encrypted data.
562 @item The user passphrase is directly used as the encryption key. A poorly
563 chosen or short passphrase will compromise the security of the encryption.
564 @item In the event of the passphrase being compromised there is no way to
565 change the passphrase to protect data in any qcow images. The files must
566 be cloned, using a different encryption passphrase in the new file. The
567 original file must then be securely erased using a program like shred,
568 though even this is ineffective with many modern storage technologies.
569 @end itemize
571 The use of this is no longer supported in system emulators. Support only
572 remains in the command line utilities, for the purposes of data liberation
573 and interoperability with old versions of QEMU. The @code{luks} format
574 should be used instead.
576 @item encrypt.key-secret
578 Provides the ID of a @code{secret} object that contains the passphrase
579 (@code{encrypt.format=luks}) or encryption key (@code{encrypt.format=aes}).
581 @item encrypt.cipher-alg
583 Name of the cipher algorithm and key length. Currently defaults
584 to @code{aes-256}. Only used when @code{encrypt.format=luks}.
586 @item encrypt.cipher-mode
588 Name of the encryption mode to use. Currently defaults to @code{xts}.
589 Only used when @code{encrypt.format=luks}.
591 @item encrypt.ivgen-alg
593 Name of the initialization vector generator algorithm. Currently defaults
594 to @code{plain64}. Only used when @code{encrypt.format=luks}.
596 @item encrypt.ivgen-hash-alg
598 Name of the hash algorithm to use with the initialization vector generator
599 (if required). Defaults to @code{sha256}. Only used when @code{encrypt.format=luks}.
601 @item encrypt.hash-alg
603 Name of the hash algorithm to use for PBKDF algorithm
604 Defaults to @code{sha256}. Only used when @code{encrypt.format=luks}.
606 @item encrypt.iter-time
608 Amount of time, in milliseconds, to use for PBKDF algorithm per key slot.
609 Defaults to @code{2000}. Only used when @code{encrypt.format=luks}.
611 @item cluster_size
612 Changes the qcow2 cluster size (must be between 512 and 2M). Smaller cluster
613 sizes can improve the image file size whereas larger cluster sizes generally
614 provide better performance.
616 @item preallocation
617 Preallocation mode (allowed values: @code{off}, @code{metadata}, @code{falloc},
618 @code{full}). An image with preallocated metadata is initially larger but can
619 improve performance when the image needs to grow. @code{falloc} and @code{full}
620 preallocations are like the same options of @code{raw} format, but sets up
621 metadata also.
623 @item lazy_refcounts
624 If this option is set to @code{on}, reference count updates are postponed with
625 the goal of avoiding metadata I/O and improving performance. This is
626 particularly interesting with @option{cache=writethrough} which doesn't batch
627 metadata updates. The tradeoff is that after a host crash, the reference count
628 tables must be rebuilt, i.e. on the next open an (automatic) @code{qemu-img
629 check -r all} is required, which may take some time.
631 This option can only be enabled if @code{compat=1.1} is specified.
633 @item nocow
634 If this option is set to @code{on}, it will turn off COW of the file. It's only
635 valid on btrfs, no effect on other file systems.
637 Btrfs has low performance when hosting a VM image file, even more when the guest
638 on the VM also using btrfs as file system. Turning off COW is a way to mitigate
639 this bad performance. Generally there are two ways to turn off COW on btrfs:
640 a) Disable it by mounting with nodatacow, then all newly created files will be
641 NOCOW. b) For an empty file, add the NOCOW file attribute. That's what this option
642 does.
644 Note: this option is only valid to new or empty files. If there is an existing
645 file which is COW and has data blocks already, it couldn't be changed to NOCOW
646 by setting @code{nocow=on}. One can issue @code{lsattr filename} to check if
647 the NOCOW flag is set or not (Capital 'C' is NOCOW flag).
649 @end table
651 @item qed
652 Old QEMU image format with support for backing files and compact image files
653 (when your filesystem or transport medium does not support holes).
655 When converting QED images to qcow2, you might want to consider using the
656 @code{lazy_refcounts=on} option to get a more QED-like behaviour.
658 Supported options:
659 @table @code
660 @item backing_file
661 File name of a base image (see @option{create} subcommand).
662 @item backing_fmt
663 Image file format of backing file (optional).  Useful if the format cannot be
664 autodetected because it has no header, like some vhd/vpc files.
665 @item cluster_size
666 Changes the cluster size (must be power-of-2 between 4K and 64K). Smaller
667 cluster sizes can improve the image file size whereas larger cluster sizes
668 generally provide better performance.
669 @item table_size
670 Changes the number of clusters per L1/L2 table (must be power-of-2 between 1
671 and 16).  There is normally no need to change this value but this option can be
672 used for performance benchmarking.
673 @end table
675 @item qcow
676 Old QEMU image format with support for backing files, compact image files,
677 encryption and compression.
679 Supported options:
680 @table @code
681 @item backing_file
682 File name of a base image (see @option{create} subcommand)
683 @item encryption
684 This option is deprecated and equivalent to @code{encrypt.format=aes}
686 @item encrypt.format
687 If this is set to @code{aes}, the image is encrypted with 128-bit AES-CBC.
688 The encryption key is given by the @code{encrypt.key-secret} parameter.
689 This encryption format is considered to be flawed by modern cryptography
690 standards, suffering from a number of design problems enumerated previously
691 against the @code{qcow2} image format.
693 The use of this is no longer supported in system emulators. Support only
694 remains in the command line utilities, for the purposes of data liberation
695 and interoperability with old versions of QEMU.
697 Users requiring native encryption should use the @code{qcow2} format
698 instead with @code{encrypt.format=luks}.
700 @item encrypt.key-secret
702 Provides the ID of a @code{secret} object that contains the encryption
703 key (@code{encrypt.format=aes}).
705 @end table
707 @item luks
709 LUKS v1 encryption format, compatible with Linux dm-crypt/cryptsetup
711 Supported options:
712 @table @code
714 @item key-secret
716 Provides the ID of a @code{secret} object that contains the passphrase.
718 @item cipher-alg
720 Name of the cipher algorithm and key length. Currently defaults
721 to @code{aes-256}.
723 @item cipher-mode
725 Name of the encryption mode to use. Currently defaults to @code{xts}.
727 @item ivgen-alg
729 Name of the initialization vector generator algorithm. Currently defaults
730 to @code{plain64}.
732 @item ivgen-hash-alg
734 Name of the hash algorithm to use with the initialization vector generator
735 (if required). Defaults to @code{sha256}.
737 @item hash-alg
739 Name of the hash algorithm to use for PBKDF algorithm
740 Defaults to @code{sha256}.
742 @item iter-time
744 Amount of time, in milliseconds, to use for PBKDF algorithm per key slot.
745 Defaults to @code{2000}.
747 @end table
749 @item vdi
750 VirtualBox 1.1 compatible image format.
751 Supported options:
752 @table @code
753 @item static
754 If this option is set to @code{on}, the image is created with metadata
755 preallocation.
756 @end table
758 @item vmdk
759 VMware 3 and 4 compatible image format.
761 Supported options:
762 @table @code
763 @item backing_file
764 File name of a base image (see @option{create} subcommand).
765 @item compat6
766 Create a VMDK version 6 image (instead of version 4)
767 @item hwversion
768 Specify vmdk virtual hardware version. Compat6 flag cannot be enabled
769 if hwversion is specified.
770 @item subformat
771 Specifies which VMDK subformat to use. Valid options are
772 @code{monolithicSparse} (default),
773 @code{monolithicFlat},
774 @code{twoGbMaxExtentSparse},
775 @code{twoGbMaxExtentFlat} and
776 @code{streamOptimized}.
777 @end table
779 @item vpc
780 VirtualPC compatible image format (VHD).
781 Supported options:
782 @table @code
783 @item subformat
784 Specifies which VHD subformat to use. Valid options are
785 @code{dynamic} (default) and @code{fixed}.
786 @end table
788 @item VHDX
789 Hyper-V compatible image format (VHDX).
790 Supported options:
791 @table @code
792 @item subformat
793 Specifies which VHDX subformat to use. Valid options are
794 @code{dynamic} (default) and @code{fixed}.
795 @item block_state_zero
796 Force use of payload blocks of type 'ZERO'.  Can be set to @code{on} (default)
797 or @code{off}.  When set to @code{off}, new blocks will be created as
798 @code{PAYLOAD_BLOCK_NOT_PRESENT}, which means parsers are free to return
799 arbitrary data for those blocks.  Do not set to @code{off} when using
800 @code{qemu-img convert} with @code{subformat=dynamic}.
801 @item block_size
802 Block size; min 1 MB, max 256 MB.  0 means auto-calculate based on image size.
803 @item log_size
804 Log size; min 1 MB.
805 @end table
806 @end table
808 @subsubsection Read-only formats
809 More disk image file formats are supported in a read-only mode.
810 @table @option
811 @item bochs
812 Bochs images of @code{growing} type.
813 @item cloop
814 Linux Compressed Loop image, useful only to reuse directly compressed
815 CD-ROM images present for example in the Knoppix CD-ROMs.
816 @item dmg
817 Apple disk image.
818 @item parallels
819 Parallels disk image format.
820 @end table
823 @node host_drives
824 @subsection Using host drives
826 In addition to disk image files, QEMU can directly access host
827 devices. We describe here the usage for QEMU version >= 0.8.3.
829 @subsubsection Linux
831 On Linux, you can directly use the host device filename instead of a
832 disk image filename provided you have enough privileges to access
833 it. For example, use @file{/dev/cdrom} to access to the CDROM.
835 @table @code
836 @item CD
837 You can specify a CDROM device even if no CDROM is loaded. QEMU has
838 specific code to detect CDROM insertion or removal. CDROM ejection by
839 the guest OS is supported. Currently only data CDs are supported.
840 @item Floppy
841 You can specify a floppy device even if no floppy is loaded. Floppy
842 removal is currently not detected accurately (if you change floppy
843 without doing floppy access while the floppy is not loaded, the guest
844 OS will think that the same floppy is loaded).
845 Use of the host's floppy device is deprecated, and support for it will
846 be removed in a future release.
847 @item Hard disks
848 Hard disks can be used. Normally you must specify the whole disk
849 (@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
850 see it as a partitioned disk. WARNING: unless you know what you do, it
851 is better to only make READ-ONLY accesses to the hard disk otherwise
852 you may corrupt your host data (use the @option{-snapshot} command
853 line option or modify the device permissions accordingly).
854 @end table
856 @subsubsection Windows
858 @table @code
859 @item CD
860 The preferred syntax is the drive letter (e.g. @file{d:}). The
861 alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
862 supported as an alias to the first CDROM drive.
864 Currently there is no specific code to handle removable media, so it
865 is better to use the @code{change} or @code{eject} monitor commands to
866 change or eject media.
867 @item Hard disks
868 Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
869 where @var{N} is the drive number (0 is the first hard disk).
871 WARNING: unless you know what you do, it is better to only make
872 READ-ONLY accesses to the hard disk otherwise you may corrupt your
873 host data (use the @option{-snapshot} command line so that the
874 modifications are written in a temporary file).
875 @end table
878 @subsubsection Mac OS X
880 @file{/dev/cdrom} is an alias to the first CDROM.
882 Currently there is no specific code to handle removable media, so it
883 is better to use the @code{change} or @code{eject} monitor commands to
884 change or eject media.
886 @node disk_images_fat_images
887 @subsection Virtual FAT disk images
889 QEMU can automatically create a virtual FAT disk image from a
890 directory tree. In order to use it, just type:
892 @example
893 qemu-system-i386 linux.img -hdb fat:/my_directory
894 @end example
896 Then you access access to all the files in the @file{/my_directory}
897 directory without having to copy them in a disk image or to export
898 them via SAMBA or NFS. The default access is @emph{read-only}.
900 Floppies can be emulated with the @code{:floppy:} option:
902 @example
903 qemu-system-i386 linux.img -fda fat:floppy:/my_directory
904 @end example
906 A read/write support is available for testing (beta stage) with the
907 @code{:rw:} option:
909 @example
910 qemu-system-i386 linux.img -fda fat:floppy:rw:/my_directory
911 @end example
913 What you should @emph{never} do:
914 @itemize
915 @item use non-ASCII filenames ;
916 @item use "-snapshot" together with ":rw:" ;
917 @item expect it to work when loadvm'ing ;
918 @item write to the FAT directory on the host system while accessing it with the guest system.
919 @end itemize
921 @node disk_images_nbd
922 @subsection NBD access
924 QEMU can access directly to block device exported using the Network Block Device
925 protocol.
927 @example
928 qemu-system-i386 linux.img -hdb nbd://my_nbd_server.mydomain.org:1024/
929 @end example
931 If the NBD server is located on the same host, you can use an unix socket instead
932 of an inet socket:
934 @example
935 qemu-system-i386 linux.img -hdb nbd+unix://?socket=/tmp/my_socket
936 @end example
938 In this case, the block device must be exported using qemu-nbd:
940 @example
941 qemu-nbd --socket=/tmp/my_socket my_disk.qcow2
942 @end example
944 The use of qemu-nbd allows sharing of a disk between several guests:
945 @example
946 qemu-nbd --socket=/tmp/my_socket --share=2 my_disk.qcow2
947 @end example
949 @noindent
950 and then you can use it with two guests:
951 @example
952 qemu-system-i386 linux1.img -hdb nbd+unix://?socket=/tmp/my_socket
953 qemu-system-i386 linux2.img -hdb nbd+unix://?socket=/tmp/my_socket
954 @end example
956 If the nbd-server uses named exports (supported since NBD 2.9.18, or with QEMU's
957 own embedded NBD server), you must specify an export name in the URI:
958 @example
959 qemu-system-i386 -cdrom nbd://localhost/debian-500-ppc-netinst
960 qemu-system-i386 -cdrom nbd://localhost/openSUSE-11.1-ppc-netinst
961 @end example
963 The URI syntax for NBD is supported since QEMU 1.3.  An alternative syntax is
964 also available.  Here are some example of the older syntax:
965 @example
966 qemu-system-i386 linux.img -hdb nbd:my_nbd_server.mydomain.org:1024
967 qemu-system-i386 linux2.img -hdb nbd:unix:/tmp/my_socket
968 qemu-system-i386 -cdrom nbd:localhost:10809:exportname=debian-500-ppc-netinst
969 @end example
971 @node disk_images_sheepdog
972 @subsection Sheepdog disk images
974 Sheepdog is a distributed storage system for QEMU.  It provides highly
975 available block level storage volumes that can be attached to
976 QEMU-based virtual machines.
978 You can create a Sheepdog disk image with the command:
979 @example
980 qemu-img create sheepdog:///@var{image} @var{size}
981 @end example
982 where @var{image} is the Sheepdog image name and @var{size} is its
983 size.
985 To import the existing @var{filename} to Sheepdog, you can use a
986 convert command.
987 @example
988 qemu-img convert @var{filename} sheepdog:///@var{image}
989 @end example
991 You can boot from the Sheepdog disk image with the command:
992 @example
993 qemu-system-i386 sheepdog:///@var{image}
994 @end example
996 You can also create a snapshot of the Sheepdog image like qcow2.
997 @example
998 qemu-img snapshot -c @var{tag} sheepdog:///@var{image}
999 @end example
1000 where @var{tag} is a tag name of the newly created snapshot.
1002 To boot from the Sheepdog snapshot, specify the tag name of the
1003 snapshot.
1004 @example
1005 qemu-system-i386 sheepdog:///@var{image}#@var{tag}
1006 @end example
1008 You can create a cloned image from the existing snapshot.
1009 @example
1010 qemu-img create -b sheepdog:///@var{base}#@var{tag} sheepdog:///@var{image}
1011 @end example
1012 where @var{base} is a image name of the source snapshot and @var{tag}
1013 is its tag name.
1015 You can use an unix socket instead of an inet socket:
1017 @example
1018 qemu-system-i386 sheepdog+unix:///@var{image}?socket=@var{path}
1019 @end example
1021 If the Sheepdog daemon doesn't run on the local host, you need to
1022 specify one of the Sheepdog servers to connect to.
1023 @example
1024 qemu-img create sheepdog://@var{hostname}:@var{port}/@var{image} @var{size}
1025 qemu-system-i386 sheepdog://@var{hostname}:@var{port}/@var{image}
1026 @end example
1028 @node disk_images_iscsi
1029 @subsection iSCSI LUNs
1031 iSCSI is a popular protocol used to access SCSI devices across a computer
1032 network.
1034 There are two different ways iSCSI devices can be used by QEMU.
1036 The first method is to mount the iSCSI LUN on the host, and make it appear as
1037 any other ordinary SCSI device on the host and then to access this device as a
1038 /dev/sd device from QEMU. How to do this differs between host OSes.
1040 The second method involves using the iSCSI initiator that is built into
1041 QEMU. This provides a mechanism that works the same way regardless of which
1042 host OS you are running QEMU on. This section will describe this second method
1043 of using iSCSI together with QEMU.
1045 In QEMU, iSCSI devices are described using special iSCSI URLs
1047 @example
1048 URL syntax:
1049 iscsi://[<username>[%<password>]@@]<host>[:<port>]/<target-iqn-name>/<lun>
1050 @end example
1052 Username and password are optional and only used if your target is set up
1053 using CHAP authentication for access control.
1054 Alternatively the username and password can also be set via environment
1055 variables to have these not show up in the process list
1057 @example
1058 export LIBISCSI_CHAP_USERNAME=<username>
1059 export LIBISCSI_CHAP_PASSWORD=<password>
1060 iscsi://<host>/<target-iqn-name>/<lun>
1061 @end example
1063 Various session related parameters can be set via special options, either
1064 in a configuration file provided via '-readconfig' or directly on the
1065 command line.
1067 If the initiator-name is not specified qemu will use a default name
1068 of 'iqn.2008-11.org.linux-kvm[:<name>'] where <name> is the name of the
1069 virtual machine.
1072 @example
1073 Setting a specific initiator name to use when logging in to the target
1074 -iscsi initiator-name=iqn.qemu.test:my-initiator
1075 @end example
1077 @example
1078 Controlling which type of header digest to negotiate with the target
1079 -iscsi header-digest=CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
1080 @end example
1082 These can also be set via a configuration file
1083 @example
1084 [iscsi]
1085   user = "CHAP username"
1086   password = "CHAP password"
1087   initiator-name = "iqn.qemu.test:my-initiator"
1088   # header digest is one of CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
1089   header-digest = "CRC32C"
1090 @end example
1093 Setting the target name allows different options for different targets
1094 @example
1095 [iscsi "iqn.target.name"]
1096   user = "CHAP username"
1097   password = "CHAP password"
1098   initiator-name = "iqn.qemu.test:my-initiator"
1099   # header digest is one of CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
1100   header-digest = "CRC32C"
1101 @end example
1104 Howto use a configuration file to set iSCSI configuration options:
1105 @example
1106 cat >iscsi.conf <<EOF
1107 [iscsi]
1108   user = "me"
1109   password = "my password"
1110   initiator-name = "iqn.qemu.test:my-initiator"
1111   header-digest = "CRC32C"
1114 qemu-system-i386 -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
1115     -readconfig iscsi.conf
1116 @end example
1119 Howto set up a simple iSCSI target on loopback and accessing it via QEMU:
1120 @example
1121 This example shows how to set up an iSCSI target with one CDROM and one DISK
1122 using the Linux STGT software target. This target is available on Red Hat based
1123 systems as the package 'scsi-target-utils'.
1125 tgtd --iscsi portal=127.0.0.1:3260
1126 tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.qemu.test
1127 tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 \
1128     -b /IMAGES/disk.img --device-type=disk
1129 tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 2 \
1130     -b /IMAGES/cd.iso --device-type=cd
1131 tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
1133 qemu-system-i386 -iscsi initiator-name=iqn.qemu.test:my-initiator \
1134     -boot d -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
1135     -cdrom iscsi://127.0.0.1/iqn.qemu.test/2
1136 @end example
1138 @node disk_images_gluster
1139 @subsection GlusterFS disk images
1141 GlusterFS is a user space distributed file system.
1143 You can boot from the GlusterFS disk image with the command:
1144 @example
1145 URI:
1146 qemu-system-x86_64 -drive file=gluster[+@var{type}]://[@var{host}[:@var{port}]]/@var{volume}/@var{path}
1147                                [?socket=...][,file.debug=9][,file.logfile=...]
1149 JSON:
1150 qemu-system-x86_64 'json:@{"driver":"qcow2",
1151                            "file":@{"driver":"gluster",
1152                                     "volume":"testvol","path":"a.img","debug":9,"logfile":"...",
1153                                     "server":[@{"type":"tcp","host":"...","port":"..."@},
1154                                               @{"type":"unix","socket":"..."@}]@}@}'
1155 @end example
1157 @var{gluster} is the protocol.
1159 @var{type} specifies the transport type used to connect to gluster
1160 management daemon (glusterd). Valid transport types are
1161 tcp and unix. In the URI form, if a transport type isn't specified,
1162 then tcp type is assumed.
1164 @var{host} specifies the server where the volume file specification for
1165 the given volume resides. This can be either a hostname or an ipv4 address.
1166 If transport type is unix, then @var{host} field should not be specified.
1167 Instead @var{socket} field needs to be populated with the path to unix domain
1168 socket.
1170 @var{port} is the port number on which glusterd is listening. This is optional
1171 and if not specified, it defaults to port 24007. If the transport type is unix,
1172 then @var{port} should not be specified.
1174 @var{volume} is the name of the gluster volume which contains the disk image.
1176 @var{path} is the path to the actual disk image that resides on gluster volume.
1178 @var{debug} is the logging level of the gluster protocol driver. Debug levels
1179 are 0-9, with 9 being the most verbose, and 0 representing no debugging output.
1180 The default level is 4. The current logging levels defined in the gluster source
1181 are 0 - None, 1 - Emergency, 2 - Alert, 3 - Critical, 4 - Error, 5 - Warning,
1182 6 - Notice, 7 - Info, 8 - Debug, 9 - Trace
1184 @var{logfile} is a commandline option to mention log file path which helps in
1185 logging to the specified file and also help in persisting the gfapi logs. The
1186 default is stderr.
1191 You can create a GlusterFS disk image with the command:
1192 @example
1193 qemu-img create gluster://@var{host}/@var{volume}/@var{path} @var{size}
1194 @end example
1196 Examples
1197 @example
1198 qemu-system-x86_64 -drive file=gluster://1.2.3.4/testvol/a.img
1199 qemu-system-x86_64 -drive file=gluster+tcp://1.2.3.4/testvol/a.img
1200 qemu-system-x86_64 -drive file=gluster+tcp://1.2.3.4:24007/testvol/dir/a.img
1201 qemu-system-x86_64 -drive file=gluster+tcp://[1:2:3:4:5:6:7:8]/testvol/dir/a.img
1202 qemu-system-x86_64 -drive file=gluster+tcp://[1:2:3:4:5:6:7:8]:24007/testvol/dir/a.img
1203 qemu-system-x86_64 -drive file=gluster+tcp://server.domain.com:24007/testvol/dir/a.img
1204 qemu-system-x86_64 -drive file=gluster+unix:///testvol/dir/a.img?socket=/tmp/glusterd.socket
1205 qemu-system-x86_64 -drive file=gluster+rdma://1.2.3.4:24007/testvol/a.img
1206 qemu-system-x86_64 -drive file=gluster://1.2.3.4/testvol/a.img,file.debug=9,file.logfile=/var/log/qemu-gluster.log
1207 qemu-system-x86_64 'json:@{"driver":"qcow2",
1208                            "file":@{"driver":"gluster",
1209                                     "volume":"testvol","path":"a.img",
1210                                     "debug":9,"logfile":"/var/log/qemu-gluster.log",
1211                                     "server":[@{"type":"tcp","host":"1.2.3.4","port":24007@},
1212                                               @{"type":"unix","socket":"/var/run/glusterd.socket"@}]@}@}'
1213 qemu-system-x86_64 -drive driver=qcow2,file.driver=gluster,file.volume=testvol,file.path=/path/a.img,
1214                                        file.debug=9,file.logfile=/var/log/qemu-gluster.log,
1215                                        file.server.0.type=tcp,file.server.0.host=1.2.3.4,file.server.0.port=24007,
1216                                        file.server.1.type=unix,file.server.1.socket=/var/run/glusterd.socket
1217 @end example
1219 @node disk_images_ssh
1220 @subsection Secure Shell (ssh) disk images
1222 You can access disk images located on a remote ssh server
1223 by using the ssh protocol:
1225 @example
1226 qemu-system-x86_64 -drive file=ssh://[@var{user}@@]@var{server}[:@var{port}]/@var{path}[?host_key_check=@var{host_key_check}]
1227 @end example
1229 Alternative syntax using properties:
1231 @example
1232 qemu-system-x86_64 -drive file.driver=ssh[,file.user=@var{user}],file.host=@var{server}[,file.port=@var{port}],file.path=@var{path}[,file.host_key_check=@var{host_key_check}]
1233 @end example
1235 @var{ssh} is the protocol.
1237 @var{user} is the remote user.  If not specified, then the local
1238 username is tried.
1240 @var{server} specifies the remote ssh server.  Any ssh server can be
1241 used, but it must implement the sftp-server protocol.  Most Unix/Linux
1242 systems should work without requiring any extra configuration.
1244 @var{port} is the port number on which sshd is listening.  By default
1245 the standard ssh port (22) is used.
1247 @var{path} is the path to the disk image.
1249 The optional @var{host_key_check} parameter controls how the remote
1250 host's key is checked.  The default is @code{yes} which means to use
1251 the local @file{.ssh/known_hosts} file.  Setting this to @code{no}
1252 turns off known-hosts checking.  Or you can check that the host key
1253 matches a specific fingerprint:
1254 @code{host_key_check=md5:78:45:8e:14:57:4f:d5:45:83:0a:0e:f3:49:82:c9:c8}
1255 (@code{sha1:} can also be used as a prefix, but note that OpenSSH
1256 tools only use MD5 to print fingerprints).
1258 Currently authentication must be done using ssh-agent.  Other
1259 authentication methods may be supported in future.
1261 Note: Many ssh servers do not support an @code{fsync}-style operation.
1262 The ssh driver cannot guarantee that disk flush requests are
1263 obeyed, and this causes a risk of disk corruption if the remote
1264 server or network goes down during writes.  The driver will
1265 print a warning when @code{fsync} is not supported:
1267 warning: ssh server @code{ssh.example.com:22} does not support fsync
1269 With sufficiently new versions of libssh2 and OpenSSH, @code{fsync} is
1270 supported.
1272 @node pcsys_network
1273 @section Network emulation
1275 QEMU can simulate several network cards (PCI or ISA cards on the PC
1276 target) and can connect them to an arbitrary number of Virtual Local
1277 Area Networks (VLANs). Host TAP devices can be connected to any QEMU
1278 VLAN. VLAN can be connected between separate instances of QEMU to
1279 simulate large networks. For simpler usage, a non privileged user mode
1280 network stack can replace the TAP device to have a basic network
1281 connection.
1283 @subsection VLANs
1285 QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
1286 connection between several network devices. These devices can be for
1287 example QEMU virtual Ethernet cards or virtual Host ethernet devices
1288 (TAP devices).
1290 @subsection Using TAP network interfaces
1292 This is the standard way to connect QEMU to a real network. QEMU adds
1293 a virtual network device on your host (called @code{tapN}), and you
1294 can then configure it as if it was a real ethernet card.
1296 @subsubsection Linux host
1298 As an example, you can download the @file{linux-test-xxx.tar.gz}
1299 archive and copy the script @file{qemu-ifup} in @file{/etc} and
1300 configure properly @code{sudo} so that the command @code{ifconfig}
1301 contained in @file{qemu-ifup} can be executed as root. You must verify
1302 that your host kernel supports the TAP network interfaces: the
1303 device @file{/dev/net/tun} must be present.
1305 See @ref{sec_invocation} to have examples of command lines using the
1306 TAP network interfaces.
1308 @subsubsection Windows host
1310 There is a virtual ethernet driver for Windows 2000/XP systems, called
1311 TAP-Win32. But it is not included in standard QEMU for Windows,
1312 so you will need to get it separately. It is part of OpenVPN package,
1313 so download OpenVPN from : @url{http://openvpn.net/}.
1315 @subsection Using the user mode network stack
1317 By using the option @option{-net user} (default configuration if no
1318 @option{-net} option is specified), QEMU uses a completely user mode
1319 network stack (you don't need root privilege to use the virtual
1320 network). The virtual network configuration is the following:
1322 @example
1324          QEMU VLAN      <------>  Firewall/DHCP server <-----> Internet
1325                            |          (10.0.2.2)
1326                            |
1327                            ---->  DNS server (10.0.2.3)
1328                            |
1329                            ---->  SMB server (10.0.2.4)
1330 @end example
1332 The QEMU VM behaves as if it was behind a firewall which blocks all
1333 incoming connections. You can use a DHCP client to automatically
1334 configure the network in the QEMU VM. The DHCP server assign addresses
1335 to the hosts starting from 10.0.2.15.
1337 In order to check that the user mode network is working, you can ping
1338 the address 10.0.2.2 and verify that you got an address in the range
1339 10.0.2.x from the QEMU virtual DHCP server.
1341 Note that ICMP traffic in general does not work with user mode networking.
1342 @code{ping}, aka. ICMP echo, to the local router (10.0.2.2) shall work,
1343 however. If you're using QEMU on Linux >= 3.0, it can use unprivileged ICMP
1344 ping sockets to allow @code{ping} to the Internet. The host admin has to set
1345 the ping_group_range in order to grant access to those sockets. To allow ping
1346 for GID 100 (usually users group):
1348 @example
1349 echo 100 100 > /proc/sys/net/ipv4/ping_group_range
1350 @end example
1352 When using the built-in TFTP server, the router is also the TFTP
1353 server.
1355 When using the @option{'-netdev user,hostfwd=...'} option, TCP or UDP
1356 connections can be redirected from the host to the guest. It allows for
1357 example to redirect X11, telnet or SSH connections.
1359 @subsection Connecting VLANs between QEMU instances
1361 Using the @option{-net socket} option, it is possible to make VLANs
1362 that span several QEMU instances. See @ref{sec_invocation} to have a
1363 basic example.
1365 @node pcsys_other_devs
1366 @section Other Devices
1368 @subsection Inter-VM Shared Memory device
1370 On Linux hosts, a shared memory device is available.  The basic syntax
1373 @example
1374 qemu-system-x86_64 -device ivshmem-plain,memdev=@var{hostmem}
1375 @end example
1377 where @var{hostmem} names a host memory backend.  For a POSIX shared
1378 memory backend, use something like
1380 @example
1381 -object memory-backend-file,size=1M,share,mem-path=/dev/shm/ivshmem,id=@var{hostmem}
1382 @end example
1384 If desired, interrupts can be sent between guest VMs accessing the same shared
1385 memory region.  Interrupt support requires using a shared memory server and
1386 using a chardev socket to connect to it.  The code for the shared memory server
1387 is qemu.git/contrib/ivshmem-server.  An example syntax when using the shared
1388 memory server is:
1390 @example
1391 # First start the ivshmem server once and for all
1392 ivshmem-server -p @var{pidfile} -S @var{path} -m @var{shm-name} -l @var{shm-size} -n @var{vectors}
1394 # Then start your qemu instances with matching arguments
1395 qemu-system-x86_64 -device ivshmem-doorbell,vectors=@var{vectors},chardev=@var{id}
1396                  -chardev socket,path=@var{path},id=@var{id}
1397 @end example
1399 When using the server, the guest will be assigned a VM ID (>=0) that allows guests
1400 using the same server to communicate via interrupts.  Guests can read their
1401 VM ID from a device register (see ivshmem-spec.txt).
1403 @subsubsection Migration with ivshmem
1405 With device property @option{master=on}, the guest will copy the shared
1406 memory on migration to the destination host.  With @option{master=off},
1407 the guest will not be able to migrate with the device attached.  In the
1408 latter case, the device should be detached and then reattached after
1409 migration using the PCI hotplug support.
1411 At most one of the devices sharing the same memory can be master.  The
1412 master must complete migration before you plug back the other devices.
1414 @subsubsection ivshmem and hugepages
1416 Instead of specifying the <shm size> using POSIX shm, you may specify
1417 a memory backend that has hugepage support:
1419 @example
1420 qemu-system-x86_64 -object memory-backend-file,size=1G,mem-path=/dev/hugepages/my-shmem-file,share,id=mb1
1421                  -device ivshmem-plain,memdev=mb1
1422 @end example
1424 ivshmem-server also supports hugepages mount points with the
1425 @option{-m} memory path argument.
1427 @node direct_linux_boot
1428 @section Direct Linux Boot
1430 This section explains how to launch a Linux kernel inside QEMU without
1431 having to make a full bootable image. It is very useful for fast Linux
1432 kernel testing.
1434 The syntax is:
1435 @example
1436 qemu-system-i386 -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1437 @end example
1439 Use @option{-kernel} to provide the Linux kernel image and
1440 @option{-append} to give the kernel command line arguments. The
1441 @option{-initrd} option can be used to provide an INITRD image.
1443 When using the direct Linux boot, a disk image for the first hard disk
1444 @file{hda} is required because its boot sector is used to launch the
1445 Linux kernel.
1447 If you do not need graphical output, you can disable it and redirect
1448 the virtual serial port and the QEMU monitor to the console with the
1449 @option{-nographic} option. The typical command line is:
1450 @example
1451 qemu-system-i386 -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1452                  -append "root=/dev/hda console=ttyS0" -nographic
1453 @end example
1455 Use @key{Ctrl-a c} to switch between the serial console and the
1456 monitor (@pxref{pcsys_keys}).
1458 @node pcsys_usb
1459 @section USB emulation
1461 QEMU can emulate a PCI UHCI, OHCI, EHCI or XHCI USB controller. You can
1462 plug virtual USB devices or real host USB devices (only works with certain
1463 host operating systems). QEMU will automatically create and connect virtual
1464 USB hubs as necessary to connect multiple USB devices.
1466 @menu
1467 * usb_devices::
1468 * host_usb_devices::
1469 @end menu
1470 @node usb_devices
1471 @subsection Connecting USB devices
1473 USB devices can be connected with the @option{-device usb-...} command line
1474 option or the @code{device_add} monitor command. Available devices are:
1476 @table @code
1477 @item usb-mouse
1478 Virtual Mouse.  This will override the PS/2 mouse emulation when activated.
1479 @item usb-tablet
1480 Pointer device that uses absolute coordinates (like a touchscreen).
1481 This means QEMU is able to report the mouse position without having
1482 to grab the mouse.  Also overrides the PS/2 mouse emulation when activated.
1483 @item usb-storage,drive=@var{drive_id}
1484 Mass storage device backed by @var{drive_id} (@pxref{disk_images})
1485 @item usb-uas
1486 USB attached SCSI device, see
1487 @url{http://git.qemu.org/?p=qemu.git;a=blob_plain;f=docs/usb-storage.txt,usb-storage.txt}
1488 for details
1489 @item usb-bot
1490 Bulk-only transport storage device, see
1491 @url{http://git.qemu.org/?p=qemu.git;a=blob_plain;f=docs/usb-storage.txt,usb-storage.txt}
1492 for details here, too
1493 @item usb-mtp,x-root=@var{dir}
1494 Media transfer protocol device, using @var{dir} as root of the file tree
1495 that is presented to the guest.
1496 @item usb-host,hostbus=@var{bus},hostaddr=@var{addr}
1497 Pass through the host device identified by @var{bus} and @var{addr}
1498 @item usb-host,vendorid=@var{vendor},productid=@var{product}
1499 Pass through the host device identified by @var{vendor} and @var{product} ID
1500 @item usb-wacom-tablet
1501 Virtual Wacom PenPartner tablet.  This device is similar to the @code{tablet}
1502 above but it can be used with the tslib library because in addition to touch
1503 coordinates it reports touch pressure.
1504 @item usb-kbd
1505 Standard USB keyboard.  Will override the PS/2 keyboard (if present).
1506 @item usb-serial,chardev=@var{id}
1507 Serial converter. This emulates an FTDI FT232BM chip connected to host character
1508 device @var{id}.
1509 @item usb-braille,chardev=@var{id}
1510 Braille device.  This will use BrlAPI to display the braille output on a real
1511 or fake device referenced by @var{id}.
1512 @item usb-net[,netdev=@var{id}]
1513 Network adapter that supports CDC ethernet and RNDIS protocols.  @var{id}
1514 specifies a netdev defined with @code{-netdev @dots{},id=@var{id}}.
1515 For instance, user-mode networking can be used with
1516 @example
1517 qemu-system-i386 [...] -netdev user,id=net0 -device usb-net,netdev=net0
1518 @end example
1519 @item usb-ccid
1520 Smartcard reader device
1521 @item usb-audio
1522 USB audio device
1523 @item usb-bt-dongle
1524 Bluetooth dongle for the transport layer of HCI. It is connected to HCI
1525 scatternet 0 by default (corresponds to @code{-bt hci,vlan=0}).
1526 Note that the syntax for the @code{-device usb-bt-dongle} option is not as
1527 useful yet as it was with the legacy @code{-usbdevice} option. So to
1528 configure an USB bluetooth device, you might need to use
1529 "@code{-usbdevice bt}[:@var{hci-type}]" instead. This configures a
1530 bluetooth dongle whose type is specified in the same format as with
1531 the @option{-bt hci} option, @pxref{bt-hcis,,allowed HCI types}.  If
1532 no type is given, the HCI logic corresponds to @code{-bt hci,vlan=0}.
1533 This USB device implements the USB Transport Layer of HCI.  Example
1534 usage:
1535 @example
1536 @command{qemu-system-i386} [...@var{OPTIONS}...] @option{-usbdevice} bt:hci,vlan=3 @option{-bt} device:keyboard,vlan=3
1537 @end example
1538 @end table
1540 @node host_usb_devices
1541 @subsection Using host USB devices on a Linux host
1543 WARNING: this is an experimental feature. QEMU will slow down when
1544 using it. USB devices requiring real time streaming (i.e. USB Video
1545 Cameras) are not supported yet.
1547 @enumerate
1548 @item If you use an early Linux 2.4 kernel, verify that no Linux driver
1549 is actually using the USB device. A simple way to do that is simply to
1550 disable the corresponding kernel module by renaming it from @file{mydriver.o}
1551 to @file{mydriver.o.disabled}.
1553 @item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1554 @example
1555 ls /proc/bus/usb
1556 001  devices  drivers
1557 @end example
1559 @item Since only root can access to the USB devices directly, you can either launch QEMU as root or change the permissions of the USB devices you want to use. For testing, the following suffices:
1560 @example
1561 chown -R myuid /proc/bus/usb
1562 @end example
1564 @item Launch QEMU and do in the monitor:
1565 @example
1566 info usbhost
1567   Device 1.2, speed 480 Mb/s
1568     Class 00: USB device 1234:5678, USB DISK
1569 @end example
1570 You should see the list of the devices you can use (Never try to use
1571 hubs, it won't work).
1573 @item Add the device in QEMU by using:
1574 @example
1575 device_add usb-host,vendorid=0x1234,productid=0x5678
1576 @end example
1578 Normally the guest OS should report that a new USB device is plugged.
1579 You can use the option @option{-device usb-host,...} to do the same.
1581 @item Now you can try to use the host USB device in QEMU.
1583 @end enumerate
1585 When relaunching QEMU, you may have to unplug and plug again the USB
1586 device to make it work again (this is a bug).
1588 @node vnc_security
1589 @section VNC security
1591 The VNC server capability provides access to the graphical console
1592 of the guest VM across the network. This has a number of security
1593 considerations depending on the deployment scenarios.
1595 @menu
1596 * vnc_sec_none::
1597 * vnc_sec_password::
1598 * vnc_sec_certificate::
1599 * vnc_sec_certificate_verify::
1600 * vnc_sec_certificate_pw::
1601 * vnc_sec_sasl::
1602 * vnc_sec_certificate_sasl::
1603 * vnc_generate_cert::
1604 * vnc_setup_sasl::
1605 @end menu
1606 @node vnc_sec_none
1607 @subsection Without passwords
1609 The simplest VNC server setup does not include any form of authentication.
1610 For this setup it is recommended to restrict it to listen on a UNIX domain
1611 socket only. For example
1613 @example
1614 qemu-system-i386 [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
1615 @end example
1617 This ensures that only users on local box with read/write access to that
1618 path can access the VNC server. To securely access the VNC server from a
1619 remote machine, a combination of netcat+ssh can be used to provide a secure
1620 tunnel.
1622 @node vnc_sec_password
1623 @subsection With passwords
1625 The VNC protocol has limited support for password based authentication. Since
1626 the protocol limits passwords to 8 characters it should not be considered
1627 to provide high security. The password can be fairly easily brute-forced by
1628 a client making repeat connections. For this reason, a VNC server using password
1629 authentication should be restricted to only listen on the loopback interface
1630 or UNIX domain sockets. Password authentication is not supported when operating
1631 in FIPS 140-2 compliance mode as it requires the use of the DES cipher. Password
1632 authentication is requested with the @code{password} option, and then once QEMU
1633 is running the password is set with the monitor. Until the monitor is used to
1634 set the password all clients will be rejected.
1636 @example
1637 qemu-system-i386 [...OPTIONS...] -vnc :1,password -monitor stdio
1638 (qemu) change vnc password
1639 Password: ********
1640 (qemu)
1641 @end example
1643 @node vnc_sec_certificate
1644 @subsection With x509 certificates
1646 The QEMU VNC server also implements the VeNCrypt extension allowing use of
1647 TLS for encryption of the session, and x509 certificates for authentication.
1648 The use of x509 certificates is strongly recommended, because TLS on its
1649 own is susceptible to man-in-the-middle attacks. Basic x509 certificate
1650 support provides a secure session, but no authentication. This allows any
1651 client to connect, and provides an encrypted session.
1653 @example
1654 qemu-system-i386 [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
1655 @end example
1657 In the above example @code{/etc/pki/qemu} should contain at least three files,
1658 @code{ca-cert.pem}, @code{server-cert.pem} and @code{server-key.pem}. Unprivileged
1659 users will want to use a private directory, for example @code{$HOME/.pki/qemu}.
1660 NB the @code{server-key.pem} file should be protected with file mode 0600 to
1661 only be readable by the user owning it.
1663 @node vnc_sec_certificate_verify
1664 @subsection With x509 certificates and client verification
1666 Certificates can also provide a means to authenticate the client connecting.
1667 The server will request that the client provide a certificate, which it will
1668 then validate against the CA certificate. This is a good choice if deploying
1669 in an environment with a private internal certificate authority.
1671 @example
1672 qemu-system-i386 [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
1673 @end example
1676 @node vnc_sec_certificate_pw
1677 @subsection With x509 certificates, client verification and passwords
1679 Finally, the previous method can be combined with VNC password authentication
1680 to provide two layers of authentication for clients.
1682 @example
1683 qemu-system-i386 [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
1684 (qemu) change vnc password
1685 Password: ********
1686 (qemu)
1687 @end example
1690 @node vnc_sec_sasl
1691 @subsection With SASL authentication
1693 The SASL authentication method is a VNC extension, that provides an
1694 easily extendable, pluggable authentication method. This allows for
1695 integration with a wide range of authentication mechanisms, such as
1696 PAM, GSSAPI/Kerberos, LDAP, SQL databases, one-time keys and more.
1697 The strength of the authentication depends on the exact mechanism
1698 configured. If the chosen mechanism also provides a SSF layer, then
1699 it will encrypt the datastream as well.
1701 Refer to the later docs on how to choose the exact SASL mechanism
1702 used for authentication, but assuming use of one supporting SSF,
1703 then QEMU can be launched with:
1705 @example
1706 qemu-system-i386 [...OPTIONS...] -vnc :1,sasl -monitor stdio
1707 @end example
1709 @node vnc_sec_certificate_sasl
1710 @subsection With x509 certificates and SASL authentication
1712 If the desired SASL authentication mechanism does not supported
1713 SSF layers, then it is strongly advised to run it in combination
1714 with TLS and x509 certificates. This provides securely encrypted
1715 data stream, avoiding risk of compromising of the security
1716 credentials. This can be enabled, by combining the 'sasl' option
1717 with the aforementioned TLS + x509 options:
1719 @example
1720 qemu-system-i386 [...OPTIONS...] -vnc :1,tls,x509,sasl -monitor stdio
1721 @end example
1724 @node vnc_generate_cert
1725 @subsection Generating certificates for VNC
1727 The GNU TLS packages provides a command called @code{certtool} which can
1728 be used to generate certificates and keys in PEM format. At a minimum it
1729 is necessary to setup a certificate authority, and issue certificates to
1730 each server. If using certificates for authentication, then each client
1731 will also need to be issued a certificate. The recommendation is for the
1732 server to keep its certificates in either @code{/etc/pki/qemu} or for
1733 unprivileged users in @code{$HOME/.pki/qemu}.
1735 @menu
1736 * vnc_generate_ca::
1737 * vnc_generate_server::
1738 * vnc_generate_client::
1739 @end menu
1740 @node vnc_generate_ca
1741 @subsubsection Setup the Certificate Authority
1743 This step only needs to be performed once per organization / organizational
1744 unit. First the CA needs a private key. This key must be kept VERY secret
1745 and secure. If this key is compromised the entire trust chain of the certificates
1746 issued with it is lost.
1748 @example
1749 # certtool --generate-privkey > ca-key.pem
1750 @end example
1752 A CA needs to have a public certificate. For simplicity it can be a self-signed
1753 certificate, or one issue by a commercial certificate issuing authority. To
1754 generate a self-signed certificate requires one core piece of information, the
1755 name of the organization.
1757 @example
1758 # cat > ca.info <<EOF
1759 cn = Name of your organization
1761 cert_signing_key
1763 # certtool --generate-self-signed \
1764            --load-privkey ca-key.pem
1765            --template ca.info \
1766            --outfile ca-cert.pem
1767 @end example
1769 The @code{ca-cert.pem} file should be copied to all servers and clients wishing to utilize
1770 TLS support in the VNC server. The @code{ca-key.pem} must not be disclosed/copied at all.
1772 @node vnc_generate_server
1773 @subsubsection Issuing server certificates
1775 Each server (or host) needs to be issued with a key and certificate. When connecting
1776 the certificate is sent to the client which validates it against the CA certificate.
1777 The core piece of information for a server certificate is the hostname. This should
1778 be the fully qualified hostname that the client will connect with, since the client
1779 will typically also verify the hostname in the certificate. On the host holding the
1780 secure CA private key:
1782 @example
1783 # cat > server.info <<EOF
1784 organization = Name  of your organization
1785 cn = server.foo.example.com
1786 tls_www_server
1787 encryption_key
1788 signing_key
1790 # certtool --generate-privkey > server-key.pem
1791 # certtool --generate-certificate \
1792            --load-ca-certificate ca-cert.pem \
1793            --load-ca-privkey ca-key.pem \
1794            --load-privkey server-key.pem \
1795            --template server.info \
1796            --outfile server-cert.pem
1797 @end example
1799 The @code{server-key.pem} and @code{server-cert.pem} files should now be securely copied
1800 to the server for which they were generated. The @code{server-key.pem} is security
1801 sensitive and should be kept protected with file mode 0600 to prevent disclosure.
1803 @node vnc_generate_client
1804 @subsubsection Issuing client certificates
1806 If the QEMU VNC server is to use the @code{x509verify} option to validate client
1807 certificates as its authentication mechanism, each client also needs to be issued
1808 a certificate. The client certificate contains enough metadata to uniquely identify
1809 the client, typically organization, state, city, building, etc. On the host holding
1810 the secure CA private key:
1812 @example
1813 # cat > client.info <<EOF
1814 country = GB
1815 state = London
1816 locality = London
1817 organization = Name of your organization
1818 cn = client.foo.example.com
1819 tls_www_client
1820 encryption_key
1821 signing_key
1823 # certtool --generate-privkey > client-key.pem
1824 # certtool --generate-certificate \
1825            --load-ca-certificate ca-cert.pem \
1826            --load-ca-privkey ca-key.pem \
1827            --load-privkey client-key.pem \
1828            --template client.info \
1829            --outfile client-cert.pem
1830 @end example
1832 The @code{client-key.pem} and @code{client-cert.pem} files should now be securely
1833 copied to the client for which they were generated.
1836 @node vnc_setup_sasl
1838 @subsection Configuring SASL mechanisms
1840 The following documentation assumes use of the Cyrus SASL implementation on a
1841 Linux host, but the principals should apply to any other SASL impl. When SASL
1842 is enabled, the mechanism configuration will be loaded from system default
1843 SASL service config /etc/sasl2/qemu.conf. If running QEMU as an
1844 unprivileged user, an environment variable SASL_CONF_PATH can be used
1845 to make it search alternate locations for the service config.
1847 If the TLS option is enabled for VNC, then it will provide session encryption,
1848 otherwise the SASL mechanism will have to provide encryption. In the latter
1849 case the list of possible plugins that can be used is drastically reduced. In
1850 fact only the GSSAPI SASL mechanism provides an acceptable level of security
1851 by modern standards. Previous versions of QEMU referred to the DIGEST-MD5
1852 mechanism, however, it has multiple serious flaws described in detail in
1853 RFC 6331 and thus should never be used any more. The SCRAM-SHA-1 mechanism
1854 provides a simple username/password auth facility similar to DIGEST-MD5, but
1855 does not support session encryption, so can only be used in combination with
1856 TLS.
1858 When not using TLS the recommended configuration is
1860 @example
1861 mech_list: gssapi
1862 keytab: /etc/qemu/krb5.tab
1863 @end example
1865 This says to use the 'GSSAPI' mechanism with the Kerberos v5 protocol, with
1866 the server principal stored in /etc/qemu/krb5.tab. For this to work the
1867 administrator of your KDC must generate a Kerberos principal for the server,
1868 with a name of 'qemu/somehost.example.com@@EXAMPLE.COM' replacing
1869 'somehost.example.com' with the fully qualified host name of the machine
1870 running QEMU, and 'EXAMPLE.COM' with the Kerberos Realm.
1872 When using TLS, if username+password authentication is desired, then a
1873 reasonable configuration is
1875 @example
1876 mech_list: scram-sha-1
1877 sasldb_path: /etc/qemu/passwd.db
1878 @end example
1880 The saslpasswd2 program can be used to populate the passwd.db file with
1881 accounts.
1883 Other SASL configurations will be left as an exercise for the reader. Note that
1884 all mechanisms except GSSAPI, should be combined with use of TLS to ensure a
1885 secure data channel.
1887 @node gdb_usage
1888 @section GDB usage
1890 QEMU has a primitive support to work with gdb, so that you can do
1891 'Ctrl-C' while the virtual machine is running and inspect its state.
1893 In order to use gdb, launch QEMU with the '-s' option. It will wait for a
1894 gdb connection:
1895 @example
1896 qemu-system-i386 -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1897                     -append "root=/dev/hda"
1898 Connected to host network interface: tun0
1899 Waiting gdb connection on port 1234
1900 @end example
1902 Then launch gdb on the 'vmlinux' executable:
1903 @example
1904 > gdb vmlinux
1905 @end example
1907 In gdb, connect to QEMU:
1908 @example
1909 (gdb) target remote localhost:1234
1910 @end example
1912 Then you can use gdb normally. For example, type 'c' to launch the kernel:
1913 @example
1914 (gdb) c
1915 @end example
1917 Here are some useful tips in order to use gdb on system code:
1919 @enumerate
1920 @item
1921 Use @code{info reg} to display all the CPU registers.
1922 @item
1923 Use @code{x/10i $eip} to display the code at the PC position.
1924 @item
1925 Use @code{set architecture i8086} to dump 16 bit code. Then use
1926 @code{x/10i $cs*16+$eip} to dump the code at the PC position.
1927 @end enumerate
1929 Advanced debugging options:
1931 The default single stepping behavior is step with the IRQs and timer service routines off.  It is set this way because when gdb executes a single step it expects to advance beyond the current instruction.  With the IRQs and timer service routines on, a single step might jump into the one of the interrupt or exception vectors instead of executing the current instruction. This means you may hit the same breakpoint a number of times before executing the instruction gdb wants to have executed.  Because there are rare circumstances where you want to single step into an interrupt vector the behavior can be controlled from GDB.  There are three commands you can query and set the single step behavior:
1932 @table @code
1933 @item maintenance packet qqemu.sstepbits
1935 This will display the MASK bits used to control the single stepping IE:
1936 @example
1937 (gdb) maintenance packet qqemu.sstepbits
1938 sending: "qqemu.sstepbits"
1939 received: "ENABLE=1,NOIRQ=2,NOTIMER=4"
1940 @end example
1941 @item maintenance packet qqemu.sstep
1943 This will display the current value of the mask used when single stepping IE:
1944 @example
1945 (gdb) maintenance packet qqemu.sstep
1946 sending: "qqemu.sstep"
1947 received: "0x7"
1948 @end example
1949 @item maintenance packet Qqemu.sstep=HEX_VALUE
1951 This will change the single step mask, so if wanted to enable IRQs on the single step, but not timers, you would use:
1952 @example
1953 (gdb) maintenance packet Qqemu.sstep=0x5
1954 sending: "qemu.sstep=0x5"
1955 received: "OK"
1956 @end example
1957 @end table
1959 @node pcsys_os_specific
1960 @section Target OS specific information
1962 @subsection Linux
1964 To have access to SVGA graphic modes under X11, use the @code{vesa} or
1965 the @code{cirrus} X11 driver. For optimal performances, use 16 bit
1966 color depth in the guest and the host OS.
1968 When using a 2.6 guest Linux kernel, you should add the option
1969 @code{clock=pit} on the kernel command line because the 2.6 Linux
1970 kernels make very strict real time clock checks by default that QEMU
1971 cannot simulate exactly.
1973 When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1974 not activated because QEMU is slower with this patch. The QEMU
1975 Accelerator Module is also much slower in this case. Earlier Fedora
1976 Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporate this
1977 patch by default. Newer kernels don't have it.
1979 @subsection Windows
1981 If you have a slow host, using Windows 95 is better as it gives the
1982 best speed. Windows 2000 is also a good choice.
1984 @subsubsection SVGA graphic modes support
1986 QEMU emulates a Cirrus Logic GD5446 Video
1987 card. All Windows versions starting from Windows 95 should recognize
1988 and use this graphic card. For optimal performances, use 16 bit color
1989 depth in the guest and the host OS.
1991 If you are using Windows XP as guest OS and if you want to use high
1992 resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
1993 1280x1024x16), then you should use the VESA VBE virtual graphic card
1994 (option @option{-std-vga}).
1996 @subsubsection CPU usage reduction
1998 Windows 9x does not correctly use the CPU HLT
1999 instruction. The result is that it takes host CPU cycles even when
2000 idle. You can install the utility from
2001 @url{http://web.archive.org/web/20060212132151/http://www.user.cityline.ru/~maxamn/amnhltm.zip}
2002 to solve this problem. Note that no such tool is needed for NT, 2000 or XP.
2004 @subsubsection Windows 2000 disk full problem
2006 Windows 2000 has a bug which gives a disk full problem during its
2007 installation. When installing it, use the @option{-win2k-hack} QEMU
2008 option to enable a specific workaround. After Windows 2000 is
2009 installed, you no longer need this option (this option slows down the
2010 IDE transfers).
2012 @subsubsection Windows 2000 shutdown
2014 Windows 2000 cannot automatically shutdown in QEMU although Windows 98
2015 can. It comes from the fact that Windows 2000 does not automatically
2016 use the APM driver provided by the BIOS.
2018 In order to correct that, do the following (thanks to Struan
2019 Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
2020 Add/Troubleshoot a device => Add a new device & Next => No, select the
2021 hardware from a list & Next => NT Apm/Legacy Support & Next => Next
2022 (again) a few times. Now the driver is installed and Windows 2000 now
2023 correctly instructs QEMU to shutdown at the appropriate moment.
2025 @subsubsection Share a directory between Unix and Windows
2027 See @ref{sec_invocation} about the help of the option
2028 @option{'-netdev user,smb=...'}.
2030 @subsubsection Windows XP security problem
2032 Some releases of Windows XP install correctly but give a security
2033 error when booting:
2034 @example
2035 A problem is preventing Windows from accurately checking the
2036 license for this computer. Error code: 0x800703e6.
2037 @end example
2039 The workaround is to install a service pack for XP after a boot in safe
2040 mode. Then reboot, and the problem should go away. Since there is no
2041 network while in safe mode, its recommended to download the full
2042 installation of SP1 or SP2 and transfer that via an ISO or using the
2043 vvfat block device ("-hdb fat:directory_which_holds_the_SP").
2045 @subsection MS-DOS and FreeDOS
2047 @subsubsection CPU usage reduction
2049 DOS does not correctly use the CPU HLT instruction. The result is that
2050 it takes host CPU cycles even when idle. You can install the utility from
2051 @url{http://web.archive.org/web/20051222085335/http://www.vmware.com/software/dosidle210.zip}
2052 to solve this problem.
2054 @node QEMU System emulator for non PC targets
2055 @chapter QEMU System emulator for non PC targets
2057 QEMU is a generic emulator and it emulates many non PC
2058 machines. Most of the options are similar to the PC emulator. The
2059 differences are mentioned in the following sections.
2061 @menu
2062 * PowerPC System emulator::
2063 * Sparc32 System emulator::
2064 * Sparc64 System emulator::
2065 * MIPS System emulator::
2066 * ARM System emulator::
2067 * ColdFire System emulator::
2068 * Cris System emulator::
2069 * Microblaze System emulator::
2070 * SH4 System emulator::
2071 * Xtensa System emulator::
2072 @end menu
2074 @node PowerPC System emulator
2075 @section PowerPC System emulator
2076 @cindex system emulation (PowerPC)
2078 Use the executable @file{qemu-system-ppc} to simulate a complete PREP
2079 or PowerMac PowerPC system.
2081 QEMU emulates the following PowerMac peripherals:
2083 @itemize @minus
2084 @item
2085 UniNorth or Grackle PCI Bridge
2086 @item
2087 PCI VGA compatible card with VESA Bochs Extensions
2088 @item
2089 2 PMAC IDE interfaces with hard disk and CD-ROM support
2090 @item
2091 NE2000 PCI adapters
2092 @item
2093 Non Volatile RAM
2094 @item
2095 VIA-CUDA with ADB keyboard and mouse.
2096 @end itemize
2098 QEMU emulates the following PREP peripherals:
2100 @itemize @minus
2101 @item
2102 PCI Bridge
2103 @item
2104 PCI VGA compatible card with VESA Bochs Extensions
2105 @item
2106 2 IDE interfaces with hard disk and CD-ROM support
2107 @item
2108 Floppy disk
2109 @item
2110 NE2000 network adapters
2111 @item
2112 Serial port
2113 @item
2114 PREP Non Volatile RAM
2115 @item
2116 PC compatible keyboard and mouse.
2117 @end itemize
2119 QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
2120 @url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
2122 Since version 0.9.1, QEMU uses OpenBIOS @url{http://www.openbios.org/}
2123 for the g3beige and mac99 PowerMac machines. OpenBIOS is a free (GPL
2124 v2) portable firmware implementation. The goal is to implement a 100%
2125 IEEE 1275-1994 (referred to as Open Firmware) compliant firmware.
2127 @c man begin OPTIONS
2129 The following options are specific to the PowerPC emulation:
2131 @table @option
2133 @item -g @var{W}x@var{H}[x@var{DEPTH}]
2135 Set the initial VGA graphic mode. The default is 800x600x32.
2137 @item -prom-env @var{string}
2139 Set OpenBIOS variables in NVRAM, for example:
2141 @example
2142 qemu-system-ppc -prom-env 'auto-boot?=false' \
2143  -prom-env 'boot-device=hd:2,\yaboot' \
2144  -prom-env 'boot-args=conf=hd:2,\yaboot.conf'
2145 @end example
2147 These variables are not used by Open Hack'Ware.
2149 @end table
2151 @c man end
2154 More information is available at
2155 @url{http://perso.magic.fr/l_indien/qemu-ppc/}.
2157 @node Sparc32 System emulator
2158 @section Sparc32 System emulator
2159 @cindex system emulation (Sparc32)
2161 Use the executable @file{qemu-system-sparc} to simulate the following
2162 Sun4m architecture machines:
2163 @itemize @minus
2164 @item
2165 SPARCstation 4
2166 @item
2167 SPARCstation 5
2168 @item
2169 SPARCstation 10
2170 @item
2171 SPARCstation 20
2172 @item
2173 SPARCserver 600MP
2174 @item
2175 SPARCstation LX
2176 @item
2177 SPARCstation Voyager
2178 @item
2179 SPARCclassic
2180 @item
2181 SPARCbook
2182 @end itemize
2184 The emulation is somewhat complete. SMP up to 16 CPUs is supported,
2185 but Linux limits the number of usable CPUs to 4.
2187 QEMU emulates the following sun4m peripherals:
2189 @itemize @minus
2190 @item
2191 IOMMU
2192 @item
2193 TCX or cgthree Frame buffer
2194 @item
2195 Lance (Am7990) Ethernet
2196 @item
2197 Non Volatile RAM M48T02/M48T08
2198 @item
2199 Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
2200 and power/reset logic
2201 @item
2202 ESP SCSI controller with hard disk and CD-ROM support
2203 @item
2204 Floppy drive (not on SS-600MP)
2205 @item
2206 CS4231 sound device (only on SS-5, not working yet)
2207 @end itemize
2209 The number of peripherals is fixed in the architecture.  Maximum
2210 memory size depends on the machine type, for SS-5 it is 256MB and for
2211 others 2047MB.
2213 Since version 0.8.2, QEMU uses OpenBIOS
2214 @url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
2215 firmware implementation. The goal is to implement a 100% IEEE
2216 1275-1994 (referred to as Open Firmware) compliant firmware.
2218 A sample Linux 2.6 series kernel and ram disk image are available on
2219 the QEMU web site. There are still issues with NetBSD and OpenBSD, but
2220 most kernel versions work. Please note that currently older Solaris kernels
2221 don't work probably due to interface issues between OpenBIOS and
2222 Solaris.
2224 @c man begin OPTIONS
2226 The following options are specific to the Sparc32 emulation:
2228 @table @option
2230 @item -g @var{W}x@var{H}x[x@var{DEPTH}]
2232 Set the initial graphics mode. For TCX, the default is 1024x768x8 with the
2233 option of 1024x768x24. For cgthree, the default is 1024x768x8 with the option
2234 of 1152x900x8 for people who wish to use OBP.
2236 @item -prom-env @var{string}
2238 Set OpenBIOS variables in NVRAM, for example:
2240 @example
2241 qemu-system-sparc -prom-env 'auto-boot?=false' \
2242  -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
2243 @end example
2245 @item -M [SS-4|SS-5|SS-10|SS-20|SS-600MP|LX|Voyager|SPARCClassic] [|SPARCbook]
2247 Set the emulated machine type. Default is SS-5.
2249 @end table
2251 @c man end
2253 @node Sparc64 System emulator
2254 @section Sparc64 System emulator
2255 @cindex system emulation (Sparc64)
2257 Use the executable @file{qemu-system-sparc64} to simulate a Sun4u
2258 (UltraSPARC PC-like machine), Sun4v (T1 PC-like machine), or generic
2259 Niagara (T1) machine. The Sun4u emulator is mostly complete, being
2260 able to run Linux, NetBSD and OpenBSD in headless (-nographic) mode. The
2261 Sun4v emulator is still a work in progress.
2263 The Niagara T1 emulator makes use of firmware and OS binaries supplied in the S10image/ directory
2264 of the OpenSPARC T1 project @url{http://download.oracle.com/technetwork/systems/opensparc/OpenSPARCT1_Arch.1.5.tar.bz2}
2265 and is able to boot the disk.s10hw2 Solaris image.
2266 @example
2267 qemu-system-sparc64 -M niagara -L /path-to/S10image/ \
2268                     -nographic -m 256 \
2269                     -drive if=pflash,readonly=on,file=/S10image/disk.s10hw2
2270 @end example
2273 QEMU emulates the following peripherals:
2275 @itemize @minus
2276 @item
2277 UltraSparc IIi APB PCI Bridge
2278 @item
2279 PCI VGA compatible card with VESA Bochs Extensions
2280 @item
2281 PS/2 mouse and keyboard
2282 @item
2283 Non Volatile RAM M48T59
2284 @item
2285 PC-compatible serial ports
2286 @item
2287 2 PCI IDE interfaces with hard disk and CD-ROM support
2288 @item
2289 Floppy disk
2290 @end itemize
2292 @c man begin OPTIONS
2294 The following options are specific to the Sparc64 emulation:
2296 @table @option
2298 @item -prom-env @var{string}
2300 Set OpenBIOS variables in NVRAM, for example:
2302 @example
2303 qemu-system-sparc64 -prom-env 'auto-boot?=false'
2304 @end example
2306 @item -M [sun4u|sun4v|niagara]
2308 Set the emulated machine type. The default is sun4u.
2310 @end table
2312 @c man end
2314 @node MIPS System emulator
2315 @section MIPS System emulator
2316 @cindex system emulation (MIPS)
2318 Four executables cover simulation of 32 and 64-bit MIPS systems in
2319 both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
2320 @file{qemu-system-mips64} and @file{qemu-system-mips64el}.
2321 Five different machine types are emulated:
2323 @itemize @minus
2324 @item
2325 A generic ISA PC-like machine "mips"
2326 @item
2327 The MIPS Malta prototype board "malta"
2328 @item
2329 An ACER Pica "pica61". This machine needs the 64-bit emulator.
2330 @item
2331 MIPS emulator pseudo board "mipssim"
2332 @item
2333 A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
2334 @end itemize
2336 The generic emulation is supported by Debian 'Etch' and is able to
2337 install Debian into a virtual disk image. The following devices are
2338 emulated:
2340 @itemize @minus
2341 @item
2342 A range of MIPS CPUs, default is the 24Kf
2343 @item
2344 PC style serial port
2345 @item
2346 PC style IDE disk
2347 @item
2348 NE2000 network card
2349 @end itemize
2351 The Malta emulation supports the following devices:
2353 @itemize @minus
2354 @item
2355 Core board with MIPS 24Kf CPU and Galileo system controller
2356 @item
2357 PIIX4 PCI/USB/SMbus controller
2358 @item
2359 The Multi-I/O chip's serial device
2360 @item
2361 PCI network cards (PCnet32 and others)
2362 @item
2363 Malta FPGA serial device
2364 @item
2365 Cirrus (default) or any other PCI VGA graphics card
2366 @end itemize
2368 The ACER Pica emulation supports:
2370 @itemize @minus
2371 @item
2372 MIPS R4000 CPU
2373 @item
2374 PC-style IRQ and DMA controllers
2375 @item
2376 PC Keyboard
2377 @item
2378 IDE controller
2379 @end itemize
2381 The mipssim pseudo board emulation provides an environment similar
2382 to what the proprietary MIPS emulator uses for running Linux.
2383 It supports:
2385 @itemize @minus
2386 @item
2387 A range of MIPS CPUs, default is the 24Kf
2388 @item
2389 PC style serial port
2390 @item
2391 MIPSnet network emulation
2392 @end itemize
2394 The MIPS Magnum R4000 emulation supports:
2396 @itemize @minus
2397 @item
2398 MIPS R4000 CPU
2399 @item
2400 PC-style IRQ controller
2401 @item
2402 PC Keyboard
2403 @item
2404 SCSI controller
2405 @item
2406 G364 framebuffer
2407 @end itemize
2410 @node ARM System emulator
2411 @section ARM System emulator
2412 @cindex system emulation (ARM)
2414 Use the executable @file{qemu-system-arm} to simulate a ARM
2415 machine. The ARM Integrator/CP board is emulated with the following
2416 devices:
2418 @itemize @minus
2419 @item
2420 ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
2421 @item
2422 Two PL011 UARTs
2423 @item
2424 SMC 91c111 Ethernet adapter
2425 @item
2426 PL110 LCD controller
2427 @item
2428 PL050 KMI with PS/2 keyboard and mouse.
2429 @item
2430 PL181 MultiMedia Card Interface with SD card.
2431 @end itemize
2433 The ARM Versatile baseboard is emulated with the following devices:
2435 @itemize @minus
2436 @item
2437 ARM926E, ARM1136 or Cortex-A8 CPU
2438 @item
2439 PL190 Vectored Interrupt Controller
2440 @item
2441 Four PL011 UARTs
2442 @item
2443 SMC 91c111 Ethernet adapter
2444 @item
2445 PL110 LCD controller
2446 @item
2447 PL050 KMI with PS/2 keyboard and mouse.
2448 @item
2449 PCI host bridge.  Note the emulated PCI bridge only provides access to
2450 PCI memory space.  It does not provide access to PCI IO space.
2451 This means some devices (eg. ne2k_pci NIC) are not usable, and others
2452 (eg. rtl8139 NIC) are only usable when the guest drivers use the memory
2453 mapped control registers.
2454 @item
2455 PCI OHCI USB controller.
2456 @item
2457 LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
2458 @item
2459 PL181 MultiMedia Card Interface with SD card.
2460 @end itemize
2462 Several variants of the ARM RealView baseboard are emulated,
2463 including the EB, PB-A8 and PBX-A9.  Due to interactions with the
2464 bootloader, only certain Linux kernel configurations work out
2465 of the box on these boards.
2467 Kernels for the PB-A8 board should have CONFIG_REALVIEW_HIGH_PHYS_OFFSET
2468 enabled in the kernel, and expect 512M RAM.  Kernels for The PBX-A9 board
2469 should have CONFIG_SPARSEMEM enabled, CONFIG_REALVIEW_HIGH_PHYS_OFFSET
2470 disabled and expect 1024M RAM.
2472 The following devices are emulated:
2474 @itemize @minus
2475 @item
2476 ARM926E, ARM1136, ARM11MPCore, Cortex-A8 or Cortex-A9 MPCore CPU
2477 @item
2478 ARM AMBA Generic/Distributed Interrupt Controller
2479 @item
2480 Four PL011 UARTs
2481 @item
2482 SMC 91c111 or SMSC LAN9118 Ethernet adapter
2483 @item
2484 PL110 LCD controller
2485 @item
2486 PL050 KMI with PS/2 keyboard and mouse
2487 @item
2488 PCI host bridge
2489 @item
2490 PCI OHCI USB controller
2491 @item
2492 LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
2493 @item
2494 PL181 MultiMedia Card Interface with SD card.
2495 @end itemize
2497 The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
2498 and "Terrier") emulation includes the following peripherals:
2500 @itemize @minus
2501 @item
2502 Intel PXA270 System-on-chip (ARM V5TE core)
2503 @item
2504 NAND Flash memory
2505 @item
2506 IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
2507 @item
2508 On-chip OHCI USB controller
2509 @item
2510 On-chip LCD controller
2511 @item
2512 On-chip Real Time Clock
2513 @item
2514 TI ADS7846 touchscreen controller on SSP bus
2515 @item
2516 Maxim MAX1111 analog-digital converter on I@math{^2}C bus
2517 @item
2518 GPIO-connected keyboard controller and LEDs
2519 @item
2520 Secure Digital card connected to PXA MMC/SD host
2521 @item
2522 Three on-chip UARTs
2523 @item
2524 WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
2525 @end itemize
2527 The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
2528 following elements:
2530 @itemize @minus
2531 @item
2532 Texas Instruments OMAP310 System-on-chip (ARM 925T core)
2533 @item
2534 ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
2535 @item
2536 On-chip LCD controller
2537 @item
2538 On-chip Real Time Clock
2539 @item
2540 TI TSC2102i touchscreen controller / analog-digital converter / Audio
2541 CODEC, connected through MicroWire and I@math{^2}S busses
2542 @item
2543 GPIO-connected matrix keypad
2544 @item
2545 Secure Digital card connected to OMAP MMC/SD host
2546 @item
2547 Three on-chip UARTs
2548 @end itemize
2550 Nokia N800 and N810 internet tablets (known also as RX-34 and RX-44 / 48)
2551 emulation supports the following elements:
2553 @itemize @minus
2554 @item
2555 Texas Instruments OMAP2420 System-on-chip (ARM 1136 core)
2556 @item
2557 RAM and non-volatile OneNAND Flash memories
2558 @item
2559 Display connected to EPSON remote framebuffer chip and OMAP on-chip
2560 display controller and a LS041y3 MIPI DBI-C controller
2561 @item
2562 TI TSC2301 (in N800) and TI TSC2005 (in N810) touchscreen controllers
2563 driven through SPI bus
2564 @item
2565 National Semiconductor LM8323-controlled qwerty keyboard driven
2566 through I@math{^2}C bus
2567 @item
2568 Secure Digital card connected to OMAP MMC/SD host
2569 @item
2570 Three OMAP on-chip UARTs and on-chip STI debugging console
2571 @item
2572 A Bluetooth(R) transceiver and HCI connected to an UART
2573 @item
2574 Mentor Graphics "Inventra" dual-role USB controller embedded in a TI
2575 TUSB6010 chip - only USB host mode is supported
2576 @item
2577 TI TMP105 temperature sensor driven through I@math{^2}C bus
2578 @item
2579 TI TWL92230C power management companion with an RTC on I@math{^2}C bus
2580 @item
2581 Nokia RETU and TAHVO multi-purpose chips with an RTC, connected
2582 through CBUS
2583 @end itemize
2585 The Luminary Micro Stellaris LM3S811EVB emulation includes the following
2586 devices:
2588 @itemize @minus
2589 @item
2590 Cortex-M3 CPU core.
2591 @item
2592 64k Flash and 8k SRAM.
2593 @item
2594 Timers, UARTs, ADC and I@math{^2}C interface.
2595 @item
2596 OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
2597 @end itemize
2599 The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
2600 devices:
2602 @itemize @minus
2603 @item
2604 Cortex-M3 CPU core.
2605 @item
2606 256k Flash and 64k SRAM.
2607 @item
2608 Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
2609 @item
2610 OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
2611 @end itemize
2613 The Freecom MusicPal internet radio emulation includes the following
2614 elements:
2616 @itemize @minus
2617 @item
2618 Marvell MV88W8618 ARM core.
2619 @item
2620 32 MB RAM, 256 KB SRAM, 8 MB flash.
2621 @item
2622 Up to 2 16550 UARTs
2623 @item
2624 MV88W8xx8 Ethernet controller
2625 @item
2626 MV88W8618 audio controller, WM8750 CODEC and mixer
2627 @item
2628 128×64 display with brightness control
2629 @item
2630 2 buttons, 2 navigation wheels with button function
2631 @end itemize
2633 The Siemens SX1 models v1 and v2 (default) basic emulation.
2634 The emulation includes the following elements:
2636 @itemize @minus
2637 @item
2638 Texas Instruments OMAP310 System-on-chip (ARM 925T core)
2639 @item
2640 ROM and RAM memories (ROM firmware image can be loaded with -pflash)
2642 1 Flash of 16MB and 1 Flash of 8MB
2644 1 Flash of 32MB
2645 @item
2646 On-chip LCD controller
2647 @item
2648 On-chip Real Time Clock
2649 @item
2650 Secure Digital card connected to OMAP MMC/SD host
2651 @item
2652 Three on-chip UARTs
2653 @end itemize
2655 A Linux 2.6 test image is available on the QEMU web site. More
2656 information is available in the QEMU mailing-list archive.
2658 @c man begin OPTIONS
2660 The following options are specific to the ARM emulation:
2662 @table @option
2664 @item -semihosting
2665 Enable semihosting syscall emulation.
2667 On ARM this implements the "Angel" interface.
2669 Note that this allows guest direct access to the host filesystem,
2670 so should only be used with trusted guest OS.
2672 @end table
2674 @c man end
2676 @node ColdFire System emulator
2677 @section ColdFire System emulator
2678 @cindex system emulation (ColdFire)
2679 @cindex system emulation (M68K)
2681 Use the executable @file{qemu-system-m68k} to simulate a ColdFire machine.
2682 The emulator is able to boot a uClinux kernel.
2684 The M5208EVB emulation includes the following devices:
2686 @itemize @minus
2687 @item
2688 MCF5208 ColdFire V2 Microprocessor (ISA A+ with EMAC).
2689 @item
2690 Three Two on-chip UARTs.
2691 @item
2692 Fast Ethernet Controller (FEC)
2693 @end itemize
2695 The AN5206 emulation includes the following devices:
2697 @itemize @minus
2698 @item
2699 MCF5206 ColdFire V2 Microprocessor.
2700 @item
2701 Two on-chip UARTs.
2702 @end itemize
2704 @c man begin OPTIONS
2706 The following options are specific to the ColdFire emulation:
2708 @table @option
2710 @item -semihosting
2711 Enable semihosting syscall emulation.
2713 On M68K this implements the "ColdFire GDB" interface used by libgloss.
2715 Note that this allows guest direct access to the host filesystem,
2716 so should only be used with trusted guest OS.
2718 @end table
2720 @c man end
2722 @node Cris System emulator
2723 @section Cris System emulator
2724 @cindex system emulation (Cris)
2726 TODO
2728 @node Microblaze System emulator
2729 @section Microblaze System emulator
2730 @cindex system emulation (Microblaze)
2732 TODO
2734 @node SH4 System emulator
2735 @section SH4 System emulator
2736 @cindex system emulation (SH4)
2738 TODO
2740 @node Xtensa System emulator
2741 @section Xtensa System emulator
2742 @cindex system emulation (Xtensa)
2744 Two executables cover simulation of both Xtensa endian options,
2745 @file{qemu-system-xtensa} and @file{qemu-system-xtensaeb}.
2746 Two different machine types are emulated:
2748 @itemize @minus
2749 @item
2750 Xtensa emulator pseudo board "sim"
2751 @item
2752 Avnet LX60/LX110/LX200 board
2753 @end itemize
2755 The sim pseudo board emulation provides an environment similar
2756 to one provided by the proprietary Tensilica ISS.
2757 It supports:
2759 @itemize @minus
2760 @item
2761 A range of Xtensa CPUs, default is the DC232B
2762 @item
2763 Console and filesystem access via semihosting calls
2764 @end itemize
2766 The Avnet LX60/LX110/LX200 emulation supports:
2768 @itemize @minus
2769 @item
2770 A range of Xtensa CPUs, default is the DC232B
2771 @item
2772 16550 UART
2773 @item
2774 OpenCores 10/100 Mbps Ethernet MAC
2775 @end itemize
2777 @c man begin OPTIONS
2779 The following options are specific to the Xtensa emulation:
2781 @table @option
2783 @item -semihosting
2784 Enable semihosting syscall emulation.
2786 Xtensa semihosting provides basic file IO calls, such as open/read/write/seek/select.
2787 Tensilica baremetal libc for ISS and linux platform "sim" use this interface.
2789 Note that this allows guest direct access to the host filesystem,
2790 so should only be used with trusted guest OS.
2792 @end table
2794 @c man end
2796 @node QEMU Guest Agent
2797 @chapter QEMU Guest Agent invocation
2799 @include qemu-ga.texi
2801 @node QEMU User space emulator
2802 @chapter QEMU User space emulator
2804 @menu
2805 * Supported Operating Systems ::
2806 * Features::
2807 * Linux User space emulator::
2808 * BSD User space emulator ::
2809 @end menu
2811 @node Supported Operating Systems
2812 @section Supported Operating Systems
2814 The following OS are supported in user space emulation:
2816 @itemize @minus
2817 @item
2818 Linux (referred as qemu-linux-user)
2819 @item
2820 BSD (referred as qemu-bsd-user)
2821 @end itemize
2823 @node Features
2824 @section Features
2826 QEMU user space emulation has the following notable features:
2828 @table @strong
2829 @item System call translation:
2830 QEMU includes a generic system call translator.  This means that
2831 the parameters of the system calls can be converted to fix
2832 endianness and 32/64-bit mismatches between hosts and targets.
2833 IOCTLs can be converted too.
2835 @item POSIX signal handling:
2836 QEMU can redirect to the running program all signals coming from
2837 the host (such as @code{SIGALRM}), as well as synthesize signals from
2838 virtual CPU exceptions (for example @code{SIGFPE} when the program
2839 executes a division by zero).
2841 QEMU relies on the host kernel to emulate most signal system
2842 calls, for example to emulate the signal mask.  On Linux, QEMU
2843 supports both normal and real-time signals.
2845 @item Threading:
2846 On Linux, QEMU can emulate the @code{clone} syscall and create a real
2847 host thread (with a separate virtual CPU) for each emulated thread.
2848 Note that not all targets currently emulate atomic operations correctly.
2849 x86 and ARM use a global lock in order to preserve their semantics.
2850 @end table
2852 QEMU was conceived so that ultimately it can emulate itself. Although
2853 it is not very useful, it is an important test to show the power of the
2854 emulator.
2856 @node Linux User space emulator
2857 @section Linux User space emulator
2859 @menu
2860 * Quick Start::
2861 * Wine launch::
2862 * Command line options::
2863 * Other binaries::
2864 @end menu
2866 @node Quick Start
2867 @subsection Quick Start
2869 In order to launch a Linux process, QEMU needs the process executable
2870 itself and all the target (x86) dynamic libraries used by it.
2872 @itemize
2874 @item On x86, you can just try to launch any process by using the native
2875 libraries:
2877 @example
2878 qemu-i386 -L / /bin/ls
2879 @end example
2881 @code{-L /} tells that the x86 dynamic linker must be searched with a
2882 @file{/} prefix.
2884 @item Since QEMU is also a linux process, you can launch QEMU with
2885 QEMU (NOTE: you can only do that if you compiled QEMU from the sources):
2887 @example
2888 qemu-i386 -L / qemu-i386 -L / /bin/ls
2889 @end example
2891 @item On non x86 CPUs, you need first to download at least an x86 glibc
2892 (@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
2893 @code{LD_LIBRARY_PATH} is not set:
2895 @example
2896 unset LD_LIBRARY_PATH
2897 @end example
2899 Then you can launch the precompiled @file{ls} x86 executable:
2901 @example
2902 qemu-i386 tests/i386/ls
2903 @end example
2904 You can look at @file{scripts/qemu-binfmt-conf.sh} so that
2905 QEMU is automatically launched by the Linux kernel when you try to
2906 launch x86 executables. It requires the @code{binfmt_misc} module in the
2907 Linux kernel.
2909 @item The x86 version of QEMU is also included. You can try weird things such as:
2910 @example
2911 qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
2912           /usr/local/qemu-i386/bin/ls-i386
2913 @end example
2915 @end itemize
2917 @node Wine launch
2918 @subsection Wine launch
2920 @itemize
2922 @item Ensure that you have a working QEMU with the x86 glibc
2923 distribution (see previous section). In order to verify it, you must be
2924 able to do:
2926 @example
2927 qemu-i386 /usr/local/qemu-i386/bin/ls-i386
2928 @end example
2930 @item Download the binary x86 Wine install
2931 (@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
2933 @item Configure Wine on your account. Look at the provided script
2934 @file{/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous
2935 @code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
2937 @item Then you can try the example @file{putty.exe}:
2939 @example
2940 qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
2941           /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
2942 @end example
2944 @end itemize
2946 @node Command line options
2947 @subsection Command line options
2949 @example
2950 @command{qemu-i386} [@option{-h]} [@option{-d]} [@option{-L} @var{path}] [@option{-s} @var{size}] [@option{-cpu} @var{model}] [@option{-g} @var{port}] [@option{-B} @var{offset}] [@option{-R} @var{size}] @var{program} [@var{arguments}...]
2951 @end example
2953 @table @option
2954 @item -h
2955 Print the help
2956 @item -L path
2957 Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
2958 @item -s size
2959 Set the x86 stack size in bytes (default=524288)
2960 @item -cpu model
2961 Select CPU model (-cpu help for list and additional feature selection)
2962 @item -E @var{var}=@var{value}
2963 Set environment @var{var} to @var{value}.
2964 @item -U @var{var}
2965 Remove @var{var} from the environment.
2966 @item -B offset
2967 Offset guest address by the specified number of bytes.  This is useful when
2968 the address region required by guest applications is reserved on the host.
2969 This option is currently only supported on some hosts.
2970 @item -R size
2971 Pre-allocate a guest virtual address space of the given size (in bytes).
2972 "G", "M", and "k" suffixes may be used when specifying the size.
2973 @end table
2975 Debug options:
2977 @table @option
2978 @item -d item1,...
2979 Activate logging of the specified items (use '-d help' for a list of log items)
2980 @item -p pagesize
2981 Act as if the host page size was 'pagesize' bytes
2982 @item -g port
2983 Wait gdb connection to port
2984 @item -singlestep
2985 Run the emulation in single step mode.
2986 @end table
2988 Environment variables:
2990 @table @env
2991 @item QEMU_STRACE
2992 Print system calls and arguments similar to the 'strace' program
2993 (NOTE: the actual 'strace' program will not work because the user
2994 space emulator hasn't implemented ptrace).  At the moment this is
2995 incomplete.  All system calls that don't have a specific argument
2996 format are printed with information for six arguments.  Many
2997 flag-style arguments don't have decoders and will show up as numbers.
2998 @end table
3000 @node Other binaries
3001 @subsection Other binaries
3003 @cindex user mode (Alpha)
3004 @command{qemu-alpha} TODO.
3006 @cindex user mode (ARM)
3007 @command{qemu-armeb} TODO.
3009 @cindex user mode (ARM)
3010 @command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF
3011 binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
3012 configurations), and arm-uclinux bFLT format binaries.
3014 @cindex user mode (ColdFire)
3015 @cindex user mode (M68K)
3016 @command{qemu-m68k} is capable of running semihosted binaries using the BDM
3017 (m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
3018 coldfire uClinux bFLT format binaries.
3020 The binary format is detected automatically.
3022 @cindex user mode (Cris)
3023 @command{qemu-cris} TODO.
3025 @cindex user mode (i386)
3026 @command{qemu-i386} TODO.
3027 @command{qemu-x86_64} TODO.
3029 @cindex user mode (Microblaze)
3030 @command{qemu-microblaze} TODO.
3032 @cindex user mode (MIPS)
3033 @command{qemu-mips} TODO.
3034 @command{qemu-mipsel} TODO.
3036 @cindex user mode (NiosII)
3037 @command{qemu-nios2} TODO.
3039 @cindex user mode (PowerPC)
3040 @command{qemu-ppc64abi32} TODO.
3041 @command{qemu-ppc64} TODO.
3042 @command{qemu-ppc} TODO.
3044 @cindex user mode (SH4)
3045 @command{qemu-sh4eb} TODO.
3046 @command{qemu-sh4} TODO.
3048 @cindex user mode (SPARC)
3049 @command{qemu-sparc} can execute Sparc32 binaries (Sparc32 CPU, 32 bit ABI).
3051 @command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries
3052 (Sparc64 CPU, 32 bit ABI).
3054 @command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
3055 SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
3057 @node BSD User space emulator
3058 @section BSD User space emulator
3060 @menu
3061 * BSD Status::
3062 * BSD Quick Start::
3063 * BSD Command line options::
3064 @end menu
3066 @node BSD Status
3067 @subsection BSD Status
3069 @itemize @minus
3070 @item
3071 target Sparc64 on Sparc64: Some trivial programs work.
3072 @end itemize
3074 @node BSD Quick Start
3075 @subsection Quick Start
3077 In order to launch a BSD process, QEMU needs the process executable
3078 itself and all the target dynamic libraries used by it.
3080 @itemize
3082 @item On Sparc64, you can just try to launch any process by using the native
3083 libraries:
3085 @example
3086 qemu-sparc64 /bin/ls
3087 @end example
3089 @end itemize
3091 @node BSD Command line options
3092 @subsection Command line options
3094 @example
3095 @command{qemu-sparc64} [@option{-h]} [@option{-d]} [@option{-L} @var{path}] [@option{-s} @var{size}] [@option{-bsd} @var{type}] @var{program} [@var{arguments}...]
3096 @end example
3098 @table @option
3099 @item -h
3100 Print the help
3101 @item -L path
3102 Set the library root path (default=/)
3103 @item -s size
3104 Set the stack size in bytes (default=524288)
3105 @item -ignore-environment
3106 Start with an empty environment. Without this option,
3107 the initial environment is a copy of the caller's environment.
3108 @item -E @var{var}=@var{value}
3109 Set environment @var{var} to @var{value}.
3110 @item -U @var{var}
3111 Remove @var{var} from the environment.
3112 @item -bsd type
3113 Set the type of the emulated BSD Operating system. Valid values are
3114 FreeBSD, NetBSD and OpenBSD (default).
3115 @end table
3117 Debug options:
3119 @table @option
3120 @item -d item1,...
3121 Activate logging of the specified items (use '-d help' for a list of log items)
3122 @item -p pagesize
3123 Act as if the host page size was 'pagesize' bytes
3124 @item -singlestep
3125 Run the emulation in single step mode.
3126 @end table
3129 @include qemu-tech.texi
3131 @node License
3132 @appendix License
3134 QEMU is a trademark of Fabrice Bellard.
3136 QEMU is released under the
3137 @url{https://www.gnu.org/licenses/gpl-2.0.txt,GNU General Public License},
3138 version 2. Parts of QEMU have specific licenses, see file
3139 @url{http://git.qemu.org/?p=qemu.git;a=blob_plain;f=LICENSE,LICENSE}.
3141 @node Index
3142 @appendix Index
3143 @menu
3144 * Concept Index::
3145 * Function Index::
3146 * Keystroke Index::
3147 * Program Index::
3148 * Data Type Index::
3149 * Variable Index::
3150 @end menu
3152 @node Concept Index
3153 @section Concept Index
3154 This is the main index. Should we combine all keywords in one index? TODO
3155 @printindex cp
3157 @node Function Index
3158 @section Function Index
3159 This index could be used for command line options and monitor functions.
3160 @printindex fn
3162 @node Keystroke Index
3163 @section Keystroke Index
3165 This is a list of all keystrokes which have a special function
3166 in system emulation.
3168 @printindex ky
3170 @node Program Index
3171 @section Program Index
3172 @printindex pg
3174 @node Data Type Index
3175 @section Data Type Index
3177 This index could be used for qdev device names and options.
3179 @printindex tp
3181 @node Variable Index
3182 @section Variable Index
3183 @printindex vr
3185 @bye