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