]> git.proxmox.com Git - mirror_qemu.git/blame - qemu-doc.texi
Fix formatting
[mirror_qemu.git] / qemu-doc.texi
CommitLineData
386405f7 1\input texinfo @c -*- texinfo -*-
debc7065
FB
2@c %**start of header
3@setfilename qemu-doc.info
8f40c388 4@settitle QEMU Emulator User Documentation
debc7065
FB
5@exampleindent 0
6@paragraphindent 0
7@c %**end of header
386405f7 8
0806e3f6 9@iftex
386405f7
FB
10@titlepage
11@sp 7
8f40c388 12@center @titlefont{QEMU Emulator}
debc7065
FB
13@sp 1
14@center @titlefont{User Documentation}
386405f7
FB
15@sp 3
16@end titlepage
0806e3f6 17@end iftex
386405f7 18
debc7065
FB
19@ifnottex
20@node Top
21@top
22
23@menu
24* Introduction::
25* Installation::
26* QEMU PC System emulator::
27* QEMU System emulator for non PC targets::
83195237 28* QEMU User space emulator::
debc7065
FB
29* compilation:: Compilation from the sources
30* Index::
31@end menu
32@end ifnottex
33
34@contents
35
36@node Introduction
386405f7
FB
37@chapter Introduction
38
debc7065
FB
39@menu
40* intro_features:: Features
41@end menu
42
43@node intro_features
322d0c66 44@section Features
386405f7 45
1f673135
FB
46QEMU is a FAST! processor emulator using dynamic translation to
47achieve good emulation speed.
1eb20527
FB
48
49QEMU has two operating modes:
0806e3f6
FB
50
51@itemize @minus
52
5fafdf24 53@item
1f673135 54Full system emulation. In this mode, QEMU emulates a full system (for
3f9f3aa1
FB
55example a PC), including one or several processors and various
56peripherals. It can be used to launch different Operating Systems
57without rebooting the PC or to debug system code.
1eb20527 58
5fafdf24 59@item
83195237
FB
60User mode emulation. In this mode, QEMU can launch
61processes compiled for one CPU on another CPU. It can be used to
1f673135
FB
62launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
63to ease cross-compilation and cross-debugging.
1eb20527
FB
64
65@end itemize
66
7c3fc84d 67QEMU can run without an host kernel driver and yet gives acceptable
5fafdf24 68performance.
322d0c66 69
52c00a5f
FB
70For system emulation, the following hardware targets are supported:
71@itemize
9d0a8e6f 72@item PC (x86 or x86_64 processor)
3f9f3aa1 73@item ISA PC (old style PC without PCI bus)
52c00a5f 74@item PREP (PowerPC processor)
d45952a0 75@item G3 Beige PowerMac (PowerPC processor)
9d0a8e6f 76@item Mac99 PowerMac (PowerPC processor, in progress)
ee76f82e 77@item Sun4m/Sun4c/Sun4d (32-bit Sparc processor)
c7ba218d 78@item Sun4u/Sun4v (64-bit Sparc processor, in progress)
d9aedc32 79@item Malta board (32-bit and 64-bit MIPS processors)
88cb0a02 80@item MIPS Magnum (64-bit MIPS processor)
9ee6e8bb
PB
81@item ARM Integrator/CP (ARM)
82@item ARM Versatile baseboard (ARM)
83@item ARM RealView Emulation baseboard (ARM)
ef4c3856 84@item Spitz, Akita, Borzoi, Terrier and Tosa PDAs (PXA270 processor)
9ee6e8bb
PB
85@item Luminary Micro LM3S811EVB (ARM Cortex-M3)
86@item Luminary Micro LM3S6965EVB (ARM Cortex-M3)
707e011b 87@item Freescale MCF5208EVB (ColdFire V2).
209a4e69 88@item Arnewsh MCF5206 evaluation board (ColdFire V2).
02645926 89@item Palm Tungsten|E PDA (OMAP310 processor)
c30bb264 90@item N800 and N810 tablets (OMAP2420 processor)
57cd6e97 91@item MusicPal (MV88W8618 ARM processor)
ef4c3856
AZ
92@item Gumstix "Connex" and "Verdex" motherboards (PXA255/270).
93@item Siemens SX1 smartphone (OMAP310 processor)
4af39611 94@item Syborg SVP base model (ARM Cortex-A8).
48c50a62
EI
95@item AXIS-Devboard88 (CRISv32 ETRAX-FS).
96@item Petalogix Spartan 3aDSP1800 MMU ref design (MicroBlaze).
52c00a5f 97@end itemize
386405f7 98
48c50a62 99For user emulation, x86, PowerPC, ARM, 32-bit MIPS, Sparc32/64, ColdFire(m68k), CRISv32 and MicroBlaze CPUs are supported.
0806e3f6 100
debc7065 101@node Installation
5b9f457a
FB
102@chapter Installation
103
15a34c63
FB
104If you want to compile QEMU yourself, see @ref{compilation}.
105
debc7065
FB
106@menu
107* install_linux:: Linux
108* install_windows:: Windows
109* install_mac:: Macintosh
110@end menu
111
112@node install_linux
1f673135
FB
113@section Linux
114
7c3fc84d
FB
115If a precompiled package is available for your distribution - you just
116have to install it. Otherwise, see @ref{compilation}.
5b9f457a 117
debc7065 118@node install_windows
1f673135 119@section Windows
8cd0ac2f 120
15a34c63 121Download the experimental binary installer at
debc7065 122@url{http://www.free.oszoo.org/@/download.html}.
d691f669 123
debc7065 124@node install_mac
1f673135 125@section Mac OS X
d691f669 126
15a34c63 127Download the experimental binary installer at
debc7065 128@url{http://www.free.oszoo.org/@/download.html}.
df0f11a0 129
debc7065 130@node QEMU PC System emulator
3f9f3aa1 131@chapter QEMU PC System emulator
1eb20527 132
debc7065
FB
133@menu
134* pcsys_introduction:: Introduction
135* pcsys_quickstart:: Quick Start
136* sec_invocation:: Invocation
137* pcsys_keys:: Keys
138* pcsys_monitor:: QEMU Monitor
139* disk_images:: Disk Images
140* pcsys_network:: Network emulation
141* direct_linux_boot:: Direct Linux Boot
142* pcsys_usb:: USB emulation
f858dcae 143* vnc_security:: VNC security
debc7065
FB
144* gdb_usage:: GDB usage
145* pcsys_os_specific:: Target OS specific information
146@end menu
147
148@node pcsys_introduction
0806e3f6
FB
149@section Introduction
150
151@c man begin DESCRIPTION
152
3f9f3aa1
FB
153The QEMU PC System emulator simulates the
154following peripherals:
0806e3f6
FB
155
156@itemize @minus
5fafdf24 157@item
15a34c63 158i440FX host PCI bridge and PIIX3 PCI to ISA bridge
0806e3f6 159@item
15a34c63
FB
160Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
161extensions (hardware level, including all non standard modes).
0806e3f6
FB
162@item
163PS/2 mouse and keyboard
5fafdf24 164@item
15a34c63 1652 PCI IDE interfaces with hard disk and CD-ROM support
1f673135
FB
166@item
167Floppy disk
5fafdf24 168@item
3a2eeac0 169PCI and ISA network adapters
0806e3f6 170@item
05d5818c
FB
171Serial ports
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
c0fe3827 179Adlib(OPL2) - Yamaha YM3812 compatible chip
b389dbfb 180@item
26463dbc
AZ
181Gravis Ultrasound GF1 sound card
182@item
cc53d26d 183CS4231A compatible sound card
184@item
b389dbfb 185PCI UHCI USB controller and a virtual USB hub.
0806e3f6
FB
186@end itemize
187
3f9f3aa1
FB
188SMP is supported with up to 255 CPUs.
189
1d1f8c33 190Note that adlib, gus and cs4231a are only available when QEMU was
191configured with --audio-card-list option containing the name(s) of
e5178e8d 192required card(s).
c0fe3827 193
15a34c63
FB
194QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
195VGA BIOS.
196
c0fe3827
FB
197QEMU uses YM3812 emulation by Tatsuyuki Satoh.
198
26463dbc
AZ
199QEMU uses GUS emulation(GUSEMU32 @url{http://www.deinmeister.de/gusemu/})
200by Tibor "TS" Schütz.
423d65f4 201
cc53d26d 202CS4231A is the chip used in Windows Sound System and GUSMAX products
203
0806e3f6
FB
204@c man end
205
debc7065 206@node pcsys_quickstart
1eb20527
FB
207@section Quick Start
208
285dc330 209Download and uncompress the linux image (@file{linux.img}) and type:
0806e3f6
FB
210
211@example
285dc330 212qemu linux.img
0806e3f6
FB
213@end example
214
215Linux should boot and give you a prompt.
216
6cc721cf 217@node sec_invocation
ec410fc9
FB
218@section Invocation
219
220@example
0806e3f6 221@c man begin SYNOPSIS
89dfe898 222usage: qemu [options] [@var{disk_image}]
0806e3f6 223@c man end
ec410fc9
FB
224@end example
225
0806e3f6 226@c man begin OPTIONS
d2c639d6
BS
227@var{disk_image} is a raw hard disk image for IDE hard disk 0. Some
228targets do not need a disk image.
ec410fc9 229
5824d651 230@include qemu-options.texi
ec410fc9 231
3e11db9a
FB
232@c man end
233
debc7065 234@node pcsys_keys
3e11db9a
FB
235@section Keys
236
237@c man begin OPTIONS
238
a1b74fe8
FB
239During the graphical emulation, you can use the following keys:
240@table @key
f9859310 241@item Ctrl-Alt-f
a1b74fe8 242Toggle full screen
a0a821a4 243
c4a735f9 244@item Ctrl-Alt-u
245Restore the screen's un-scaled dimensions
246
f9859310 247@item Ctrl-Alt-n
a0a821a4
FB
248Switch to virtual console 'n'. Standard console mappings are:
249@table @emph
250@item 1
251Target system display
252@item 2
253Monitor
254@item 3
255Serial port
a1b74fe8
FB
256@end table
257
f9859310 258@item Ctrl-Alt
a0a821a4
FB
259Toggle mouse and keyboard grab.
260@end table
261
3e11db9a
FB
262In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
263@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
264
a0a821a4
FB
265During emulation, if you are using the @option{-nographic} option, use
266@key{Ctrl-a h} to get terminal commands:
ec410fc9
FB
267
268@table @key
a1b74fe8 269@item Ctrl-a h
d2c639d6 270@item Ctrl-a ?
ec410fc9 271Print this help
3b46e624 272@item Ctrl-a x
366dfc52 273Exit emulator
3b46e624 274@item Ctrl-a s
1f47a922 275Save disk data back to file (if -snapshot)
20d8a3ed 276@item Ctrl-a t
d2c639d6 277Toggle console timestamps
a1b74fe8 278@item Ctrl-a b
1f673135 279Send break (magic sysrq in Linux)
a1b74fe8 280@item Ctrl-a c
1f673135 281Switch between console and monitor
a1b74fe8
FB
282@item Ctrl-a Ctrl-a
283Send Ctrl-a
ec410fc9 284@end table
0806e3f6
FB
285@c man end
286
287@ignore
288
1f673135
FB
289@c man begin SEEALSO
290The HTML documentation of QEMU for more precise information and Linux
291user mode emulator invocation.
292@c man end
293
294@c man begin AUTHOR
295Fabrice Bellard
296@c man end
297
298@end ignore
299
debc7065 300@node pcsys_monitor
1f673135
FB
301@section QEMU Monitor
302
303The QEMU monitor is used to give complex commands to the QEMU
304emulator. You can use it to:
305
306@itemize @minus
307
308@item
e598752a 309Remove or insert removable media images
89dfe898 310(such as CD-ROM or floppies).
1f673135 311
5fafdf24 312@item
1f673135
FB
313Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
314from a disk file.
315
316@item Inspect the VM state without an external debugger.
317
318@end itemize
319
320@subsection Commands
321
322The following commands are available:
323
2313086a 324@include qemu-monitor.texi
0806e3f6 325
1f673135
FB
326@subsection Integer expressions
327
328The monitor understands integers expressions for every integer
329argument. You can use register names to get the value of specifics
330CPU registers by prefixing them with @emph{$}.
ec410fc9 331
1f47a922
FB
332@node disk_images
333@section Disk Images
334
acd935ef
FB
335Since version 0.6.1, QEMU supports many disk image formats, including
336growable disk images (their size increase as non empty sectors are
13a2e80f
FB
337written), compressed and encrypted disk images. Version 0.8.3 added
338the new qcow2 disk image format which is essential to support VM
339snapshots.
1f47a922 340
debc7065
FB
341@menu
342* disk_images_quickstart:: Quick start for disk image creation
343* disk_images_snapshot_mode:: Snapshot mode
13a2e80f 344* vm_snapshots:: VM snapshots
debc7065 345* qemu_img_invocation:: qemu-img Invocation
975b092b 346* qemu_nbd_invocation:: qemu-nbd Invocation
19cb3738 347* host_drives:: Using host drives
debc7065 348* disk_images_fat_images:: Virtual FAT disk images
75818250 349* disk_images_nbd:: NBD access
debc7065
FB
350@end menu
351
352@node disk_images_quickstart
acd935ef
FB
353@subsection Quick start for disk image creation
354
355You can create a disk image with the command:
1f47a922 356@example
acd935ef 357qemu-img create myimage.img mysize
1f47a922 358@end example
acd935ef
FB
359where @var{myimage.img} is the disk image filename and @var{mysize} is its
360size in kilobytes. You can add an @code{M} suffix to give the size in
361megabytes and a @code{G} suffix for gigabytes.
362
debc7065 363See @ref{qemu_img_invocation} for more information.
1f47a922 364
debc7065 365@node disk_images_snapshot_mode
1f47a922
FB
366@subsection Snapshot mode
367
368If you use the option @option{-snapshot}, all disk images are
369considered as read only. When sectors in written, they are written in
370a temporary file created in @file{/tmp}. You can however force the
acd935ef
FB
371write back to the raw disk images by using the @code{commit} monitor
372command (or @key{C-a s} in the serial console).
1f47a922 373
13a2e80f
FB
374@node vm_snapshots
375@subsection VM snapshots
376
377VM snapshots are snapshots of the complete virtual machine including
378CPU state, RAM, device state and the content of all the writable
379disks. In order to use VM snapshots, you must have at least one non
380removable and writable block device using the @code{qcow2} disk image
381format. Normally this device is the first virtual hard drive.
382
383Use the monitor command @code{savevm} to create a new VM snapshot or
384replace an existing one. A human readable name can be assigned to each
19d36792 385snapshot in addition to its numerical ID.
13a2e80f
FB
386
387Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
388a VM snapshot. @code{info snapshots} lists the available snapshots
389with their associated information:
390
391@example
392(qemu) info snapshots
393Snapshot devices: hda
394Snapshot list (from hda):
395ID TAG VM SIZE DATE VM CLOCK
3961 start 41M 2006-08-06 12:38:02 00:00:14.954
3972 40M 2006-08-06 12:43:29 00:00:18.633
3983 msys 40M 2006-08-06 12:44:04 00:00:23.514
399@end example
400
401A VM snapshot is made of a VM state info (its size is shown in
402@code{info snapshots}) and a snapshot of every writable disk image.
403The VM state info is stored in the first @code{qcow2} non removable
404and writable block device. The disk image snapshots are stored in
405every disk image. The size of a snapshot in a disk image is difficult
406to evaluate and is not shown by @code{info snapshots} because the
407associated disk sectors are shared among all the snapshots to save
19d36792
FB
408disk space (otherwise each snapshot would need a full copy of all the
409disk images).
13a2e80f
FB
410
411When using the (unrelated) @code{-snapshot} option
412(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
413but they are deleted as soon as you exit QEMU.
414
415VM snapshots currently have the following known limitations:
416@itemize
5fafdf24 417@item
13a2e80f
FB
418They cannot cope with removable devices if they are removed or
419inserted after a snapshot is done.
5fafdf24 420@item
13a2e80f
FB
421A few device drivers still have incomplete snapshot support so their
422state is not saved or restored properly (in particular USB).
423@end itemize
424
acd935ef
FB
425@node qemu_img_invocation
426@subsection @code{qemu-img} Invocation
1f47a922 427
acd935ef 428@include qemu-img.texi
05efe46e 429
975b092b
TS
430@node qemu_nbd_invocation
431@subsection @code{qemu-nbd} Invocation
432
433@include qemu-nbd.texi
434
19cb3738
FB
435@node host_drives
436@subsection Using host drives
437
438In addition to disk image files, QEMU can directly access host
439devices. We describe here the usage for QEMU version >= 0.8.3.
440
441@subsubsection Linux
442
443On Linux, you can directly use the host device filename instead of a
4be456f1 444disk image filename provided you have enough privileges to access
19cb3738
FB
445it. For example, use @file{/dev/cdrom} to access to the CDROM or
446@file{/dev/fd0} for the floppy.
447
f542086d 448@table @code
19cb3738
FB
449@item CD
450You can specify a CDROM device even if no CDROM is loaded. QEMU has
451specific code to detect CDROM insertion or removal. CDROM ejection by
452the guest OS is supported. Currently only data CDs are supported.
453@item Floppy
454You can specify a floppy device even if no floppy is loaded. Floppy
455removal is currently not detected accurately (if you change floppy
456without doing floppy access while the floppy is not loaded, the guest
457OS will think that the same floppy is loaded).
458@item Hard disks
459Hard disks can be used. Normally you must specify the whole disk
460(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
461see it as a partitioned disk. WARNING: unless you know what you do, it
462is better to only make READ-ONLY accesses to the hard disk otherwise
463you may corrupt your host data (use the @option{-snapshot} command
464line option or modify the device permissions accordingly).
465@end table
466
467@subsubsection Windows
468
01781963
FB
469@table @code
470@item CD
4be456f1 471The preferred syntax is the drive letter (e.g. @file{d:}). The
01781963
FB
472alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
473supported as an alias to the first CDROM drive.
19cb3738 474
e598752a 475Currently there is no specific code to handle removable media, so it
19cb3738
FB
476is better to use the @code{change} or @code{eject} monitor commands to
477change or eject media.
01781963 478@item Hard disks
89dfe898 479Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
01781963
FB
480where @var{N} is the drive number (0 is the first hard disk).
481
482WARNING: unless you know what you do, it is better to only make
483READ-ONLY accesses to the hard disk otherwise you may corrupt your
484host data (use the @option{-snapshot} command line so that the
485modifications are written in a temporary file).
486@end table
487
19cb3738
FB
488
489@subsubsection Mac OS X
490
5fafdf24 491@file{/dev/cdrom} is an alias to the first CDROM.
19cb3738 492
e598752a 493Currently there is no specific code to handle removable media, so it
19cb3738
FB
494is better to use the @code{change} or @code{eject} monitor commands to
495change or eject media.
496
debc7065 497@node disk_images_fat_images
2c6cadd4
FB
498@subsection Virtual FAT disk images
499
500QEMU can automatically create a virtual FAT disk image from a
501directory tree. In order to use it, just type:
502
5fafdf24 503@example
2c6cadd4
FB
504qemu linux.img -hdb fat:/my_directory
505@end example
506
507Then you access access to all the files in the @file{/my_directory}
508directory without having to copy them in a disk image or to export
509them via SAMBA or NFS. The default access is @emph{read-only}.
510
511Floppies can be emulated with the @code{:floppy:} option:
512
5fafdf24 513@example
2c6cadd4
FB
514qemu linux.img -fda fat:floppy:/my_directory
515@end example
516
517A read/write support is available for testing (beta stage) with the
518@code{:rw:} option:
519
5fafdf24 520@example
2c6cadd4
FB
521qemu linux.img -fda fat:floppy:rw:/my_directory
522@end example
523
524What you should @emph{never} do:
525@itemize
526@item use non-ASCII filenames ;
527@item use "-snapshot" together with ":rw:" ;
85b2c688
FB
528@item expect it to work when loadvm'ing ;
529@item write to the FAT directory on the host system while accessing it with the guest system.
2c6cadd4
FB
530@end itemize
531
75818250
TS
532@node disk_images_nbd
533@subsection NBD access
534
535QEMU can access directly to block device exported using the Network Block Device
536protocol.
537
538@example
539qemu linux.img -hdb nbd:my_nbd_server.mydomain.org:1024
540@end example
541
542If the NBD server is located on the same host, you can use an unix socket instead
543of an inet socket:
544
545@example
546qemu linux.img -hdb nbd:unix:/tmp/my_socket
547@end example
548
549In this case, the block device must be exported using qemu-nbd:
550
551@example
552qemu-nbd --socket=/tmp/my_socket my_disk.qcow2
553@end example
554
555The use of qemu-nbd allows to share a disk between several guests:
556@example
557qemu-nbd --socket=/tmp/my_socket --share=2 my_disk.qcow2
558@end example
559
560and then you can use it with two guests:
561@example
562qemu linux1.img -hdb nbd:unix:/tmp/my_socket
563qemu linux2.img -hdb nbd:unix:/tmp/my_socket
564@end example
565
debc7065 566@node pcsys_network
9d4fb82e
FB
567@section Network emulation
568
4be456f1 569QEMU can simulate several network cards (PCI or ISA cards on the PC
41d03949
FB
570target) and can connect them to an arbitrary number of Virtual Local
571Area Networks (VLANs). Host TAP devices can be connected to any QEMU
572VLAN. VLAN can be connected between separate instances of QEMU to
4be456f1 573simulate large networks. For simpler usage, a non privileged user mode
41d03949
FB
574network stack can replace the TAP device to have a basic network
575connection.
576
577@subsection VLANs
9d4fb82e 578
41d03949
FB
579QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
580connection between several network devices. These devices can be for
581example QEMU virtual Ethernet cards or virtual Host ethernet devices
582(TAP devices).
9d4fb82e 583
41d03949
FB
584@subsection Using TAP network interfaces
585
586This is the standard way to connect QEMU to a real network. QEMU adds
587a virtual network device on your host (called @code{tapN}), and you
588can then configure it as if it was a real ethernet card.
9d4fb82e 589
8f40c388
FB
590@subsubsection Linux host
591
9d4fb82e
FB
592As an example, you can download the @file{linux-test-xxx.tar.gz}
593archive and copy the script @file{qemu-ifup} in @file{/etc} and
594configure properly @code{sudo} so that the command @code{ifconfig}
595contained in @file{qemu-ifup} can be executed as root. You must verify
41d03949 596that your host kernel supports the TAP network interfaces: the
9d4fb82e
FB
597device @file{/dev/net/tun} must be present.
598
ee0f4751
FB
599See @ref{sec_invocation} to have examples of command lines using the
600TAP network interfaces.
9d4fb82e 601
8f40c388
FB
602@subsubsection Windows host
603
604There is a virtual ethernet driver for Windows 2000/XP systems, called
605TAP-Win32. But it is not included in standard QEMU for Windows,
606so you will need to get it separately. It is part of OpenVPN package,
607so download OpenVPN from : @url{http://openvpn.net/}.
608
9d4fb82e
FB
609@subsection Using the user mode network stack
610
41d03949
FB
611By using the option @option{-net user} (default configuration if no
612@option{-net} option is specified), QEMU uses a completely user mode
4be456f1 613network stack (you don't need root privilege to use the virtual
41d03949 614network). The virtual network configuration is the following:
9d4fb82e
FB
615
616@example
617
41d03949
FB
618 QEMU VLAN <------> Firewall/DHCP server <-----> Internet
619 | (10.0.2.2)
9d4fb82e 620 |
2518bd0d 621 ----> DNS server (10.0.2.3)
3b46e624 622 |
2518bd0d 623 ----> SMB server (10.0.2.4)
9d4fb82e
FB
624@end example
625
626The QEMU VM behaves as if it was behind a firewall which blocks all
627incoming connections. You can use a DHCP client to automatically
41d03949
FB
628configure the network in the QEMU VM. The DHCP server assign addresses
629to the hosts starting from 10.0.2.15.
9d4fb82e
FB
630
631In order to check that the user mode network is working, you can ping
632the address 10.0.2.2 and verify that you got an address in the range
63310.0.2.x from the QEMU virtual DHCP server.
634
b415a407 635Note that @code{ping} is not supported reliably to the internet as it
4be456f1 636would require root privileges. It means you can only ping the local
b415a407
FB
637router (10.0.2.2).
638
9bf05444
FB
639When using the built-in TFTP server, the router is also the TFTP
640server.
641
642When using the @option{-redir} option, TCP or UDP connections can be
643redirected from the host to the guest. It allows for example to
644redirect X11, telnet or SSH connections.
443f1376 645
41d03949
FB
646@subsection Connecting VLANs between QEMU instances
647
648Using the @option{-net socket} option, it is possible to make VLANs
649that span several QEMU instances. See @ref{sec_invocation} to have a
650basic example.
651
9d4fb82e
FB
652@node direct_linux_boot
653@section Direct Linux Boot
1f673135
FB
654
655This section explains how to launch a Linux kernel inside QEMU without
656having to make a full bootable image. It is very useful for fast Linux
ee0f4751 657kernel testing.
1f673135 658
ee0f4751 659The syntax is:
1f673135 660@example
ee0f4751 661qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1f673135
FB
662@end example
663
ee0f4751
FB
664Use @option{-kernel} to provide the Linux kernel image and
665@option{-append} to give the kernel command line arguments. The
666@option{-initrd} option can be used to provide an INITRD image.
1f673135 667
ee0f4751
FB
668When using the direct Linux boot, a disk image for the first hard disk
669@file{hda} is required because its boot sector is used to launch the
670Linux kernel.
1f673135 671
ee0f4751
FB
672If you do not need graphical output, you can disable it and redirect
673the virtual serial port and the QEMU monitor to the console with the
674@option{-nographic} option. The typical command line is:
1f673135 675@example
ee0f4751
FB
676qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
677 -append "root=/dev/hda console=ttyS0" -nographic
1f673135
FB
678@end example
679
ee0f4751
FB
680Use @key{Ctrl-a c} to switch between the serial console and the
681monitor (@pxref{pcsys_keys}).
1f673135 682
debc7065 683@node pcsys_usb
b389dbfb
FB
684@section USB emulation
685
0aff66b5
PB
686QEMU emulates a PCI UHCI USB controller. You can virtually plug
687virtual USB devices or real host USB devices (experimental, works only
688on Linux hosts). Qemu will automatically create and connect virtual USB hubs
f542086d 689as necessary to connect multiple USB devices.
b389dbfb 690
0aff66b5
PB
691@menu
692* usb_devices::
693* host_usb_devices::
694@end menu
695@node usb_devices
696@subsection Connecting USB devices
b389dbfb 697
0aff66b5
PB
698USB devices can be connected with the @option{-usbdevice} commandline option
699or the @code{usb_add} monitor command. Available devices are:
b389dbfb 700
db380c06
AZ
701@table @code
702@item mouse
0aff66b5 703Virtual Mouse. This will override the PS/2 mouse emulation when activated.
db380c06 704@item tablet
c6d46c20 705Pointer device that uses absolute coordinates (like a touchscreen).
0aff66b5
PB
706This means qemu is able to report the mouse position without having
707to grab the mouse. Also overrides the PS/2 mouse emulation when activated.
db380c06 708@item disk:@var{file}
0aff66b5 709Mass storage device based on @var{file} (@pxref{disk_images})
db380c06 710@item host:@var{bus.addr}
0aff66b5
PB
711Pass through the host device identified by @var{bus.addr}
712(Linux only)
db380c06 713@item host:@var{vendor_id:product_id}
0aff66b5
PB
714Pass through the host device identified by @var{vendor_id:product_id}
715(Linux only)
db380c06 716@item wacom-tablet
f6d2a316
AZ
717Virtual Wacom PenPartner tablet. This device is similar to the @code{tablet}
718above but it can be used with the tslib library because in addition to touch
719coordinates it reports touch pressure.
db380c06 720@item keyboard
47b2d338 721Standard USB keyboard. Will override the PS/2 keyboard (if present).
db380c06
AZ
722@item serial:[vendorid=@var{vendor_id}][,product_id=@var{product_id}]:@var{dev}
723Serial converter. This emulates an FTDI FT232BM chip connected to host character
724device @var{dev}. The available character devices are the same as for the
725@code{-serial} option. The @code{vendorid} and @code{productid} options can be
a11d070e 726used to override the default 0403:6001. For instance,
db380c06
AZ
727@example
728usb_add serial:productid=FA00:tcp:192.168.0.2:4444
729@end example
730will connect to tcp port 4444 of ip 192.168.0.2, and plug that to the virtual
731serial converter, faking a Matrix Orbital LCD Display (USB ID 0403:FA00).
2e4d9fb1
AJ
732@item braille
733Braille device. This will use BrlAPI to display the braille output on a real
734or fake device.
9ad97e65
AZ
735@item net:@var{options}
736Network adapter that supports CDC ethernet and RNDIS protocols. @var{options}
737specifies NIC options as with @code{-net nic,}@var{options} (see description).
738For instance, user-mode networking can be used with
6c9f886c 739@example
9ad97e65 740qemu [...OPTIONS...] -net user,vlan=0 -usbdevice net:vlan=0
6c9f886c
AZ
741@end example
742Currently this cannot be used in machines that support PCI NICs.
2d564691
AZ
743@item bt[:@var{hci-type}]
744Bluetooth dongle whose type is specified in the same format as with
745the @option{-bt hci} option, @pxref{bt-hcis,,allowed HCI types}. If
746no type is given, the HCI logic corresponds to @code{-bt hci,vlan=0}.
747This USB device implements the USB Transport Layer of HCI. Example
748usage:
749@example
750qemu [...OPTIONS...] -usbdevice bt:hci,vlan=3 -bt device:keyboard,vlan=3
751@end example
0aff66b5 752@end table
b389dbfb 753
0aff66b5 754@node host_usb_devices
b389dbfb
FB
755@subsection Using host USB devices on a Linux host
756
757WARNING: this is an experimental feature. QEMU will slow down when
758using it. USB devices requiring real time streaming (i.e. USB Video
759Cameras) are not supported yet.
760
761@enumerate
5fafdf24 762@item If you use an early Linux 2.4 kernel, verify that no Linux driver
b389dbfb
FB
763is actually using the USB device. A simple way to do that is simply to
764disable the corresponding kernel module by renaming it from @file{mydriver.o}
765to @file{mydriver.o.disabled}.
766
767@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
768@example
769ls /proc/bus/usb
770001 devices drivers
771@end example
772
773@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:
774@example
775chown -R myuid /proc/bus/usb
776@end example
777
778@item Launch QEMU and do in the monitor:
5fafdf24 779@example
b389dbfb
FB
780info usbhost
781 Device 1.2, speed 480 Mb/s
782 Class 00: USB device 1234:5678, USB DISK
783@end example
784You should see the list of the devices you can use (Never try to use
785hubs, it won't work).
786
787@item Add the device in QEMU by using:
5fafdf24 788@example
b389dbfb
FB
789usb_add host:1234:5678
790@end example
791
792Normally the guest OS should report that a new USB device is
793plugged. You can use the option @option{-usbdevice} to do the same.
794
795@item Now you can try to use the host USB device in QEMU.
796
797@end enumerate
798
799When relaunching QEMU, you may have to unplug and plug again the USB
800device to make it work again (this is a bug).
801
f858dcae
TS
802@node vnc_security
803@section VNC security
804
805The VNC server capability provides access to the graphical console
806of the guest VM across the network. This has a number of security
807considerations depending on the deployment scenarios.
808
809@menu
810* vnc_sec_none::
811* vnc_sec_password::
812* vnc_sec_certificate::
813* vnc_sec_certificate_verify::
814* vnc_sec_certificate_pw::
2f9606b3
AL
815* vnc_sec_sasl::
816* vnc_sec_certificate_sasl::
f858dcae 817* vnc_generate_cert::
2f9606b3 818* vnc_setup_sasl::
f858dcae
TS
819@end menu
820@node vnc_sec_none
821@subsection Without passwords
822
823The simplest VNC server setup does not include any form of authentication.
824For this setup it is recommended to restrict it to listen on a UNIX domain
825socket only. For example
826
827@example
828qemu [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
829@end example
830
831This ensures that only users on local box with read/write access to that
832path can access the VNC server. To securely access the VNC server from a
833remote machine, a combination of netcat+ssh can be used to provide a secure
834tunnel.
835
836@node vnc_sec_password
837@subsection With passwords
838
839The VNC protocol has limited support for password based authentication. Since
840the protocol limits passwords to 8 characters it should not be considered
841to provide high security. The password can be fairly easily brute-forced by
842a client making repeat connections. For this reason, a VNC server using password
843authentication should be restricted to only listen on the loopback interface
34a3d239 844or UNIX domain sockets. Password authentication is requested with the @code{password}
f858dcae
TS
845option, and then once QEMU is running the password is set with the monitor. Until
846the monitor is used to set the password all clients will be rejected.
847
848@example
849qemu [...OPTIONS...] -vnc :1,password -monitor stdio
850(qemu) change vnc password
851Password: ********
852(qemu)
853@end example
854
855@node vnc_sec_certificate
856@subsection With x509 certificates
857
858The QEMU VNC server also implements the VeNCrypt extension allowing use of
859TLS for encryption of the session, and x509 certificates for authentication.
860The use of x509 certificates is strongly recommended, because TLS on its
861own is susceptible to man-in-the-middle attacks. Basic x509 certificate
862support provides a secure session, but no authentication. This allows any
863client to connect, and provides an encrypted session.
864
865@example
866qemu [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
867@end example
868
869In the above example @code{/etc/pki/qemu} should contain at least three files,
870@code{ca-cert.pem}, @code{server-cert.pem} and @code{server-key.pem}. Unprivileged
871users will want to use a private directory, for example @code{$HOME/.pki/qemu}.
872NB the @code{server-key.pem} file should be protected with file mode 0600 to
873only be readable by the user owning it.
874
875@node vnc_sec_certificate_verify
876@subsection With x509 certificates and client verification
877
878Certificates can also provide a means to authenticate the client connecting.
879The server will request that the client provide a certificate, which it will
880then validate against the CA certificate. This is a good choice if deploying
881in an environment with a private internal certificate authority.
882
883@example
884qemu [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
885@end example
886
887
888@node vnc_sec_certificate_pw
889@subsection With x509 certificates, client verification and passwords
890
891Finally, the previous method can be combined with VNC password authentication
892to provide two layers of authentication for clients.
893
894@example
895qemu [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
896(qemu) change vnc password
897Password: ********
898(qemu)
899@end example
900
2f9606b3
AL
901
902@node vnc_sec_sasl
903@subsection With SASL authentication
904
905The SASL authentication method is a VNC extension, that provides an
906easily extendable, pluggable authentication method. This allows for
907integration with a wide range of authentication mechanisms, such as
908PAM, GSSAPI/Kerberos, LDAP, SQL databases, one-time keys and more.
909The strength of the authentication depends on the exact mechanism
910configured. If the chosen mechanism also provides a SSF layer, then
911it will encrypt the datastream as well.
912
913Refer to the later docs on how to choose the exact SASL mechanism
914used for authentication, but assuming use of one supporting SSF,
915then QEMU can be launched with:
916
917@example
918qemu [...OPTIONS...] -vnc :1,sasl -monitor stdio
919@end example
920
921@node vnc_sec_certificate_sasl
922@subsection With x509 certificates and SASL authentication
923
924If the desired SASL authentication mechanism does not supported
925SSF layers, then it is strongly advised to run it in combination
926with TLS and x509 certificates. This provides securely encrypted
927data stream, avoiding risk of compromising of the security
928credentials. This can be enabled, by combining the 'sasl' option
929with the aforementioned TLS + x509 options:
930
931@example
932qemu [...OPTIONS...] -vnc :1,tls,x509,sasl -monitor stdio
933@end example
934
935
f858dcae
TS
936@node vnc_generate_cert
937@subsection Generating certificates for VNC
938
939The GNU TLS packages provides a command called @code{certtool} which can
940be used to generate certificates and keys in PEM format. At a minimum it
941is neccessary to setup a certificate authority, and issue certificates to
942each server. If using certificates for authentication, then each client
943will also need to be issued a certificate. The recommendation is for the
944server to keep its certificates in either @code{/etc/pki/qemu} or for
945unprivileged users in @code{$HOME/.pki/qemu}.
946
947@menu
948* vnc_generate_ca::
949* vnc_generate_server::
950* vnc_generate_client::
951@end menu
952@node vnc_generate_ca
953@subsubsection Setup the Certificate Authority
954
955This step only needs to be performed once per organization / organizational
956unit. First the CA needs a private key. This key must be kept VERY secret
957and secure. If this key is compromised the entire trust chain of the certificates
958issued with it is lost.
959
960@example
961# certtool --generate-privkey > ca-key.pem
962@end example
963
964A CA needs to have a public certificate. For simplicity it can be a self-signed
965certificate, or one issue by a commercial certificate issuing authority. To
966generate a self-signed certificate requires one core piece of information, the
967name of the organization.
968
969@example
970# cat > ca.info <<EOF
971cn = Name of your organization
972ca
973cert_signing_key
974EOF
975# certtool --generate-self-signed \
976 --load-privkey ca-key.pem
977 --template ca.info \
978 --outfile ca-cert.pem
979@end example
980
981The @code{ca-cert.pem} file should be copied to all servers and clients wishing to utilize
982TLS support in the VNC server. The @code{ca-key.pem} must not be disclosed/copied at all.
983
984@node vnc_generate_server
985@subsubsection Issuing server certificates
986
987Each server (or host) needs to be issued with a key and certificate. When connecting
988the certificate is sent to the client which validates it against the CA certificate.
989The core piece of information for a server certificate is the hostname. This should
990be the fully qualified hostname that the client will connect with, since the client
991will typically also verify the hostname in the certificate. On the host holding the
992secure CA private key:
993
994@example
995# cat > server.info <<EOF
996organization = Name of your organization
997cn = server.foo.example.com
998tls_www_server
999encryption_key
1000signing_key
1001EOF
1002# certtool --generate-privkey > server-key.pem
1003# certtool --generate-certificate \
1004 --load-ca-certificate ca-cert.pem \
1005 --load-ca-privkey ca-key.pem \
1006 --load-privkey server server-key.pem \
1007 --template server.info \
1008 --outfile server-cert.pem
1009@end example
1010
1011The @code{server-key.pem} and @code{server-cert.pem} files should now be securely copied
1012to the server for which they were generated. The @code{server-key.pem} is security
1013sensitive and should be kept protected with file mode 0600 to prevent disclosure.
1014
1015@node vnc_generate_client
1016@subsubsection Issuing client certificates
1017
1018If the QEMU VNC server is to use the @code{x509verify} option to validate client
1019certificates as its authentication mechanism, each client also needs to be issued
1020a certificate. The client certificate contains enough metadata to uniquely identify
1021the client, typically organization, state, city, building, etc. On the host holding
1022the secure CA private key:
1023
1024@example
1025# cat > client.info <<EOF
1026country = GB
1027state = London
1028locality = London
1029organiazation = Name of your organization
1030cn = client.foo.example.com
1031tls_www_client
1032encryption_key
1033signing_key
1034EOF
1035# certtool --generate-privkey > client-key.pem
1036# certtool --generate-certificate \
1037 --load-ca-certificate ca-cert.pem \
1038 --load-ca-privkey ca-key.pem \
1039 --load-privkey client-key.pem \
1040 --template client.info \
1041 --outfile client-cert.pem
1042@end example
1043
1044The @code{client-key.pem} and @code{client-cert.pem} files should now be securely
1045copied to the client for which they were generated.
1046
2f9606b3
AL
1047
1048@node vnc_setup_sasl
1049
1050@subsection Configuring SASL mechanisms
1051
1052The following documentation assumes use of the Cyrus SASL implementation on a
1053Linux host, but the principals should apply to any other SASL impl. When SASL
1054is enabled, the mechanism configuration will be loaded from system default
1055SASL service config /etc/sasl2/qemu.conf. If running QEMU as an
1056unprivileged user, an environment variable SASL_CONF_PATH can be used
1057to make it search alternate locations for the service config.
1058
1059The default configuration might contain
1060
1061@example
1062mech_list: digest-md5
1063sasldb_path: /etc/qemu/passwd.db
1064@end example
1065
1066This says to use the 'Digest MD5' mechanism, which is similar to the HTTP
1067Digest-MD5 mechanism. The list of valid usernames & passwords is maintained
1068in the /etc/qemu/passwd.db file, and can be updated using the saslpasswd2
1069command. While this mechanism is easy to configure and use, it is not
1070considered secure by modern standards, so only suitable for developers /
1071ad-hoc testing.
1072
1073A more serious deployment might use Kerberos, which is done with the 'gssapi'
1074mechanism
1075
1076@example
1077mech_list: gssapi
1078keytab: /etc/qemu/krb5.tab
1079@end example
1080
1081For this to work the administrator of your KDC must generate a Kerberos
1082principal for the server, with a name of 'qemu/somehost.example.com@@EXAMPLE.COM'
1083replacing 'somehost.example.com' with the fully qualified host name of the
1084machine running QEMU, and 'EXAMPLE.COM' with the Keberos Realm.
1085
1086Other configurations will be left as an exercise for the reader. It should
1087be noted that only Digest-MD5 and GSSAPI provides a SSF layer for data
1088encryption. For all other mechanisms, VNC should always be configured to
1089use TLS and x509 certificates to protect security credentials from snooping.
1090
0806e3f6 1091@node gdb_usage
da415d54
FB
1092@section GDB usage
1093
1094QEMU has a primitive support to work with gdb, so that you can do
0806e3f6 1095'Ctrl-C' while the virtual machine is running and inspect its state.
da415d54 1096
9d4520d0 1097In order to use gdb, launch qemu with the '-s' option. It will wait for a
da415d54
FB
1098gdb connection:
1099@example
debc7065
FB
1100> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1101 -append "root=/dev/hda"
da415d54
FB
1102Connected to host network interface: tun0
1103Waiting gdb connection on port 1234
1104@end example
1105
1106Then launch gdb on the 'vmlinux' executable:
1107@example
1108> gdb vmlinux
1109@end example
1110
1111In gdb, connect to QEMU:
1112@example
6c9bf893 1113(gdb) target remote localhost:1234
da415d54
FB
1114@end example
1115
1116Then you can use gdb normally. For example, type 'c' to launch the kernel:
1117@example
1118(gdb) c
1119@end example
1120
0806e3f6
FB
1121Here are some useful tips in order to use gdb on system code:
1122
1123@enumerate
1124@item
1125Use @code{info reg} to display all the CPU registers.
1126@item
1127Use @code{x/10i $eip} to display the code at the PC position.
1128@item
1129Use @code{set architecture i8086} to dump 16 bit code. Then use
294e8637 1130@code{x/10i $cs*16+$eip} to dump the code at the PC position.
0806e3f6
FB
1131@end enumerate
1132
60897d36
EI
1133Advanced debugging options:
1134
1135The 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 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 1136@table @code
60897d36
EI
1137@item maintenance packet qqemu.sstepbits
1138
1139This will display the MASK bits used to control the single stepping IE:
1140@example
1141(gdb) maintenance packet qqemu.sstepbits
1142sending: "qqemu.sstepbits"
1143received: "ENABLE=1,NOIRQ=2,NOTIMER=4"
1144@end example
1145@item maintenance packet qqemu.sstep
1146
1147This will display the current value of the mask used when single stepping IE:
1148@example
1149(gdb) maintenance packet qqemu.sstep
1150sending: "qqemu.sstep"
1151received: "0x7"
1152@end example
1153@item maintenance packet Qqemu.sstep=HEX_VALUE
1154
1155This will change the single step mask, so if wanted to enable IRQs on the single step, but not timers, you would use:
1156@example
1157(gdb) maintenance packet Qqemu.sstep=0x5
1158sending: "qemu.sstep=0x5"
1159received: "OK"
1160@end example
94d45e44 1161@end table
60897d36 1162
debc7065 1163@node pcsys_os_specific
1a084f3d
FB
1164@section Target OS specific information
1165
1166@subsection Linux
1167
15a34c63
FB
1168To have access to SVGA graphic modes under X11, use the @code{vesa} or
1169the @code{cirrus} X11 driver. For optimal performances, use 16 bit
1170color depth in the guest and the host OS.
1a084f3d 1171
e3371e62
FB
1172When using a 2.6 guest Linux kernel, you should add the option
1173@code{clock=pit} on the kernel command line because the 2.6 Linux
1174kernels make very strict real time clock checks by default that QEMU
1175cannot simulate exactly.
1176
7c3fc84d
FB
1177When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1178not activated because QEMU is slower with this patch. The QEMU
1179Accelerator Module is also much slower in this case. Earlier Fedora
4be456f1 1180Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporate this
7c3fc84d
FB
1181patch by default. Newer kernels don't have it.
1182
1a084f3d
FB
1183@subsection Windows
1184
1185If you have a slow host, using Windows 95 is better as it gives the
1186best speed. Windows 2000 is also a good choice.
1187
e3371e62
FB
1188@subsubsection SVGA graphic modes support
1189
1190QEMU emulates a Cirrus Logic GD5446 Video
15a34c63
FB
1191card. All Windows versions starting from Windows 95 should recognize
1192and use this graphic card. For optimal performances, use 16 bit color
1193depth in the guest and the host OS.
1a084f3d 1194
3cb0853a
FB
1195If you are using Windows XP as guest OS and if you want to use high
1196resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
11971280x1024x16), then you should use the VESA VBE virtual graphic card
1198(option @option{-std-vga}).
1199
e3371e62
FB
1200@subsubsection CPU usage reduction
1201
1202Windows 9x does not correctly use the CPU HLT
15a34c63
FB
1203instruction. The result is that it takes host CPU cycles even when
1204idle. You can install the utility from
1205@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
1206problem. Note that no such tool is needed for NT, 2000 or XP.
1a084f3d 1207
9d0a8e6f 1208@subsubsection Windows 2000 disk full problem
e3371e62 1209
9d0a8e6f
FB
1210Windows 2000 has a bug which gives a disk full problem during its
1211installation. When installing it, use the @option{-win2k-hack} QEMU
1212option to enable a specific workaround. After Windows 2000 is
1213installed, you no longer need this option (this option slows down the
1214IDE transfers).
e3371e62 1215
6cc721cf
FB
1216@subsubsection Windows 2000 shutdown
1217
1218Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1219can. It comes from the fact that Windows 2000 does not automatically
1220use the APM driver provided by the BIOS.
1221
1222In order to correct that, do the following (thanks to Struan
1223Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
1224Add/Troubleshoot a device => Add a new device & Next => No, select the
1225hardware from a list & Next => NT Apm/Legacy Support & Next => Next
1226(again) a few times. Now the driver is installed and Windows 2000 now
5fafdf24 1227correctly instructs QEMU to shutdown at the appropriate moment.
6cc721cf
FB
1228
1229@subsubsection Share a directory between Unix and Windows
1230
1231See @ref{sec_invocation} about the help of the option @option{-smb}.
1232
2192c332 1233@subsubsection Windows XP security problem
e3371e62
FB
1234
1235Some releases of Windows XP install correctly but give a security
1236error when booting:
1237@example
1238A problem is preventing Windows from accurately checking the
1239license for this computer. Error code: 0x800703e6.
1240@end example
e3371e62 1241
2192c332
FB
1242The workaround is to install a service pack for XP after a boot in safe
1243mode. Then reboot, and the problem should go away. Since there is no
1244network while in safe mode, its recommended to download the full
1245installation of SP1 or SP2 and transfer that via an ISO or using the
1246vvfat block device ("-hdb fat:directory_which_holds_the_SP").
e3371e62 1247
a0a821a4
FB
1248@subsection MS-DOS and FreeDOS
1249
1250@subsubsection CPU usage reduction
1251
1252DOS does not correctly use the CPU HLT instruction. The result is that
1253it takes host CPU cycles even when idle. You can install the utility
1254from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
1255problem.
1256
debc7065 1257@node QEMU System emulator for non PC targets
3f9f3aa1
FB
1258@chapter QEMU System emulator for non PC targets
1259
1260QEMU is a generic emulator and it emulates many non PC
1261machines. Most of the options are similar to the PC emulator. The
4be456f1 1262differences are mentioned in the following sections.
3f9f3aa1 1263
debc7065
FB
1264@menu
1265* QEMU PowerPC System emulator::
24d4de45
TS
1266* Sparc32 System emulator::
1267* Sparc64 System emulator::
1268* MIPS System emulator::
1269* ARM System emulator::
1270* ColdFire System emulator::
debc7065
FB
1271@end menu
1272
1273@node QEMU PowerPC System emulator
3f9f3aa1 1274@section QEMU PowerPC System emulator
1a084f3d 1275
15a34c63
FB
1276Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1277or PowerMac PowerPC system.
1a084f3d 1278
b671f9ed 1279QEMU emulates the following PowerMac peripherals:
1a084f3d 1280
15a34c63 1281@itemize @minus
5fafdf24 1282@item
006f3a48 1283UniNorth or Grackle PCI Bridge
15a34c63
FB
1284@item
1285PCI VGA compatible card with VESA Bochs Extensions
5fafdf24 1286@item
15a34c63 12872 PMAC IDE interfaces with hard disk and CD-ROM support
5fafdf24 1288@item
15a34c63
FB
1289NE2000 PCI adapters
1290@item
1291Non Volatile RAM
1292@item
1293VIA-CUDA with ADB keyboard and mouse.
1a084f3d
FB
1294@end itemize
1295
b671f9ed 1296QEMU emulates the following PREP peripherals:
52c00a5f
FB
1297
1298@itemize @minus
5fafdf24 1299@item
15a34c63
FB
1300PCI Bridge
1301@item
1302PCI VGA compatible card with VESA Bochs Extensions
5fafdf24 1303@item
52c00a5f
FB
13042 IDE interfaces with hard disk and CD-ROM support
1305@item
1306Floppy disk
5fafdf24 1307@item
15a34c63 1308NE2000 network adapters
52c00a5f
FB
1309@item
1310Serial port
1311@item
1312PREP Non Volatile RAM
15a34c63
FB
1313@item
1314PC compatible keyboard and mouse.
52c00a5f
FB
1315@end itemize
1316
15a34c63 1317QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
3f9f3aa1 1318@url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
52c00a5f 1319
992e5acd 1320Since version 0.9.1, QEMU uses OpenBIOS @url{http://www.openbios.org/}
006f3a48
BS
1321for the g3beige and mac99 PowerMac machines. OpenBIOS is a free (GPL
1322v2) portable firmware implementation. The goal is to implement a 100%
1323IEEE 1275-1994 (referred to as Open Firmware) compliant firmware.
992e5acd 1324
15a34c63
FB
1325@c man begin OPTIONS
1326
1327The following options are specific to the PowerPC emulation:
1328
1329@table @option
1330
3b46e624 1331@item -g WxH[xDEPTH]
15a34c63
FB
1332
1333Set the initial VGA graphic mode. The default is 800x600x15.
1334
95efd11c
BS
1335@item -prom-env string
1336
1337Set OpenBIOS variables in NVRAM, for example:
1338
1339@example
1340qemu-system-ppc -prom-env 'auto-boot?=false' \
1341 -prom-env 'boot-device=hd:2,\yaboot' \
1342 -prom-env 'boot-args=conf=hd:2,\yaboot.conf'
1343@end example
1344
1345These variables are not used by Open Hack'Ware.
1346
15a34c63
FB
1347@end table
1348
5fafdf24 1349@c man end
15a34c63
FB
1350
1351
52c00a5f 1352More information is available at
3f9f3aa1 1353@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
52c00a5f 1354
24d4de45
TS
1355@node Sparc32 System emulator
1356@section Sparc32 System emulator
e80cfcfc 1357
34a3d239
BS
1358Use the executable @file{qemu-system-sparc} to simulate the following
1359Sun4m architecture machines:
1360@itemize @minus
1361@item
1362SPARCstation 4
1363@item
1364SPARCstation 5
1365@item
1366SPARCstation 10
1367@item
1368SPARCstation 20
1369@item
1370SPARCserver 600MP
1371@item
1372SPARCstation LX
1373@item
1374SPARCstation Voyager
1375@item
1376SPARCclassic
1377@item
1378SPARCbook
1379@end itemize
1380
1381The emulation is somewhat complete. SMP up to 16 CPUs is supported,
1382but Linux limits the number of usable CPUs to 4.
e80cfcfc 1383
34a3d239
BS
1384It's also possible to simulate a SPARCstation 2 (sun4c architecture),
1385SPARCserver 1000, or SPARCcenter 2000 (sun4d architecture), but these
1386emulators are not usable yet.
1387
1388QEMU emulates the following sun4m/sun4c/sun4d peripherals:
e80cfcfc
FB
1389
1390@itemize @minus
3475187d 1391@item
7d85892b 1392IOMMU or IO-UNITs
e80cfcfc
FB
1393@item
1394TCX Frame buffer
5fafdf24 1395@item
e80cfcfc
FB
1396Lance (Am7990) Ethernet
1397@item
34a3d239 1398Non Volatile RAM M48T02/M48T08
e80cfcfc 1399@item
3475187d
FB
1400Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1401and power/reset logic
1402@item
1403ESP SCSI controller with hard disk and CD-ROM support
1404@item
6a3b9cc9 1405Floppy drive (not on SS-600MP)
a2502b58
BS
1406@item
1407CS4231 sound device (only on SS-5, not working yet)
e80cfcfc
FB
1408@end itemize
1409
6a3b9cc9
BS
1410The number of peripherals is fixed in the architecture. Maximum
1411memory size depends on the machine type, for SS-5 it is 256MB and for
7d85892b 1412others 2047MB.
3475187d 1413
30a604f3 1414Since version 0.8.2, QEMU uses OpenBIOS
0986ac3b
FB
1415@url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
1416firmware implementation. The goal is to implement a 100% IEEE
14171275-1994 (referred to as Open Firmware) compliant firmware.
3475187d
FB
1418
1419A sample Linux 2.6 series kernel and ram disk image are available on
34a3d239
BS
1420the QEMU web site. There are still issues with NetBSD and OpenBSD, but
1421some kernel versions work. Please note that currently Solaris kernels
1422don't work probably due to interface issues between OpenBIOS and
1423Solaris.
3475187d
FB
1424
1425@c man begin OPTIONS
1426
a2502b58 1427The following options are specific to the Sparc32 emulation:
3475187d
FB
1428
1429@table @option
1430
a2502b58 1431@item -g WxHx[xDEPTH]
3475187d 1432
a2502b58
BS
1433Set the initial TCX graphic mode. The default is 1024x768x8, currently
1434the only other possible mode is 1024x768x24.
3475187d 1435
66508601
BS
1436@item -prom-env string
1437
1438Set OpenBIOS variables in NVRAM, for example:
1439
1440@example
1441qemu-system-sparc -prom-env 'auto-boot?=false' \
1442 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
1443@end example
1444
34a3d239 1445@item -M [SS-4|SS-5|SS-10|SS-20|SS-600MP|LX|Voyager|SPARCClassic|SPARCbook|SS-2|SS-1000|SS-2000]
a2502b58
BS
1446
1447Set the emulated machine type. Default is SS-5.
1448
3475187d
FB
1449@end table
1450
5fafdf24 1451@c man end
3475187d 1452
24d4de45
TS
1453@node Sparc64 System emulator
1454@section Sparc64 System emulator
e80cfcfc 1455
34a3d239
BS
1456Use the executable @file{qemu-system-sparc64} to simulate a Sun4u
1457(UltraSPARC PC-like machine), Sun4v (T1 PC-like machine), or generic
1458Niagara (T1) machine. The emulator is not usable for anything yet, but
1459it can launch some kernels.
b756921a 1460
c7ba218d 1461QEMU emulates the following peripherals:
83469015
FB
1462
1463@itemize @minus
1464@item
5fafdf24 1465UltraSparc IIi APB PCI Bridge
83469015
FB
1466@item
1467PCI VGA compatible card with VESA Bochs Extensions
1468@item
34a3d239
BS
1469PS/2 mouse and keyboard
1470@item
83469015
FB
1471Non Volatile RAM M48T59
1472@item
1473PC-compatible serial ports
c7ba218d
BS
1474@item
14752 PCI IDE interfaces with hard disk and CD-ROM support
34a3d239
BS
1476@item
1477Floppy disk
83469015
FB
1478@end itemize
1479
c7ba218d
BS
1480@c man begin OPTIONS
1481
1482The following options are specific to the Sparc64 emulation:
1483
1484@table @option
1485
34a3d239
BS
1486@item -prom-env string
1487
1488Set OpenBIOS variables in NVRAM, for example:
1489
1490@example
1491qemu-system-sparc64 -prom-env 'auto-boot?=false'
1492@end example
1493
1494@item -M [sun4u|sun4v|Niagara]
c7ba218d
BS
1495
1496Set the emulated machine type. The default is sun4u.
1497
1498@end table
1499
1500@c man end
1501
24d4de45
TS
1502@node MIPS System emulator
1503@section MIPS System emulator
9d0a8e6f 1504
d9aedc32
TS
1505Four executables cover simulation of 32 and 64-bit MIPS systems in
1506both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
1507@file{qemu-system-mips64} and @file{qemu-system-mips64el}.
88cb0a02 1508Five different machine types are emulated:
24d4de45
TS
1509
1510@itemize @minus
1511@item
1512A generic ISA PC-like machine "mips"
1513@item
1514The MIPS Malta prototype board "malta"
1515@item
d9aedc32 1516An ACER Pica "pica61". This machine needs the 64-bit emulator.
6bf5b4e8 1517@item
f0fc6f8f 1518MIPS emulator pseudo board "mipssim"
88cb0a02
AJ
1519@item
1520A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
24d4de45
TS
1521@end itemize
1522
1523The generic emulation is supported by Debian 'Etch' and is able to
1524install Debian into a virtual disk image. The following devices are
1525emulated:
3f9f3aa1
FB
1526
1527@itemize @minus
5fafdf24 1528@item
6bf5b4e8 1529A range of MIPS CPUs, default is the 24Kf
3f9f3aa1
FB
1530@item
1531PC style serial port
1532@item
24d4de45
TS
1533PC style IDE disk
1534@item
3f9f3aa1
FB
1535NE2000 network card
1536@end itemize
1537
24d4de45
TS
1538The Malta emulation supports the following devices:
1539
1540@itemize @minus
1541@item
0b64d008 1542Core board with MIPS 24Kf CPU and Galileo system controller
24d4de45
TS
1543@item
1544PIIX4 PCI/USB/SMbus controller
1545@item
1546The Multi-I/O chip's serial device
1547@item
3a2eeac0 1548PCI network cards (PCnet32 and others)
24d4de45
TS
1549@item
1550Malta FPGA serial device
1551@item
1f605a76 1552Cirrus (default) or any other PCI VGA graphics card
24d4de45
TS
1553@end itemize
1554
1555The ACER Pica emulation supports:
1556
1557@itemize @minus
1558@item
1559MIPS R4000 CPU
1560@item
1561PC-style IRQ and DMA controllers
1562@item
1563PC Keyboard
1564@item
1565IDE controller
1566@end itemize
3f9f3aa1 1567
f0fc6f8f
TS
1568The mipssim pseudo board emulation provides an environment similiar
1569to what the proprietary MIPS emulator uses for running Linux.
1570It supports:
6bf5b4e8
TS
1571
1572@itemize @minus
1573@item
1574A range of MIPS CPUs, default is the 24Kf
1575@item
1576PC style serial port
1577@item
1578MIPSnet network emulation
1579@end itemize
1580
88cb0a02
AJ
1581The MIPS Magnum R4000 emulation supports:
1582
1583@itemize @minus
1584@item
1585MIPS R4000 CPU
1586@item
1587PC-style IRQ controller
1588@item
1589PC Keyboard
1590@item
1591SCSI controller
1592@item
1593G364 framebuffer
1594@end itemize
1595
1596
24d4de45
TS
1597@node ARM System emulator
1598@section ARM System emulator
3f9f3aa1
FB
1599
1600Use the executable @file{qemu-system-arm} to simulate a ARM
1601machine. The ARM Integrator/CP board is emulated with the following
1602devices:
1603
1604@itemize @minus
1605@item
9ee6e8bb 1606ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
3f9f3aa1
FB
1607@item
1608Two PL011 UARTs
5fafdf24 1609@item
3f9f3aa1 1610SMC 91c111 Ethernet adapter
00a9bf19
PB
1611@item
1612PL110 LCD controller
1613@item
1614PL050 KMI with PS/2 keyboard and mouse.
a1bb27b1
PB
1615@item
1616PL181 MultiMedia Card Interface with SD card.
00a9bf19
PB
1617@end itemize
1618
1619The ARM Versatile baseboard is emulated with the following devices:
1620
1621@itemize @minus
1622@item
9ee6e8bb 1623ARM926E, ARM1136 or Cortex-A8 CPU
00a9bf19
PB
1624@item
1625PL190 Vectored Interrupt Controller
1626@item
1627Four PL011 UARTs
5fafdf24 1628@item
00a9bf19
PB
1629SMC 91c111 Ethernet adapter
1630@item
1631PL110 LCD controller
1632@item
1633PL050 KMI with PS/2 keyboard and mouse.
1634@item
1635PCI host bridge. Note the emulated PCI bridge only provides access to
1636PCI memory space. It does not provide access to PCI IO space.
4be456f1
TS
1637This means some devices (eg. ne2k_pci NIC) are not usable, and others
1638(eg. rtl8139 NIC) are only usable when the guest drivers use the memory
00a9bf19 1639mapped control registers.
e6de1bad
PB
1640@item
1641PCI OHCI USB controller.
1642@item
1643LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
a1bb27b1
PB
1644@item
1645PL181 MultiMedia Card Interface with SD card.
3f9f3aa1
FB
1646@end itemize
1647
d7739d75
PB
1648The ARM RealView Emulation baseboard is emulated with the following devices:
1649
1650@itemize @minus
1651@item
9ee6e8bb 1652ARM926E, ARM1136, ARM11MPCORE(x4) or Cortex-A8 CPU
d7739d75
PB
1653@item
1654ARM AMBA Generic/Distributed Interrupt Controller
1655@item
1656Four PL011 UARTs
5fafdf24 1657@item
d7739d75
PB
1658SMC 91c111 Ethernet adapter
1659@item
1660PL110 LCD controller
1661@item
1662PL050 KMI with PS/2 keyboard and mouse
1663@item
1664PCI host bridge
1665@item
1666PCI OHCI USB controller
1667@item
1668LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
a1bb27b1
PB
1669@item
1670PL181 MultiMedia Card Interface with SD card.
d7739d75
PB
1671@end itemize
1672
b00052e4
AZ
1673The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
1674and "Terrier") emulation includes the following peripherals:
1675
1676@itemize @minus
1677@item
1678Intel PXA270 System-on-chip (ARM V5TE core)
1679@item
1680NAND Flash memory
1681@item
1682IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
1683@item
1684On-chip OHCI USB controller
1685@item
1686On-chip LCD controller
1687@item
1688On-chip Real Time Clock
1689@item
1690TI ADS7846 touchscreen controller on SSP bus
1691@item
1692Maxim MAX1111 analog-digital converter on I@math{^2}C bus
1693@item
1694GPIO-connected keyboard controller and LEDs
1695@item
549444e1 1696Secure Digital card connected to PXA MMC/SD host
b00052e4
AZ
1697@item
1698Three on-chip UARTs
1699@item
1700WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
1701@end itemize
1702
02645926
AZ
1703The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
1704following elements:
1705
1706@itemize @minus
1707@item
1708Texas Instruments OMAP310 System-on-chip (ARM 925T core)
1709@item
1710ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
1711@item
1712On-chip LCD controller
1713@item
1714On-chip Real Time Clock
1715@item
1716TI TSC2102i touchscreen controller / analog-digital converter / Audio
1717CODEC, connected through MicroWire and I@math{^2}S busses
1718@item
1719GPIO-connected matrix keypad
1720@item
1721Secure Digital card connected to OMAP MMC/SD host
1722@item
1723Three on-chip UARTs
1724@end itemize
1725
c30bb264
AZ
1726Nokia N800 and N810 internet tablets (known also as RX-34 and RX-44 / 48)
1727emulation supports the following elements:
1728
1729@itemize @minus
1730@item
1731Texas Instruments OMAP2420 System-on-chip (ARM 1136 core)
1732@item
1733RAM and non-volatile OneNAND Flash memories
1734@item
1735Display connected to EPSON remote framebuffer chip and OMAP on-chip
1736display controller and a LS041y3 MIPI DBI-C controller
1737@item
1738TI TSC2301 (in N800) and TI TSC2005 (in N810) touchscreen controllers
1739driven through SPI bus
1740@item
1741National Semiconductor LM8323-controlled qwerty keyboard driven
1742through I@math{^2}C bus
1743@item
1744Secure Digital card connected to OMAP MMC/SD host
1745@item
1746Three OMAP on-chip UARTs and on-chip STI debugging console
1747@item
2d564691
AZ
1748A Bluetooth(R) transciever and HCI connected to an UART
1749@item
c30bb264
AZ
1750Mentor Graphics "Inventra" dual-role USB controller embedded in a TI
1751TUSB6010 chip - only USB host mode is supported
1752@item
1753TI TMP105 temperature sensor driven through I@math{^2}C bus
1754@item
1755TI TWL92230C power management companion with an RTC on I@math{^2}C bus
1756@item
1757Nokia RETU and TAHVO multi-purpose chips with an RTC, connected
1758through CBUS
1759@end itemize
1760
9ee6e8bb
PB
1761The Luminary Micro Stellaris LM3S811EVB emulation includes the following
1762devices:
1763
1764@itemize @minus
1765@item
1766Cortex-M3 CPU core.
1767@item
176864k Flash and 8k SRAM.
1769@item
1770Timers, UARTs, ADC and I@math{^2}C interface.
1771@item
1772OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
1773@end itemize
1774
1775The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
1776devices:
1777
1778@itemize @minus
1779@item
1780Cortex-M3 CPU core.
1781@item
1782256k Flash and 64k SRAM.
1783@item
1784Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
1785@item
1786OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
1787@end itemize
1788
57cd6e97
AZ
1789The Freecom MusicPal internet radio emulation includes the following
1790elements:
1791
1792@itemize @minus
1793@item
1794Marvell MV88W8618 ARM core.
1795@item
179632 MB RAM, 256 KB SRAM, 8 MB flash.
1797@item
1798Up to 2 16550 UARTs
1799@item
1800MV88W8xx8 Ethernet controller
1801@item
1802MV88W8618 audio controller, WM8750 CODEC and mixer
1803@item
1804