]> git.proxmox.com Git - mirror_qemu.git/blame - qemu-doc.texi
Makefile: Not every shell support {}
[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
e080e785
SW
4
5@documentlanguage en
6@documentencoding UTF-8
7
8f40c388 8@settitle QEMU Emulator User Documentation
debc7065
FB
9@exampleindent 0
10@paragraphindent 0
11@c %**end of header
386405f7 12
a1a32b05
SW
13@ifinfo
14@direntry
15* QEMU: (qemu-doc). The QEMU Emulator User Documentation.
16@end direntry
17@end ifinfo
18
0806e3f6 19@iftex
386405f7
FB
20@titlepage
21@sp 7
8f40c388 22@center @titlefont{QEMU Emulator}
debc7065
FB
23@sp 1
24@center @titlefont{User Documentation}
386405f7
FB
25@sp 3
26@end titlepage
0806e3f6 27@end iftex
386405f7 28
debc7065
FB
29@ifnottex
30@node Top
31@top
32
33@menu
34* Introduction::
35* Installation::
36* QEMU PC System emulator::
37* QEMU System emulator for non PC targets::
83195237 38* QEMU User space emulator::
debc7065 39* compilation:: Compilation from the sources
7544a042 40* License::
debc7065
FB
41* Index::
42@end menu
43@end ifnottex
44
45@contents
46
47@node Introduction
386405f7
FB
48@chapter Introduction
49
debc7065
FB
50@menu
51* intro_features:: Features
52@end menu
53
54@node intro_features
322d0c66 55@section Features
386405f7 56
1f673135
FB
57QEMU is a FAST! processor emulator using dynamic translation to
58achieve good emulation speed.
1eb20527
FB
59
60QEMU has two operating modes:
0806e3f6 61
d7e5edca 62@itemize
7544a042 63@cindex operating modes
0806e3f6 64
5fafdf24 65@item
7544a042 66@cindex system emulation
1f673135 67Full system emulation. In this mode, QEMU emulates a full system (for
3f9f3aa1
FB
68example a PC), including one or several processors and various
69peripherals. It can be used to launch different Operating Systems
70without rebooting the PC or to debug system code.
1eb20527 71
5fafdf24 72@item
7544a042 73@cindex user mode emulation
83195237
FB
74User mode emulation. In this mode, QEMU can launch
75processes compiled for one CPU on another CPU. It can be used to
1f673135
FB
76launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
77to ease cross-compilation and cross-debugging.
1eb20527
FB
78
79@end itemize
80
7c3fc84d 81QEMU can run without an host kernel driver and yet gives acceptable
5fafdf24 82performance.
322d0c66 83
52c00a5f
FB
84For system emulation, the following hardware targets are supported:
85@itemize
7544a042
SW
86@cindex emulated target systems
87@cindex supported target systems
9d0a8e6f 88@item PC (x86 or x86_64 processor)
3f9f3aa1 89@item ISA PC (old style PC without PCI bus)
52c00a5f 90@item PREP (PowerPC processor)
d45952a0 91@item G3 Beige PowerMac (PowerPC processor)
9d0a8e6f 92@item Mac99 PowerMac (PowerPC processor, in progress)
ee76f82e 93@item Sun4m/Sun4c/Sun4d (32-bit Sparc processor)
c7ba218d 94@item Sun4u/Sun4v (64-bit Sparc processor, in progress)
d9aedc32 95@item Malta board (32-bit and 64-bit MIPS processors)
88cb0a02 96@item MIPS Magnum (64-bit MIPS processor)
9ee6e8bb
PB
97@item ARM Integrator/CP (ARM)
98@item ARM Versatile baseboard (ARM)
0ef849d7 99@item ARM RealView Emulation/Platform baseboard (ARM)
ef4c3856 100@item Spitz, Akita, Borzoi, Terrier and Tosa PDAs (PXA270 processor)
9ee6e8bb
PB
101@item Luminary Micro LM3S811EVB (ARM Cortex-M3)
102@item Luminary Micro LM3S6965EVB (ARM Cortex-M3)
707e011b 103@item Freescale MCF5208EVB (ColdFire V2).
209a4e69 104@item Arnewsh MCF5206 evaluation board (ColdFire V2).
02645926 105@item Palm Tungsten|E PDA (OMAP310 processor)
c30bb264 106@item N800 and N810 tablets (OMAP2420 processor)
57cd6e97 107@item MusicPal (MV88W8618 ARM processor)
ef4c3856
AZ
108@item Gumstix "Connex" and "Verdex" motherboards (PXA255/270).
109@item Siemens SX1 smartphone (OMAP310 processor)
4af39611 110@item Syborg SVP base model (ARM Cortex-A8).
48c50a62
EI
111@item AXIS-Devboard88 (CRISv32 ETRAX-FS).
112@item Petalogix Spartan 3aDSP1800 MMU ref design (MicroBlaze).
52c00a5f 113@end itemize
386405f7 114
7544a042
SW
115@cindex supported user mode targets
116For user emulation, x86 (32 and 64 bit), PowerPC (32 and 64 bit),
117ARM, MIPS (32 bit only), Sparc (32 and 64 bit),
118Alpha, ColdFire(m68k), CRISv32 and MicroBlaze CPUs are supported.
0806e3f6 119
debc7065 120@node Installation
5b9f457a
FB
121@chapter Installation
122
15a34c63
FB
123If you want to compile QEMU yourself, see @ref{compilation}.
124
debc7065
FB
125@menu
126* install_linux:: Linux
127* install_windows:: Windows
128* install_mac:: Macintosh
129@end menu
130
131@node install_linux
1f673135 132@section Linux
7544a042 133@cindex installation (Linux)
1f673135 134
7c3fc84d
FB
135If a precompiled package is available for your distribution - you just
136have to install it. Otherwise, see @ref{compilation}.
5b9f457a 137
debc7065 138@node install_windows
1f673135 139@section Windows
7544a042 140@cindex installation (Windows)
8cd0ac2f 141
15a34c63 142Download the experimental binary installer at
debc7065 143@url{http://www.free.oszoo.org/@/download.html}.
7544a042 144TODO (no longer available)
d691f669 145
debc7065 146@node install_mac
1f673135 147@section Mac OS X
d691f669 148
15a34c63 149Download the experimental binary installer at
debc7065 150@url{http://www.free.oszoo.org/@/download.html}.
7544a042 151TODO (no longer available)
df0f11a0 152
debc7065 153@node QEMU PC System emulator
3f9f3aa1 154@chapter QEMU PC System emulator
7544a042 155@cindex system emulation (PC)
1eb20527 156
debc7065
FB
157@menu
158* pcsys_introduction:: Introduction
159* pcsys_quickstart:: Quick Start
160* sec_invocation:: Invocation
161* pcsys_keys:: Keys
162* pcsys_monitor:: QEMU Monitor
163* disk_images:: Disk Images
164* pcsys_network:: Network emulation
165* direct_linux_boot:: Direct Linux Boot
166* pcsys_usb:: USB emulation
f858dcae 167* vnc_security:: VNC security
debc7065
FB
168* gdb_usage:: GDB usage
169* pcsys_os_specific:: Target OS specific information
170@end menu
171
172@node pcsys_introduction
0806e3f6
FB
173@section Introduction
174
175@c man begin DESCRIPTION
176
3f9f3aa1
FB
177The QEMU PC System emulator simulates the
178following peripherals:
0806e3f6
FB
179
180@itemize @minus
5fafdf24 181@item
15a34c63 182i440FX host PCI bridge and PIIX3 PCI to ISA bridge
0806e3f6 183@item
15a34c63
FB
184Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
185extensions (hardware level, including all non standard modes).
0806e3f6
FB
186@item
187PS/2 mouse and keyboard
5fafdf24 188@item
15a34c63 1892 PCI IDE interfaces with hard disk and CD-ROM support
1f673135
FB
190@item
191Floppy disk
5fafdf24 192@item
3a2eeac0 193PCI and ISA network adapters
0806e3f6 194@item
05d5818c
FB
195Serial ports
196@item
c0fe3827
FB
197Creative SoundBlaster 16 sound card
198@item
199ENSONIQ AudioPCI ES1370 sound card
200@item
e5c9a13e
AZ
201Intel 82801AA AC97 Audio compatible sound card
202@item
c0fe3827 203Adlib(OPL2) - Yamaha YM3812 compatible chip
b389dbfb 204@item
26463dbc
AZ
205Gravis Ultrasound GF1 sound card
206@item
cc53d26d 207CS4231A compatible sound card
208@item
b389dbfb 209PCI UHCI USB controller and a virtual USB hub.
0806e3f6
FB
210@end itemize
211
3f9f3aa1
FB
212SMP is supported with up to 255 CPUs.
213
1d1f8c33 214Note that adlib, gus and cs4231a are only available when QEMU was
215configured with --audio-card-list option containing the name(s) of
e5178e8d 216required card(s).
c0fe3827 217
15a34c63
FB
218QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
219VGA BIOS.
220
c0fe3827
FB
221QEMU uses YM3812 emulation by Tatsuyuki Satoh.
222
26463dbc
AZ
223QEMU uses GUS emulation(GUSEMU32 @url{http://www.deinmeister.de/gusemu/})
224by Tibor "TS" Schütz.
423d65f4 225
720036a5 226Not that, by default, GUS shares IRQ(7) with parallel ports and so
227qemu must be told to not have parallel ports to have working GUS
228
229@example
230qemu dos.img -soundhw gus -parallel none
231@end example
232
233Alternatively:
234@example
235qemu dos.img -device gus,irq=5
236@end example
237
238Or some other unclaimed IRQ.
239
cc53d26d 240CS4231A is the chip used in Windows Sound System and GUSMAX products
241
0806e3f6
FB
242@c man end
243
debc7065 244@node pcsys_quickstart
1eb20527 245@section Quick Start
7544a042 246@cindex quick start
1eb20527 247
285dc330 248Download and uncompress the linux image (@file{linux.img}) and type:
0806e3f6
FB
249
250@example
285dc330 251qemu linux.img
0806e3f6
FB
252@end example
253
254Linux should boot and give you a prompt.
255
6cc721cf 256@node sec_invocation
ec410fc9
FB
257@section Invocation
258
259@example
0806e3f6 260@c man begin SYNOPSIS
89dfe898 261usage: qemu [options] [@var{disk_image}]
0806e3f6 262@c man end
ec410fc9
FB
263@end example
264
0806e3f6 265@c man begin OPTIONS
d2c639d6
BS
266@var{disk_image} is a raw hard disk image for IDE hard disk 0. Some
267targets do not need a disk image.
ec410fc9 268
5824d651 269@include qemu-options.texi
ec410fc9 270
3e11db9a
FB
271@c man end
272
debc7065 273@node pcsys_keys
3e11db9a
FB
274@section Keys
275
276@c man begin OPTIONS
277
a1b74fe8
FB
278During the graphical emulation, you can use the following keys:
279@table @key
f9859310 280@item Ctrl-Alt-f
7544a042 281@kindex Ctrl-Alt-f
a1b74fe8 282Toggle full screen
a0a821a4 283
c4a735f9 284@item Ctrl-Alt-u
7544a042 285@kindex Ctrl-Alt-u
c4a735f9 286Restore the screen's un-scaled dimensions
287
f9859310 288@item Ctrl-Alt-n
7544a042 289@kindex Ctrl-Alt-n
a0a821a4
FB
290Switch to virtual console 'n'. Standard console mappings are:
291@table @emph
292@item 1
293Target system display
294@item 2
295Monitor
296@item 3
297Serial port
a1b74fe8
FB
298@end table
299
f9859310 300@item Ctrl-Alt
7544a042 301@kindex Ctrl-Alt
a0a821a4
FB
302Toggle mouse and keyboard grab.
303@end table
304
7544a042
SW
305@kindex Ctrl-Up
306@kindex Ctrl-Down
307@kindex Ctrl-PageUp
308@kindex Ctrl-PageDown
3e11db9a
FB
309In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
310@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
311
7544a042 312@kindex Ctrl-a h
a0a821a4
FB
313During emulation, if you are using the @option{-nographic} option, use
314@key{Ctrl-a h} to get terminal commands:
ec410fc9
FB
315
316@table @key
a1b74fe8 317@item Ctrl-a h
7544a042 318@kindex Ctrl-a h
d2c639d6 319@item Ctrl-a ?
7544a042 320@kindex Ctrl-a ?
ec410fc9 321Print this help
3b46e624 322@item Ctrl-a x
7544a042 323@kindex Ctrl-a x
366dfc52 324Exit emulator
3b46e624 325@item Ctrl-a s
7544a042 326@kindex Ctrl-a s
1f47a922 327Save disk data back to file (if -snapshot)
20d8a3ed 328@item Ctrl-a t
7544a042 329@kindex Ctrl-a t
d2c639d6 330Toggle console timestamps
a1b74fe8 331@item Ctrl-a b
7544a042 332@kindex Ctrl-a b
1f673135 333Send break (magic sysrq in Linux)
a1b74fe8 334@item Ctrl-a c
7544a042 335@kindex Ctrl-a c
1f673135 336Switch between console and monitor
a1b74fe8 337@item Ctrl-a Ctrl-a
7544a042 338@kindex Ctrl-a a
a1b74fe8 339Send Ctrl-a
ec410fc9 340@end table
0806e3f6
FB
341@c man end
342
343@ignore
344
1f673135
FB
345@c man begin SEEALSO
346The HTML documentation of QEMU for more precise information and Linux
347user mode emulator invocation.
348@c man end
349
350@c man begin AUTHOR
351Fabrice Bellard
352@c man end
353
354@end ignore
355
debc7065 356@node pcsys_monitor
1f673135 357@section QEMU Monitor
7544a042 358@cindex QEMU monitor
1f673135
FB
359
360The QEMU monitor is used to give complex commands to the QEMU
361emulator. You can use it to:
362
363@itemize @minus
364
365@item
e598752a 366Remove or insert removable media images
89dfe898 367(such as CD-ROM or floppies).
1f673135 368
5fafdf24 369@item
1f673135
FB
370Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
371from a disk file.
372
373@item Inspect the VM state without an external debugger.
374
375@end itemize
376
377@subsection Commands
378
379The following commands are available:
380
2313086a 381@include qemu-monitor.texi
0806e3f6 382
1f673135
FB
383@subsection Integer expressions
384
385The monitor understands integers expressions for every integer
386argument. You can use register names to get the value of specifics
387CPU registers by prefixing them with @emph{$}.
ec410fc9 388
1f47a922
FB
389@node disk_images
390@section Disk Images
391
acd935ef
FB
392Since version 0.6.1, QEMU supports many disk image formats, including
393growable disk images (their size increase as non empty sectors are
13a2e80f
FB
394written), compressed and encrypted disk images. Version 0.8.3 added
395the new qcow2 disk image format which is essential to support VM
396snapshots.
1f47a922 397
debc7065
FB
398@menu
399* disk_images_quickstart:: Quick start for disk image creation
400* disk_images_snapshot_mode:: Snapshot mode
13a2e80f 401* vm_snapshots:: VM snapshots
debc7065 402* qemu_img_invocation:: qemu-img Invocation
975b092b 403* qemu_nbd_invocation:: qemu-nbd Invocation
19cb3738 404* host_drives:: Using host drives
debc7065 405* disk_images_fat_images:: Virtual FAT disk images
75818250 406* disk_images_nbd:: NBD access
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
19cb3738
FB
492@node host_drives
493@subsection Using host drives
494
495In addition to disk image files, QEMU can directly access host
496devices. We describe here the usage for QEMU version >= 0.8.3.
497
498@subsubsection Linux
499
500On Linux, you can directly use the host device filename instead of a
4be456f1 501disk image filename provided you have enough privileges to access
19cb3738
FB
502it. For example, use @file{/dev/cdrom} to access to the CDROM or
503@file{/dev/fd0} for the floppy.
504
f542086d 505@table @code
19cb3738
FB
506@item CD
507You can specify a CDROM device even if no CDROM is loaded. QEMU has
508specific code to detect CDROM insertion or removal. CDROM ejection by
509the guest OS is supported. Currently only data CDs are supported.
510@item Floppy
511You can specify a floppy device even if no floppy is loaded. Floppy
512removal is currently not detected accurately (if you change floppy
513without doing floppy access while the floppy is not loaded, the guest
514OS will think that the same floppy is loaded).
515@item Hard disks
516Hard disks can be used. Normally you must specify the whole disk
517(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
518see it as a partitioned disk. WARNING: unless you know what you do, it
519is better to only make READ-ONLY accesses to the hard disk otherwise
520you may corrupt your host data (use the @option{-snapshot} command
521line option or modify the device permissions accordingly).
522@end table
523
524@subsubsection Windows
525
01781963
FB
526@table @code
527@item CD
4be456f1 528The preferred syntax is the drive letter (e.g. @file{d:}). The
01781963
FB
529alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
530supported as an alias to the first CDROM drive.
19cb3738 531
e598752a 532Currently there is no specific code to handle removable media, so it
19cb3738
FB
533is better to use the @code{change} or @code{eject} monitor commands to
534change or eject media.
01781963 535@item Hard disks
89dfe898 536Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
01781963
FB
537where @var{N} is the drive number (0 is the first hard disk).
538
539WARNING: unless you know what you do, it is better to only make
540READ-ONLY accesses to the hard disk otherwise you may corrupt your
541host data (use the @option{-snapshot} command line so that the
542modifications are written in a temporary file).
543@end table
544
19cb3738
FB
545
546@subsubsection Mac OS X
547
5fafdf24 548@file{/dev/cdrom} is an alias to the first CDROM.
19cb3738 549
e598752a 550Currently there is no specific code to handle removable media, so it
19cb3738
FB
551is better to use the @code{change} or @code{eject} monitor commands to
552change or eject media.
553
debc7065 554@node disk_images_fat_images
2c6cadd4
FB
555@subsection Virtual FAT disk images
556
557QEMU can automatically create a virtual FAT disk image from a
558directory tree. In order to use it, just type:
559
5fafdf24 560@example
2c6cadd4
FB
561qemu linux.img -hdb fat:/my_directory
562@end example
563
564Then you access access to all the files in the @file{/my_directory}
565directory without having to copy them in a disk image or to export
566them via SAMBA or NFS. The default access is @emph{read-only}.
567
568Floppies can be emulated with the @code{:floppy:} option:
569
5fafdf24 570@example
2c6cadd4
FB
571qemu linux.img -fda fat:floppy:/my_directory
572@end example
573
574A read/write support is available for testing (beta stage) with the
575@code{:rw:} option:
576
5fafdf24 577@example
2c6cadd4
FB
578qemu linux.img -fda fat:floppy:rw:/my_directory
579@end example
580
581What you should @emph{never} do:
582@itemize
583@item use non-ASCII filenames ;
584@item use "-snapshot" together with ":rw:" ;
85b2c688
FB
585@item expect it to work when loadvm'ing ;
586@item write to the FAT directory on the host system while accessing it with the guest system.
2c6cadd4
FB
587@end itemize
588
75818250
TS
589@node disk_images_nbd
590@subsection NBD access
591
592QEMU can access directly to block device exported using the Network Block Device
593protocol.
594
595@example
596qemu linux.img -hdb nbd:my_nbd_server.mydomain.org:1024
597@end example
598
599If the NBD server is located on the same host, you can use an unix socket instead
600of an inet socket:
601
602@example
603qemu linux.img -hdb nbd:unix:/tmp/my_socket
604@end example
605
606In this case, the block device must be exported using qemu-nbd:
607
608@example
609qemu-nbd --socket=/tmp/my_socket my_disk.qcow2
610@end example
611
612The use of qemu-nbd allows to share a disk between several guests:
613@example
614qemu-nbd --socket=/tmp/my_socket --share=2 my_disk.qcow2
615@end example
616
617and then you can use it with two guests:
618@example
619qemu linux1.img -hdb nbd:unix:/tmp/my_socket
620qemu linux2.img -hdb nbd:unix:/tmp/my_socket
621@end example
622
debc7065 623@node pcsys_network
9d4fb82e
FB
624@section Network emulation
625
4be456f1 626QEMU can simulate several network cards (PCI or ISA cards on the PC
41d03949
FB
627target) and can connect them to an arbitrary number of Virtual Local
628Area Networks (VLANs). Host TAP devices can be connected to any QEMU
629VLAN. VLAN can be connected between separate instances of QEMU to
4be456f1 630simulate large networks. For simpler usage, a non privileged user mode
41d03949
FB
631network stack can replace the TAP device to have a basic network
632connection.
633
634@subsection VLANs
9d4fb82e 635
41d03949
FB
636QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
637connection between several network devices. These devices can be for
638example QEMU virtual Ethernet cards or virtual Host ethernet devices
639(TAP devices).
9d4fb82e 640
41d03949
FB
641@subsection Using TAP network interfaces
642
643This is the standard way to connect QEMU to a real network. QEMU adds
644a virtual network device on your host (called @code{tapN}), and you
645can then configure it as if it was a real ethernet card.
9d4fb82e 646
8f40c388
FB
647@subsubsection Linux host
648
9d4fb82e
FB
649As an example, you can download the @file{linux-test-xxx.tar.gz}
650archive and copy the script @file{qemu-ifup} in @file{/etc} and
651configure properly @code{sudo} so that the command @code{ifconfig}
652contained in @file{qemu-ifup} can be executed as root. You must verify
41d03949 653that your host kernel supports the TAP network interfaces: the
9d4fb82e
FB
654device @file{/dev/net/tun} must be present.
655
ee0f4751
FB
656See @ref{sec_invocation} to have examples of command lines using the
657TAP network interfaces.
9d4fb82e 658
8f40c388
FB
659@subsubsection Windows host
660
661There is a virtual ethernet driver for Windows 2000/XP systems, called
662TAP-Win32. But it is not included in standard QEMU for Windows,
663so you will need to get it separately. It is part of OpenVPN package,
664so download OpenVPN from : @url{http://openvpn.net/}.
665
9d4fb82e
FB
666@subsection Using the user mode network stack
667
41d03949
FB
668By using the option @option{-net user} (default configuration if no
669@option{-net} option is specified), QEMU uses a completely user mode
4be456f1 670network stack (you don't need root privilege to use the virtual
41d03949 671network). The virtual network configuration is the following:
9d4fb82e
FB
672
673@example
674
41d03949
FB
675 QEMU VLAN <------> Firewall/DHCP server <-----> Internet
676 | (10.0.2.2)
9d4fb82e 677 |
2518bd0d 678 ----> DNS server (10.0.2.3)
3b46e624 679 |
2518bd0d 680 ----> SMB server (10.0.2.4)
9d4fb82e
FB
681@end example
682
683The QEMU VM behaves as if it was behind a firewall which blocks all
684incoming connections. You can use a DHCP client to automatically
41d03949
FB
685configure the network in the QEMU VM. The DHCP server assign addresses
686to the hosts starting from 10.0.2.15.
9d4fb82e
FB
687
688In order to check that the user mode network is working, you can ping
689the address 10.0.2.2 and verify that you got an address in the range
69010.0.2.x from the QEMU virtual DHCP server.
691
b415a407 692Note that @code{ping} is not supported reliably to the internet as it
4be456f1 693would require root privileges. It means you can only ping the local
b415a407
FB
694router (10.0.2.2).
695
9bf05444
FB
696When using the built-in TFTP server, the router is also the TFTP
697server.
698
699When using the @option{-redir} option, TCP or UDP connections can be
700redirected from the host to the guest. It allows for example to
701redirect X11, telnet or SSH connections.
443f1376 702
41d03949
FB
703@subsection Connecting VLANs between QEMU instances
704
705Using the @option{-net socket} option, it is possible to make VLANs
706that span several QEMU instances. See @ref{sec_invocation} to have a
707basic example.
708
9d4fb82e
FB
709@node direct_linux_boot
710@section Direct Linux Boot
1f673135
FB
711
712This section explains how to launch a Linux kernel inside QEMU without
713having to make a full bootable image. It is very useful for fast Linux
ee0f4751 714kernel testing.
1f673135 715
ee0f4751 716The syntax is:
1f673135 717@example
ee0f4751 718qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1f673135
FB
719@end example
720
ee0f4751
FB
721Use @option{-kernel} to provide the Linux kernel image and
722@option{-append} to give the kernel command line arguments. The
723@option{-initrd} option can be used to provide an INITRD image.
1f673135 724
ee0f4751
FB
725When using the direct Linux boot, a disk image for the first hard disk
726@file{hda} is required because its boot sector is used to launch the
727Linux kernel.
1f673135 728
ee0f4751
FB
729If you do not need graphical output, you can disable it and redirect
730the virtual serial port and the QEMU monitor to the console with the
731@option{-nographic} option. The typical command line is:
1f673135 732@example
ee0f4751
FB
733qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
734 -append "root=/dev/hda console=ttyS0" -nographic
1f673135
FB
735@end example
736
ee0f4751
FB
737Use @key{Ctrl-a c} to switch between the serial console and the
738monitor (@pxref{pcsys_keys}).
1f673135 739
debc7065 740@node pcsys_usb
b389dbfb
FB
741@section USB emulation
742
0aff66b5
PB
743QEMU emulates a PCI UHCI USB controller. You can virtually plug
744virtual USB devices or real host USB devices (experimental, works only
745on Linux hosts). Qemu will automatically create and connect virtual USB hubs
f542086d 746as necessary to connect multiple USB devices.
b389dbfb 747
0aff66b5
PB
748@menu
749* usb_devices::
750* host_usb_devices::
751@end menu
752@node usb_devices
753@subsection Connecting USB devices
b389dbfb 754
0aff66b5
PB
755USB devices can be connected with the @option{-usbdevice} commandline option
756or the @code{usb_add} monitor command. Available devices are:
b389dbfb 757
db380c06
AZ
758@table @code
759@item mouse
0aff66b5 760Virtual Mouse. This will override the PS/2 mouse emulation when activated.
db380c06 761@item tablet
c6d46c20 762Pointer device that uses absolute coordinates (like a touchscreen).
0aff66b5
PB
763This means qemu is able to report the mouse position without having
764to grab the mouse. Also overrides the PS/2 mouse emulation when activated.
db380c06 765@item disk:@var{file}
0aff66b5 766Mass storage device based on @var{file} (@pxref{disk_images})
db380c06 767@item host:@var{bus.addr}
0aff66b5
PB
768Pass through the host device identified by @var{bus.addr}
769(Linux only)
db380c06 770@item host:@var{vendor_id:product_id}
0aff66b5
PB
771Pass through the host device identified by @var{vendor_id:product_id}
772(Linux only)
db380c06 773@item wacom-tablet
f6d2a316
AZ
774Virtual Wacom PenPartner tablet. This device is similar to the @code{tablet}
775above but it can be used with the tslib library because in addition to touch
776coordinates it reports touch pressure.
db380c06 777@item keyboard
47b2d338 778Standard USB keyboard. Will override the PS/2 keyboard (if present).
db380c06
AZ
779@item serial:[vendorid=@var{vendor_id}][,product_id=@var{product_id}]:@var{dev}
780Serial converter. This emulates an FTDI FT232BM chip connected to host character
781device @var{dev}. The available character devices are the same as for the
782@code{-serial} option. The @code{vendorid} and @code{productid} options can be
a11d070e 783used to override the default 0403:6001. For instance,
db380c06
AZ
784@example
785usb_add serial:productid=FA00:tcp:192.168.0.2:4444
786@end example
787will connect to tcp port 4444 of ip 192.168.0.2, and plug that to the virtual
788serial converter, faking a Matrix Orbital LCD Display (USB ID 0403:FA00).
2e4d9fb1
AJ
789@item braille
790Braille device. This will use BrlAPI to display the braille output on a real
791or fake device.
9ad97e65
AZ
792@item net:@var{options}
793Network adapter that supports CDC ethernet and RNDIS protocols. @var{options}
794specifies NIC options as with @code{-net nic,}@var{options} (see description).
795For instance, user-mode networking can be used with
6c9f886c 796@example
9ad97e65 797qemu [...OPTIONS...] -net user,vlan=0 -usbdevice net:vlan=0
6c9f886c
AZ
798@end example
799Currently this cannot be used in machines that support PCI NICs.
2d564691
AZ
800@item bt[:@var{hci-type}]
801Bluetooth dongle whose type is specified in the same format as with
802the @option{-bt hci} option, @pxref{bt-hcis,,allowed HCI types}. If
803no type is given, the HCI logic corresponds to @code{-bt hci,vlan=0}.
804This USB device implements the USB Transport Layer of HCI. Example
805usage:
806@example
807qemu [...OPTIONS...] -usbdevice bt:hci,vlan=3 -bt device:keyboard,vlan=3
808@end example
0aff66b5 809@end table
b389dbfb 810
0aff66b5 811@node host_usb_devices
b389dbfb
FB
812@subsection Using host USB devices on a Linux host
813
814WARNING: this is an experimental feature. QEMU will slow down when
815using it. USB devices requiring real time streaming (i.e. USB Video
816Cameras) are not supported yet.
817
818@enumerate
5fafdf24 819@item If you use an early Linux 2.4 kernel, verify that no Linux driver
b389dbfb
FB
820is actually using the USB device. A simple way to do that is simply to
821disable the corresponding kernel module by renaming it from @file{mydriver.o}
822to @file{mydriver.o.disabled}.
823
824@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
825@example
826ls /proc/bus/usb
827001 devices drivers
828@end example
829
830@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:
831@example
832chown -R myuid /proc/bus/usb
833@end example
834
835@item Launch QEMU and do in the monitor:
5fafdf24 836@example
b389dbfb
FB
837info usbhost
838 Device 1.2, speed 480 Mb/s
839 Class 00: USB device 1234:5678, USB DISK
840@end example
841You should see the list of the devices you can use (Never try to use
842hubs, it won't work).
843
844@item Add the device in QEMU by using:
5fafdf24 845@example
b389dbfb
FB
846usb_add host:1234:5678
847@end example
848
849Normally the guest OS should report that a new USB device is
850plugged. You can use the option @option{-usbdevice} to do the same.
851
852@item Now you can try to use the host USB device in QEMU.
853
854@end enumerate
855
856When relaunching QEMU, you may have to unplug and plug again the USB
857device to make it work again (this is a bug).
858
f858dcae
TS
859@node vnc_security
860@section VNC security
861
862The VNC server capability provides access to the graphical console
863of the guest VM across the network. This has a number of security
864considerations depending on the deployment scenarios.
865
866@menu
867* vnc_sec_none::
868* vnc_sec_password::
869* vnc_sec_certificate::
870* vnc_sec_certificate_verify::
871* vnc_sec_certificate_pw::
2f9606b3
AL
872* vnc_sec_sasl::
873* vnc_sec_certificate_sasl::
f858dcae 874* vnc_generate_cert::
2f9606b3 875* vnc_setup_sasl::
f858dcae
TS
876@end menu
877@node vnc_sec_none
878@subsection Without passwords
879
880The simplest VNC server setup does not include any form of authentication.
881For this setup it is recommended to restrict it to listen on a UNIX domain
882socket only. For example
883
884@example
885qemu [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
886@end example
887
888This ensures that only users on local box with read/write access to that
889path can access the VNC server. To securely access the VNC server from a
890remote machine, a combination of netcat+ssh can be used to provide a secure
891tunnel.
892
893@node vnc_sec_password
894@subsection With passwords
895
896The VNC protocol has limited support for password based authentication. Since
897the protocol limits passwords to 8 characters it should not be considered
898to provide high security. The password can be fairly easily brute-forced by
899a client making repeat connections. For this reason, a VNC server using password
900authentication should be restricted to only listen on the loopback interface
34a3d239 901or UNIX domain sockets. Password authentication is requested with the @code{password}
f858dcae
TS
902option, and then once QEMU is running the password is set with the monitor. Until
903the monitor is used to set the password all clients will be rejected.
904
905@example
906qemu [...OPTIONS...] -vnc :1,password -monitor stdio
907(qemu) change vnc password
908Password: ********
909(qemu)
910@end example
911
912@node vnc_sec_certificate
913@subsection With x509 certificates
914
915The QEMU VNC server also implements the VeNCrypt extension allowing use of
916TLS for encryption of the session, and x509 certificates for authentication.
917The use of x509 certificates is strongly recommended, because TLS on its
918own is susceptible to man-in-the-middle attacks. Basic x509 certificate
919support provides a secure session, but no authentication. This allows any
920client to connect, and provides an encrypted session.
921
922@example
923qemu [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
924@end example
925
926In the above example @code{/etc/pki/qemu} should contain at least three files,
927@code{ca-cert.pem}, @code{server-cert.pem} and @code{server-key.pem}. Unprivileged
928users will want to use a private directory, for example @code{$HOME/.pki/qemu}.
929NB the @code{server-key.pem} file should be protected with file mode 0600 to
930only be readable by the user owning it.
931
932@node vnc_sec_certificate_verify
933@subsection With x509 certificates and client verification
934
935Certificates can also provide a means to authenticate the client connecting.
936The server will request that the client provide a certificate, which it will
937then validate against the CA certificate. This is a good choice if deploying
938in an environment with a private internal certificate authority.
939
940@example
941qemu [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
942@end example
943
944
945@node vnc_sec_certificate_pw
946@subsection With x509 certificates, client verification and passwords
947
948Finally, the previous method can be combined with VNC password authentication
949to provide two layers of authentication for clients.
950
951@example
952qemu [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
953(qemu) change vnc password
954Password: ********
955(qemu)
956@end example
957
2f9606b3
AL
958
959@node vnc_sec_sasl
960@subsection With SASL authentication
961
962The SASL authentication method is a VNC extension, that provides an
963easily extendable, pluggable authentication method. This allows for
964integration with a wide range of authentication mechanisms, such as
965PAM, GSSAPI/Kerberos, LDAP, SQL databases, one-time keys and more.
966The strength of the authentication depends on the exact mechanism
967configured. If the chosen mechanism also provides a SSF layer, then
968it will encrypt the datastream as well.
969
970Refer to the later docs on how to choose the exact SASL mechanism
971used for authentication, but assuming use of one supporting SSF,
972then QEMU can be launched with:
973
974@example
975qemu [...OPTIONS...] -vnc :1,sasl -monitor stdio
976@end example
977
978@node vnc_sec_certificate_sasl
979@subsection With x509 certificates and SASL authentication
980
981If the desired SASL authentication mechanism does not supported
982SSF layers, then it is strongly advised to run it in combination
983with TLS and x509 certificates. This provides securely encrypted
984data stream, avoiding risk of compromising of the security
985credentials. This can be enabled, by combining the 'sasl' option
986with the aforementioned TLS + x509 options:
987
988@example
989qemu [...OPTIONS...] -vnc :1,tls,x509,sasl -monitor stdio
990@end example
991
992
f858dcae
TS
993@node vnc_generate_cert
994@subsection Generating certificates for VNC
995
996The GNU TLS packages provides a command called @code{certtool} which can
997be used to generate certificates and keys in PEM format. At a minimum it
998is neccessary to setup a certificate authority, and issue certificates to
999each server. If using certificates for authentication, then each client
1000will also need to be issued a certificate. The recommendation is for the
1001server to keep its certificates in either @code{/etc/pki/qemu} or for
1002unprivileged users in @code{$HOME/.pki/qemu}.
1003
1004@menu
1005* vnc_generate_ca::
1006* vnc_generate_server::
1007* vnc_generate_client::
1008@end menu
1009@node vnc_generate_ca
1010@subsubsection Setup the Certificate Authority
1011
1012This step only needs to be performed once per organization / organizational
1013unit. First the CA needs a private key. This key must be kept VERY secret
1014and secure. If this key is compromised the entire trust chain of the certificates
1015issued with it is lost.
1016
1017@example
1018# certtool --generate-privkey > ca-key.pem
1019@end example
1020
1021A CA needs to have a public certificate. For simplicity it can be a self-signed
1022certificate, or one issue by a commercial certificate issuing authority. To
1023generate a self-signed certificate requires one core piece of information, the
1024name of the organization.
1025
1026@example
1027# cat > ca.info <<EOF
1028cn = Name of your organization
1029ca
1030cert_signing_key
1031EOF
1032# certtool --generate-self-signed \
1033 --load-privkey ca-key.pem
1034 --template ca.info \
1035 --outfile ca-cert.pem
1036@end example
1037
1038The @code{ca-cert.pem} file should be copied to all servers and clients wishing to utilize
1039TLS support in the VNC server. The @code{ca-key.pem} must not be disclosed/copied at all.
1040
1041@node vnc_generate_server
1042@subsubsection Issuing server certificates
1043
1044Each server (or host) needs to be issued with a key and certificate. When connecting
1045the certificate is sent to the client which validates it against the CA certificate.
1046The core piece of information for a server certificate is the hostname. This should
1047be the fully qualified hostname that the client will connect with, since the client
1048will typically also verify the hostname in the certificate. On the host holding the
1049secure CA private key:
1050
1051@example
1052# cat > server.info <<EOF
1053organization = Name of your organization
1054cn = server.foo.example.com
1055tls_www_server
1056encryption_key
1057signing_key
1058EOF
1059# certtool --generate-privkey > server-key.pem
1060# certtool --generate-certificate \
1061 --load-ca-certificate ca-cert.pem \
1062 --load-ca-privkey ca-key.pem \
1063 --load-privkey server server-key.pem \
1064 --template server.info \
1065 --outfile server-cert.pem
1066@end example
1067
1068The @code{server-key.pem} and @code{server-cert.pem} files should now be securely copied
1069to the server for which they were generated. The @code{server-key.pem} is security
1070sensitive and should be kept protected with file mode 0600 to prevent disclosure.
1071
1072@node vnc_generate_client
1073@subsubsection Issuing client certificates
1074
1075If the QEMU VNC server is to use the @code{x509verify} option to validate client
1076certificates as its authentication mechanism, each client also needs to be issued
1077a certificate. The client certificate contains enough metadata to uniquely identify
1078the client, typically organization, state, city, building, etc. On the host holding
1079the secure CA private key:
1080
1081@example
1082# cat > client.info <<EOF
1083country = GB
1084state = London
1085locality = London
1086organiazation = Name of your organization
1087cn = client.foo.example.com
1088tls_www_client
1089encryption_key
1090signing_key
1091EOF
1092# certtool --generate-privkey > client-key.pem
1093# certtool --generate-certificate \
1094 --load-ca-certificate ca-cert.pem \
1095 --load-ca-privkey ca-key.pem \
1096 --load-privkey client-key.pem \
1097 --template client.info \
1098 --outfile client-cert.pem
1099@end example
1100
1101The @code{client-key.pem} and @code{client-cert.pem} files should now be securely
1102copied to the client for which they were generated.
1103
2f9606b3
AL
1104
1105@node vnc_setup_sasl
1106
1107@subsection Configuring SASL mechanisms
1108
1109The following documentation assumes use of the Cyrus SASL implementation on a
1110Linux host, but the principals should apply to any other SASL impl. When SASL
1111is enabled, the mechanism configuration will be loaded from system default
1112SASL service config /etc/sasl2/qemu.conf. If running QEMU as an
1113unprivileged user, an environment variable SASL_CONF_PATH can be used
1114to make it search alternate locations for the service config.
1115
1116The default configuration might contain
1117
1118@example
1119mech_list: digest-md5
1120sasldb_path: /etc/qemu/passwd.db
1121@end example
1122
1123This says to use the 'Digest MD5' mechanism, which is similar to the HTTP
1124Digest-MD5 mechanism. The list of valid usernames & passwords is maintained
1125in the /etc/qemu/passwd.db file, and can be updated using the saslpasswd2
1126command. While this mechanism is easy to configure and use, it is not
1127considered secure by modern standards, so only suitable for developers /
1128ad-hoc testing.
1129
1130A more serious deployment might use Kerberos, which is done with the 'gssapi'
1131mechanism
1132
1133@example
1134mech_list: gssapi
1135keytab: /etc/qemu/krb5.tab
1136@end example
1137
1138For this to work the administrator of your KDC must generate a Kerberos
1139principal for the server, with a name of 'qemu/somehost.example.com@@EXAMPLE.COM'
1140replacing 'somehost.example.com' with the fully qualified host name of the
1141machine running QEMU, and 'EXAMPLE.COM' with the Keberos Realm.
1142
1143Other configurations will be left as an exercise for the reader. It should
1144be noted that only Digest-MD5 and GSSAPI provides a SSF layer for data
1145encryption. For all other mechanisms, VNC should always be configured to
1146use TLS and x509 certificates to protect security credentials from snooping.
1147
0806e3f6 1148@node gdb_usage
da415d54
FB
1149@section GDB usage
1150
1151QEMU has a primitive support to work with gdb, so that you can do
0806e3f6 1152'Ctrl-C' while the virtual machine is running and inspect its state.
da415d54 1153
9d4520d0 1154In order to use gdb, launch qemu with the '-s' option. It will wait for a
da415d54
FB
1155gdb connection:
1156@example
debc7065
FB
1157> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1158 -append "root=/dev/hda"
da415d54
FB
1159Connected to host network interface: tun0
1160Waiting gdb connection on port 1234
1161@end example
1162
1163Then launch gdb on the 'vmlinux' executable:
1164@example
1165> gdb vmlinux
1166@end example
1167
1168In gdb, connect to QEMU:
1169@example
6c9bf893 1170(gdb) target remote localhost:1234
da415d54
FB
1171@end example
1172
1173Then you can use gdb normally. For example, type 'c' to launch the kernel:
1174@example
1175(gdb) c
1176@end example
1177
0806e3f6
FB
1178Here are some useful tips in order to use gdb on system code:
1179
1180@enumerate
1181@item
1182Use @code{info reg} to display all the CPU registers.
1183@item
1184Use @code{x/10i $eip} to display the code at the PC position.
1185@item
1186Use @code{set architecture i8086} to dump 16 bit code. Then use
294e8637 1187@code{x/10i $cs*16+$eip} to dump the code at the PC position.
0806e3f6
FB
1188@end enumerate
1189
60897d36
EI
1190Advanced debugging options:
1191
1192The 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 1193@table @code
60897d36
EI
1194@item maintenance packet qqemu.sstepbits
1195
1196This will display the MASK bits used to control the single stepping IE:
1197@example
1198(gdb) maintenance packet qqemu.sstepbits
1199sending: "qqemu.sstepbits"
1200received: "ENABLE=1,NOIRQ=2,NOTIMER=4"
1201@end example
1202@item maintenance packet qqemu.sstep
1203
1204This will display the current value of the mask used when single stepping IE:
1205@example
1206(gdb) maintenance packet qqemu.sstep
1207sending: "qqemu.sstep"
1208received: "0x7"
1209@end example
1210@item maintenance packet Qqemu.sstep=HEX_VALUE
1211
1212This will change the single step mask, so if wanted to enable IRQs on the single step, but not timers, you would use:
1213@example
1214(gdb) maintenance packet Qqemu.sstep=0x5
1215sending: "qemu.sstep=0x5"
1216received: "OK"
1217@end example
94d45e44 1218@end table
60897d36 1219
debc7065 1220@node pcsys_os_specific
1a084f3d
FB
1221@section Target OS specific information
1222
1223@subsection Linux
1224
15a34c63
FB
1225To have access to SVGA graphic modes under X11, use the @code{vesa} or
1226the @code{cirrus} X11 driver. For optimal performances, use 16 bit
1227color depth in the guest and the host OS.
1a084f3d 1228
e3371e62
FB
1229When using a 2.6 guest Linux kernel, you should add the option
1230@code{clock=pit} on the kernel command line because the 2.6 Linux
1231kernels make very strict real time clock checks by default that QEMU
1232cannot simulate exactly.
1233
7c3fc84d
FB
1234When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1235not activated because QEMU is slower with this patch. The QEMU
1236Accelerator Module is also much slower in this case. Earlier Fedora
4be456f1 1237Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporate this
7c3fc84d
FB
1238patch by default. Newer kernels don't have it.
1239
1a084f3d
FB
1240@subsection Windows
1241
1242If you have a slow host, using Windows 95 is better as it gives the
1243best speed. Windows 2000 is also a good choice.
1244
e3371e62
FB
1245@subsubsection SVGA graphic modes support
1246
1247QEMU emulates a Cirrus Logic GD5446 Video
15a34c63
FB
1248card. All Windows versions starting from Windows 95 should recognize
1249and use this graphic card. For optimal performances, use 16 bit color
1250depth in the guest and the host OS.
1a084f3d 1251
3cb0853a
FB
1252If you are using Windows XP as guest OS and if you want to use high
1253resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
12541280x1024x16), then you should use the VESA VBE virtual graphic card
1255(option @option{-std-vga}).
1256
e3371e62
FB
1257@subsubsection CPU usage reduction
1258
1259Windows 9x does not correctly use the CPU HLT
15a34c63
FB
1260instruction. The result is that it takes host CPU cycles even when
1261idle. You can install the utility from
1262@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
1263problem. Note that no such tool is needed for NT, 2000 or XP.
1a084f3d 1264
9d0a8e6f 1265@subsubsection Windows 2000 disk full problem
e3371e62 1266
9d0a8e6f
FB
1267Windows 2000 has a bug which gives a disk full problem during its
1268installation. When installing it, use the @option{-win2k-hack} QEMU
1269option to enable a specific workaround. After Windows 2000 is
1270installed, you no longer need this option (this option slows down the
1271IDE transfers).
e3371e62 1272
6cc721cf
FB
1273@subsubsection Windows 2000 shutdown
1274
1275Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1276can. It comes from the fact that Windows 2000 does not automatically
1277use the APM driver provided by the BIOS.
1278
1279In order to correct that, do the following (thanks to Struan
1280Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
1281Add/Troubleshoot a device => Add a new device & Next => No, select the
1282hardware from a list & Next => NT Apm/Legacy Support & Next => Next
1283(again) a few times. Now the driver is installed and Windows 2000 now
5fafdf24 1284correctly instructs QEMU to shutdown at the appropriate moment.
6cc721cf
FB
1285
1286@subsubsection Share a directory between Unix and Windows
1287
1288See @ref{sec_invocation} about the help of the option @option{-smb}.
1289
2192c332 1290@subsubsection Windows XP security problem
e3371e62
FB
1291
1292Some releases of Windows XP install correctly but give a security
1293error when booting:
1294@example
1295A problem is preventing Windows from accurately checking the
1296license for this computer. Error code: 0x800703e6.
1297@end example
e3371e62 1298
2192c332
FB
1299The workaround is to install a service pack for XP after a boot in safe
1300mode. Then reboot, and the problem should go away. Since there is no
1301network while in safe mode, its recommended to download the full
1302installation of SP1 or SP2 and transfer that via an ISO or using the
1303vvfat block device ("-hdb fat:directory_which_holds_the_SP").
e3371e62 1304
a0a821a4
FB
1305@subsection MS-DOS and FreeDOS
1306
1307@subsubsection CPU usage reduction
1308
1309DOS does not correctly use the CPU HLT instruction. The result is that
1310it takes host CPU cycles even when idle. You can install the utility
1311from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
1312problem.
1313
debc7065 1314@node QEMU System emulator for non PC targets
3f9f3aa1
FB
1315@chapter QEMU System emulator for non PC targets
1316
1317QEMU is a generic emulator and it emulates many non PC
1318machines. Most of the options are similar to the PC emulator. The
4be456f1 1319differences are mentioned in the following sections.
3f9f3aa1 1320
debc7065 1321@menu
7544a042 1322* PowerPC System emulator::
24d4de45
TS
1323* Sparc32 System emulator::
1324* Sparc64 System emulator::
1325* MIPS System emulator::
1326* ARM System emulator::
1327* ColdFire System emulator::
7544a042
SW
1328* Cris System emulator::
1329* Microblaze System emulator::
1330* SH4 System emulator::
debc7065
FB
1331@end menu
1332
7544a042
SW
1333@node PowerPC System emulator
1334@section PowerPC System emulator
1335@cindex system emulation (PowerPC)
1a084f3d 1336
15a34c63
FB
1337Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1338or PowerMac PowerPC system.
1a084f3d 1339
b671f9ed 1340QEMU emulates the following PowerMac peripherals:
1a084f3d 1341
15a34c63 1342@itemize @minus
5fafdf24 1343@item
006f3a48 1344UniNorth or Grackle PCI Bridge
15a34c63
FB
1345@item
1346PCI VGA compatible card with VESA Bochs Extensions
5fafdf24 1347@item
15a34c63 13482 PMAC IDE interfaces with hard disk and CD-ROM support
5fafdf24 1349@item
15a34c63
FB
1350NE2000 PCI adapters
1351@item
1352Non Volatile RAM
1353@item
1354VIA-CUDA with ADB keyboard and mouse.
1a084f3d
FB
1355@end itemize
1356
b671f9ed 1357QEMU emulates the following PREP peripherals:
52c00a5f
FB
1358
1359@itemize @minus
5fafdf24 1360@item
15a34c63
FB
1361PCI Bridge
1362@item
1363PCI VGA compatible card with VESA Bochs Extensions
5fafdf24 1364@item
52c00a5f
FB
13652 IDE interfaces with hard disk and CD-ROM support
1366@item
1367Floppy disk
5fafdf24 1368@item
15a34c63 1369NE2000 network adapters
52c00a5f
FB
1370@item
1371Serial port
1372@item
1373PREP Non Volatile RAM
15a34c63
FB
1374@item
1375PC compatible keyboard and mouse.
52c00a5f
FB
1376@end itemize
1377
15a34c63 1378QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
3f9f3aa1 1379@url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
52c00a5f 1380
992e5acd 1381Since version 0.9.1, QEMU uses OpenBIOS @url{http://www.openbios.org/}
006f3a48
BS
1382for the g3beige and mac99 PowerMac machines. OpenBIOS is a free (GPL
1383v2) portable firmware implementation. The goal is to implement a 100%
1384IEEE 1275-1994 (referred to as Open Firmware) compliant firmware.
992e5acd 1385
15a34c63
FB
1386@c man begin OPTIONS
1387
1388The following options are specific to the PowerPC emulation:
1389
1390@table @option
1391
4e257e5e 1392@item -g @var{W}x@var{H}[x@var{DEPTH}]
15a34c63
FB
1393
1394Set the initial VGA graphic mode. The default is 800x600x15.
1395
4e257e5e 1396@item -prom-env @var{string}
95efd11c
BS
1397
1398Set OpenBIOS variables in NVRAM, for example:
1399
1400@example
1401qemu-system-ppc -prom-env 'auto-boot?=false' \
1402 -prom-env 'boot-device=hd:2,\yaboot' \
1403 -prom-env 'boot-args=conf=hd:2,\yaboot.conf'
1404@end example
1405
1406These variables are not used by Open Hack'Ware.
1407
15a34c63
FB
1408@end table
1409
5fafdf24 1410@c man end
15a34c63
FB
1411
1412
52c00a5f 1413More information is available at
3f9f3aa1 1414@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
52c00a5f 1415
24d4de45
TS
1416@node Sparc32 System emulator
1417@section Sparc32 System emulator
7544a042 1418@cindex system emulation (Sparc32)
e80cfcfc 1419
34a3d239
BS
1420Use the executable @file{qemu-system-sparc} to simulate the following
1421Sun4m architecture machines:
1422@itemize @minus
1423@item
1424SPARCstation 4
1425@item
1426SPARCstation 5
1427@item
1428SPARCstation 10
1429@item
1430SPARCstation 20
1431@item
1432SPARCserver 600MP
1433@item
1434SPARCstation LX
1435@item
1436SPARCstation Voyager
1437@item
1438SPARCclassic
1439@item
1440SPARCbook
1441@end itemize
1442
1443The emulation is somewhat complete. SMP up to 16 CPUs is supported,
1444but Linux limits the number of usable CPUs to 4.
e80cfcfc 1445
34a3d239
BS
1446It's also possible to simulate a SPARCstation 2 (sun4c architecture),
1447SPARCserver 1000, or SPARCcenter 2000 (sun4d architecture), but these
1448emulators are not usable yet.
1449
1450QEMU emulates the following sun4m/sun4c/sun4d peripherals:
e80cfcfc
FB
1451
1452@itemize @minus
3475187d 1453@item
7d85892b 1454IOMMU or IO-UNITs
e80cfcfc
FB
1455@item
1456TCX Frame buffer
5fafdf24 1457@item
e80cfcfc
FB
1458Lance (Am7990) Ethernet
1459@item
34a3d239 1460Non Volatile RAM M48T02/M48T08
e80cfcfc 1461@item
3475187d
FB
1462Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1463and power/reset logic
1464@item
1465ESP SCSI controller with hard disk and CD-ROM support
1466@item
6a3b9cc9 1467Floppy drive (not on SS-600MP)
a2502b58
BS
1468@item
1469CS4231 sound device (only on SS-5, not working yet)
e80cfcfc
FB
1470@end itemize
1471
6a3b9cc9
BS
1472The number of peripherals is fixed in the architecture. Maximum
1473memory size depends on the machine type, for SS-5 it is 256MB and for
7d85892b 1474others 2047MB.
3475187d 1475
30a604f3 1476Since version 0.8.2, QEMU uses OpenBIOS
0986ac3b
FB
1477@url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
1478firmware implementation. The goal is to implement a 100% IEEE
14791275-1994 (referred to as Open Firmware) compliant firmware.
3475187d
FB
1480
1481A sample Linux 2.6 series kernel and ram disk image are available on
34a3d239
BS
1482the QEMU web site. There are still issues with NetBSD and OpenBSD, but
1483some kernel versions work. Please note that currently Solaris kernels
1484don't work probably due to interface issues between OpenBIOS and
1485Solaris.
3475187d
FB
1486
1487@c man begin OPTIONS
1488
a2502b58 1489The following options are specific to the Sparc32 emulation:
3475187d
FB
1490
1491@table @option
1492
4e257e5e 1493@item -g @var{W}x@var{H}x[x@var{DEPTH}]
3475187d 1494
a2502b58
BS
1495Set the initial TCX graphic mode. The default is 1024x768x8, currently
1496the only other possible mode is 1024x768x24.
3475187d 1497
4e257e5e 1498@item -prom-env @var{string}
66508601
BS
1499
1500Set OpenBIOS variables in NVRAM, for example:
1501
1502@example
1503qemu-system-sparc -prom-env 'auto-boot?=false' \
1504 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
1505@end example
1506
609c1dac 1507@item -M [SS-4|SS-5|SS-10|SS-20|SS-600MP|LX|Voyager|SPARCClassic] [|SPARCbook|SS-2|SS-1000|SS-2000]
a2502b58
BS
1508
1509Set the emulated machine type. Default is SS-5.
1510
3475187d
FB
1511@end table
1512
5fafdf24 1513@c man end
3475187d 1514
24d4de45
TS
1515@node Sparc64 System emulator
1516@section Sparc64 System emulator
7544a042 1517@cindex system emulation (Sparc64)
e80cfcfc 1518
34a3d239
BS
1519Use the executable @file{qemu-system-sparc64} to simulate a Sun4u
1520(UltraSPARC PC-like machine), Sun4v (T1 PC-like machine), or generic
1521Niagara (T1) machine. The emulator is not usable for anything yet, but
1522it can launch some kernels.
b756921a 1523
c7ba218d 1524QEMU emulates the following peripherals:
83469015
FB
1525
1526@itemize @minus
1527@item
5fafdf24 1528UltraSparc IIi APB PCI Bridge
83469015
FB
1529@item
1530PCI VGA compatible card with VESA Bochs Extensions
1531@item
34a3d239
BS
1532PS/2 mouse and keyboard
1533@item
83469015
FB
1534Non Volatile RAM M48T59
1535@item
1536PC-compatible serial ports
c7ba218d
BS
1537@item
15382 PCI IDE interfaces with hard disk and CD-ROM support
34a3d239
BS
1539@item
1540Floppy disk
83469015
FB
1541@end itemize
1542
c7ba218d
BS
1543@c man begin OPTIONS
1544
1545The following options are specific to the Sparc64 emulation:
1546
1547@table @option
1548
4e257e5e 1549@item -prom-env @var{string}
34a3d239
BS
1550
1551Set OpenBIOS variables in NVRAM, for example:
1552
1553@example
1554qemu-system-sparc64 -prom-env 'auto-boot?=false'
1555@end example
1556
1557@item -M [sun4u|sun4v|Niagara]
c7ba218d
BS
1558
1559Set the emulated machine type. The default is sun4u.
1560
1561@end table
1562
1563@c man end
1564
24d4de45
TS
1565@node MIPS System emulator
1566@section MIPS System emulator
7544a042 1567@cindex system emulation (MIPS)
9d0a8e6f 1568
d9aedc32
TS
1569Four executables cover simulation of 32 and 64-bit MIPS systems in
1570both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
1571@file{qemu-system-mips64} and @file{qemu-system-mips64el}.
88cb0a02 1572Five different machine types are emulated:
24d4de45
TS
1573
1574@itemize @minus
1575@item
1576A generic ISA PC-like machine "mips"
1577@item
1578The MIPS Malta prototype board "malta"
1579@item
d9aedc32 1580An ACER Pica "pica61". This machine needs the 64-bit emulator.
6bf5b4e8 1581@item
f0fc6f8f 1582MIPS emulator pseudo board "mipssim"
88cb0a02
AJ
1583@item
1584A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
24d4de45
TS
1585@end itemize
1586
1587The generic emulation is supported by Debian 'Etch' and is able to
1588install Debian into a virtual disk image. The following devices are
1589emulated:
3f9f3aa1
FB
1590
1591@itemize @minus
5fafdf24 1592@item
6bf5b4e8 1593A range of MIPS CPUs, default is the 24Kf
3f9f3aa1
FB
1594@item
1595PC style serial port
1596@item
24d4de45
TS
1597PC style IDE disk
1598@item
3f9f3aa1
FB
1599NE2000 network card
1600@end itemize
1601
24d4de45
TS
1602The Malta emulation supports the following devices:
1603
1604@itemize @minus
1605@item
0b64d008 1606Core board with MIPS 24Kf CPU and Galileo system controller
24d4de45
TS
1607@item
1608PIIX4 PCI/USB/SMbus controller
1609@item
1610The Multi-I/O chip's serial device
1611@item
3a2eeac0 1612PCI network cards (PCnet32 and others)
24d4de45
TS
1613@item
1614Malta FPGA serial device
1615@item
1f605a76 1616Cirrus (default) or any other PCI VGA graphics card
24d4de45
TS
1617@end itemize
1618
1619The ACER Pica emulation supports:
1620
1621@itemize @minus
1622@item
1623MIPS R4000 CPU
1624@item
1625PC-style IRQ and DMA controllers
1626@item
1627PC Keyboard
1628@item
1629IDE controller
1630@end itemize
3f9f3aa1 1631
f0fc6f8f
TS
1632The mipssim pseudo board emulation provides an environment similiar
1633to what the proprietary MIPS emulator uses for running Linux.
1634It supports:
6bf5b4e8
TS
1635
1636@itemize @minus
1637@item
1638A range of MIPS CPUs, default is the 24Kf
1639@item
1640PC style serial port
1641@item
1642MIPSnet network emulation
1643@end itemize
1644
88cb0a02
AJ
1645The MIPS Magnum R4000 emulation supports:
1646
1647@itemize @minus
1648@item
1649MIPS R4000 CPU
1650@item
1651PC-style IRQ controller
1652@item
1653PC Keyboard
1654@item
1655SCSI controller
1656@item
1657G364 framebuffer
1658@end itemize
1659
1660
24d4de45
TS
1661@node ARM System emulator
1662@section ARM System emulator
7544a042 1663@cindex system emulation (ARM)
3f9f3aa1
FB
1664
1665Use the executable @file{qemu-system-arm} to simulate a ARM
1666machine. The ARM Integrator/CP board is emulated with the following
1667devices:
1668
1669@itemize @minus
1670@item
9ee6e8bb 1671ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
3f9f3aa1
FB
1672@item
1673Two PL011 UARTs
5fafdf24 1674@item
3f9f3aa1 1675SMC 91c111 Ethernet adapter
00a9bf19
PB
1676@item
1677PL110 LCD controller
1678@item
1679PL050 KMI with PS/2 keyboard and mouse.
a1bb27b1
PB
1680@item
1681PL181 MultiMedia Card Interface with SD card.
00a9bf19
PB
1682@end itemize
1683
1684The ARM Versatile baseboard is emulated with the following devices:
1685
1686@itemize @minus
1687@item
9ee6e8bb 1688ARM926E, ARM1136 or Cortex-A8 CPU
00a9bf19
PB
1689@item
1690PL190 Vectored Interrupt Controller
1691@item
1692Four PL011 UARTs
5fafdf24 1693@item
00a9bf19
PB
1694SMC 91c111 Ethernet adapter
1695@item
1696PL110 LCD controller
1697@item
1698PL050 KMI with PS/2 keyboard and mouse.
1699@item
1700PCI host bridge. Note the emulated PCI bridge only provides access to
1701PCI memory space. It does not provide access to PCI IO space.
4be456f1
TS
1702This means some devices (eg. ne2k_pci NIC) are not usable, and others
1703(eg. rtl8139 NIC) are only usable when the guest drivers use the memory
00a9bf19 1704mapped control registers.
e6de1bad
PB
1705@item
1706PCI OHCI USB controller.
1707@item
1708LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
a1bb27b1
PB
1709@item
1710PL181 MultiMedia Card Interface with SD card.
3f9f3aa1
FB
1711@end itemize
1712
21a88941
PB
1713Several variants of the ARM RealView baseboard are emulated,
1714including the EB, PB-A8 and PBX-A9. Due to interactions with the
1715bootloader, only certain Linux kernel configurations work out
1716of the box on these boards.
1717
1718Kernels for the PB-A8 board should have CONFIG_REALVIEW_HIGH_PHYS_OFFSET
1719enabled in the kernel, and expect 512M RAM. Kernels for The PBX-A9 board
1720should have CONFIG_SPARSEMEM enabled, CONFIG_REALVIEW_HIGH_PHYS_OFFSET
1721disabled and expect 1024M RAM.
1722
1723The following devices are emuilated:
d7739d75
PB
1724
1725@itemize @minus
1726@item
f7c70325 1727ARM926E, ARM1136, ARM11MPCore, Cortex-A8 or Cortex-A9 MPCore CPU
d7739d75
PB
1728@item
1729ARM AMBA Generic/Distributed Interrupt Controller
1730@item
1731Four PL011 UARTs
5fafdf24 1732@item
0ef849d7 1733SMC 91c111 or SMSC LAN9118 Ethernet adapter
d7739d75
PB
1734@item
1735PL110 LCD controller
1736@item
1737PL050 KMI with PS/2 keyboard and mouse
1738@item
1739PCI host bridge
1740@item
1741PCI OHCI USB controller
1742@item
1743LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
a1bb27b1
PB
1744@item
1745PL181 MultiMedia Card Interface with SD card.
d7739d75
PB
1746@end itemize
1747
b00052e4
AZ
1748The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
1749and "Terrier") emulation includes the following peripherals:
1750
1751@itemize @minus
1752@item
1753Intel PXA270 System-on-chip (ARM V5TE core)
1754@item
1755NAND Flash memory
1756@item
1757IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
1758@item
1759On-chip OHCI USB controller
1760@item
1761On-chip LCD controller
1762@item
1763On-chip Real Time Clock
1764@item
1765TI ADS7846 touchscreen controller on SSP bus
1766@item
1767Maxim MAX1111 analog-digital converter on I@math{^2}C bus
1768@item
1769GPIO-connected keyboard controller and LEDs
1770@item
549444e1 1771Secure Digital card connected to PXA MMC/SD host
b00052e4
AZ
1772@item
1773Three on-chip UARTs
1774@item
1775WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
1776@end itemize
1777
02645926
AZ
1778The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
1779following elements:
1780
1781@itemize @minus
1782@item
1783Texas Instruments OMAP310 System-on-chip (ARM 925T core)
1784@item
1785ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
1786@item
1787On-chip LCD controller
1788@item
1789On-chip Real Time Clock
1790@item
1791TI TSC2102i touchscreen controller / analog-digital converter / Audio
1792CODEC, connected through MicroWire and I@math{^2}S busses
1793@item
1794GPIO-connected matrix keypad
1795@item
1796Secure Digital card connected to OMAP MMC/SD host
1797@item
1798Three on-chip UARTs
1799@end itemize
1800
c30bb264
AZ
1801Nokia N800 and N810 internet tablets (known also as RX-34 and RX-44 / 48)
1802emulation supports the following elements:
1803
1804@itemize @minus
1805@item
1806Texas Instruments OMAP2420 System-on-chip (ARM 1136 core)
1807@item
1808RAM and non-volatile OneNAND Flash memories
1809@item
1810Display connected to EPSON remote framebuffer chip and OMAP on-chip
1811display controller and a LS041y3 MIPI DBI-C controller
1812@item
1813TI TSC2301 (in N800) and TI TSC2005 (in N810) touchscreen controllers
1814driven through SPI bus
1815@item
1816National Semiconductor LM8323-controlled qwerty keyboard driven
1817through I@math{^2}C bus
1818@item
1819Secure Digital card connected to OMAP MMC/SD host
1820@item
1821Three OMAP on-chip UARTs and on-chip STI debugging console
1822@item
2d564691
AZ
1823A Bluetooth(R) transciever and HCI connected to an UART
1824@item
c30bb264
AZ
1825Mentor Graphics "Inventra" dual-role USB controller embedded in a TI
1826TUSB6010 chip - only USB host mode is supported
1827@item
1828TI TMP105 temperature sensor driven through I@math{^2}C bus
1829@item
1830TI TWL92230C power management companion with an RTC on I@math{^2}C bus
1831@item
1832Nokia RETU and TAHVO multi-purpose chips with an RTC, connected
1833through CBUS
1834@end itemize
1835
9ee6e8bb
PB
1836The Luminary Micro Stellaris LM3S811EVB emulation includes the following
1837devices:
1838
1839@itemize @minus
1840@item
1841Cortex-M3 CPU core.
1842@item
184364k Flash and 8k SRAM.
1844@item
1845Timers, UARTs, ADC and I@math{^2}C interface.
1846@item
1847OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
1848@end itemize
1849
1850The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
1851devices:
1852
1853@itemize @minus
1854@item
1855Cortex-M3 CPU core.
1856@item
1857256k Flash and 64k SRAM.
1858@item
1859Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
1860@item
1861OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
1862@end itemize
1863
57cd6e97
AZ
1864The Freecom MusicPal internet radio emulation includes the following
1865elements:
1866
1867@itemize @minus
1868@item
1869Marvell MV88W8618 ARM core.
1870@item
187132 MB RAM, 256 KB SRAM, 8 MB flash.
1872@item
1873Up to 2 16550 UARTs
1874@item
1875MV88W8xx8 Ethernet controller
1876@item
1877MV88W8618 audio controller, WM8750 CODEC and mixer
1878@item
e080e785 1879128×64 display with brightness control
57cd6e97
AZ
1880@item
18812 buttons, 2 navigation wheels with button function
1882@end itemize
1883
997641a8
AZ
1884The Siemens SX1 models v1 and v2 (default) basic emulation.
1885The emulaton includes the following elements:
1886
1887@itemize @minus
1888@item
1889Texas Instruments OMAP310 System-on-chip (ARM 925T core)
1890@item
1891ROM and RAM memories (ROM firmware image can be loaded with -pflash)
1892V1
18931 Flash of 16MB and 1 Flash of 8MB
1894V2
18951 Flash of 32MB
1896@item
1897On-chip LCD controller
1898@item
1899On-chip Real Time Clock
1900@item
1901Secure Digital card connected to OMAP MMC/SD host
1902@item
1903Three on-chip UARTs
1904@end itemize
1905
4af39611
PB
1906The "Syborg" Symbian Virtual Platform base model includes the following
1907elements:
1908
1909@itemize @minus
1910@item
1911ARM Cortex-A8 CPU
1912@item
1913Interrupt controller
1914@item
1915Timer
1916@item
1917Real Time Clock
1918@item
1919Keyboard
1920@item
1921Framebuffer
1922@item
1923Touchscreen
1924@item
1925UARTs
1926@end itemize
1927
3f9f3aa1
FB
1928A Linux 2.6 test image is available on the QEMU web site. More
1929information is available in the QEMU mailing-list archive.
9d0a8e6f 1930
d2c639d6
BS
1931@c man begin OPTIONS
1932
1933The following options are specific to the ARM emulation:
1934
1935@table @option
1936
1937@item -semihosting
1938Enable semihosting syscall emulation.
1939
1940On ARM this implements the "Angel" interface.
1941
1942Note that this allows guest direct access to the host filesystem,
1943so should only be used with trusted guest OS.
1944
1945@end table
1946
24d4de45
TS
1947@node ColdFire System emulator
1948@section ColdFire System emulator
7544a042
SW
1949@cindex system emulation (ColdFire)
1950@cindex system emulation (M68K)
209a4e69
PB
1951
1952Use the executable @file{qemu-system-m68k} to simulate a ColdFire machine.
1953The emulator is able to boot a uClinux kernel.
707e011b
PB
1954
1955The M5208EVB emulation includes the following devices:
1956
1957@itemize @minus
5fafdf24 1958@item
707e011b
PB
1959MCF5208 ColdFire V2 Microprocessor (ISA A+ with EMAC).
1960@item
1961Three Two on-chip UARTs.
1962@item
1963Fast Ethernet Controller (FEC)
1964@end itemize
1965
1966The AN5206 emulation includes the following devices:
209a4e69
PB
1967
1968@itemize @minus
5fafdf24 1969@item
209a4e69
PB
1970MCF5206 ColdFire V2 Microprocessor.
1971@item
1972Two on-chip UARTs.
1973@end itemize
1974
d2c639d6
BS
1975@c man begin OPTIONS
1976
7544a042 1977The following options are specific to the ColdFire emulation:
d2c639d6
BS
1978
1979@table @option
1980
1981@item -semihosting
1982Enable semihosting syscall emulation.
1983
1984On M68K this implements the "ColdFire GDB" interface used by libgloss.
1985
1986Note that this allows guest direct access to the host filesystem,
1987so should only be used with trusted guest OS.
1988
1989@end table
1990
7544a042
SW
1991@node Cris System emulator
1992@section Cris System emulator
1993@cindex system emulation (Cris)
1994
1995TODO
1996
1997@node Microblaze System emulator
1998@section Microblaze System emulator
1999@cindex system emulation (Microblaze)
2000
2001TODO
2002
2003@node SH4 System emulator
2004@section SH4 System emulator
2005@cindex system emulation (SH4)
2006
2007TODO
2008
5fafdf24
TS
2009@node QEMU User space emulator
2010@chapter QEMU User space emulator
83195237
FB
2011
2012@menu
2013* Supported Operating Systems ::
2014* Linux User space emulator::
2015* Mac OS X/Darwin User space emulator ::
84778508 2016* BSD User space emulator ::
83195237
FB
2017@end menu
2018
2019@node Supported Operating Systems
2020@section Supported Operating Systems
2021
2022The following OS are supported in user space emulation:
2023
2024@itemize @minus
2025@item
4be456f1 2026Linux (referred as qemu-linux-user)
83195237 2027@item
4be456f1 2028Mac OS X/Darwin (referred as qemu-darwin-user)
84778508
BS
2029@item
2030BSD (referred as qemu-bsd-user)
83195237
FB
2031@end itemize
2032
2033@node Linux User space emulator
2034@section Linux User space emulator
386405f7 2035
debc7065
FB
2036@menu
2037* Quick Start::
2038* Wine launch::
2039* Command line options::
79737e4a 2040* Other binaries::
debc7065
FB
2041@end menu
2042
2043@node Quick Start
83195237 2044@subsection Quick Start
df0f11a0 2045
1f673135 2046In order to launch a Linux process, QEMU needs the process executable
5fafdf24 2047itself and all the target (x86) dynamic libraries used by it.
386405f7 2048
1f673135 2049@itemize
386405f7 2050
1f673135
FB
2051@item On x86, you can just try to launch any process by using the native
2052libraries:
386405f7 2053
5fafdf24 2054@example
1f673135
FB
2055qemu-i386 -L / /bin/ls
2056@end example
386405f7 2057
1f673135
FB
2058@code{-L /} tells that the x86 dynamic linker must be searched with a
2059@file{/} prefix.
386405f7 2060
dbcf5e82
TS
2061@item Since QEMU is also a linux process, you can launch qemu with
2062qemu (NOTE: you can only do that if you compiled QEMU from the sources):
386405f7 2063
5fafdf24 2064@example
1f673135
FB
2065qemu-i386 -L / qemu-i386 -L / /bin/ls
2066@end example
386405f7 2067
1f673135
FB
2068@item On non x86 CPUs, you need first to download at least an x86 glibc
2069(@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
2070@code{LD_LIBRARY_PATH} is not set:
df0f11a0 2071
1f673135 2072@example
5fafdf24 2073unset LD_LIBRARY_PATH
1f673135 2074@end example
1eb87257 2075
1f673135 2076Then you can launch the precompiled @file{ls} x86 executable:
1eb87257 2077
1f673135
FB
2078@example
2079qemu-i386 tests/i386/ls
2080@end example
2081You can look at @file{qemu-binfmt-conf.sh} so that
2082QEMU is automatically launched by the Linux kernel when you try to
2083launch x86 executables. It requires the @code{binfmt_misc} module in the
2084Linux kernel.
1eb87257 2085
1f673135
FB
2086@item The x86 version of QEMU is also included. You can try weird things such as:
2087@example
debc7065
FB
2088qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
2089 /usr/local/qemu-i386/bin/ls-i386
1f673135 2090@end example
1eb20527 2091
1f673135 2092@end itemize
1eb20527 2093
debc7065 2094@node Wine launch
83195237 2095@subsection Wine launch
1eb20527 2096
1f673135 2097@itemize
386405f7 2098
1f673135
FB
2099@item Ensure that you have a working QEMU with the x86 glibc
2100distribution (see previous section). In order to verify it, you must be
2101able to do:
386405f7 2102
1f673135
FB
2103@example
2104qemu-i386 /usr/local/qemu-i386/bin/ls-i386
2105@end example
386405f7 2106
1f673135 2107@item Download the binary x86 Wine install
5fafdf24 2108(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
386405f7 2109
1f673135 2110@item Configure Wine on your account. Look at the provided script
debc7065 2111@file{/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous
1f673135 2112@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
386405f7 2113
1f673135 2114@item Then you can try the example @file{putty.exe}:
386405f7 2115
1f673135 2116@example
debc7065
FB
2117qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
2118 /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1f673135 2119@end example
386405f7 2120
1f673135 2121@end itemize
fd429f2f 2122
debc7065 2123@node Command line options
83195237 2124@subsection Command line options
1eb20527 2125
1f673135 2126@example
68a1c816 2127usage: qemu-i386 [-h] [-d] [-L path] [-s size] [-cpu model] [-g port] [-B offset] [-R size] program [arguments...]
1f673135 2128@end example
1eb20527 2129
1f673135
FB
2130@table @option
2131@item -h
2132Print the help
3b46e624 2133@item -L path
1f673135
FB
2134Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
2135@item -s size
2136Set the x86 stack size in bytes (default=524288)
34a3d239
BS
2137@item -cpu model
2138Select CPU model (-cpu ? for list and additional feature selection)
379f6698
PB
2139@item -B offset
2140Offset guest address by the specified number of bytes. This is useful when
2141the address region rewuired by guest applications is reserved on the host.
2142Ths option is currently only supported on some hosts.
68a1c816
PB
2143@item -R size
2144Pre-allocate a guest virtual address space of the given size (in bytes).
2145"G", "M", and "k" suffixes may be used when specifying the size.
386405f7
FB
2146@end table
2147
1f673135 2148Debug options:
386405f7 2149
1f673135
FB
2150@table @option
2151@item -d
2152Activate log (logfile=/tmp/qemu.log)
2153@item -p pagesize
2154Act as if the host page size was 'pagesize' bytes
34a3d239
BS
2155@item -g port
2156Wait gdb connection to port
1b530a6d
AJ
2157@item -singlestep
2158Run the emulation in single step mode.
1f673135 2159@end table
386405f7 2160
b01bcae6
AZ
2161Environment variables:
2162
2163@table @env
2164@item QEMU_STRACE
2165Print system calls and arguments similar to the 'strace' program
2166(NOTE: the actual 'strace' program will not work because the user
2167space emulator hasn't implemented ptrace). At the moment this is
2168incomplete. All system calls that don't have a specific argument
2169format are printed with information for six arguments. Many
2170flag-style arguments don't have decoders and will show up as numbers.
5cfdf930 2171@end table
b01bcae6 2172
79737e4a 2173@node Other binaries
83195237 2174@subsection Other binaries
79737e4a 2175
7544a042
SW
2176@cindex user mode (Alpha)
2177@command{qemu-alpha} TODO.
2178
2179@cindex user mode (ARM)
2180@command{qemu-armeb} TODO.
2181
2182@cindex user mode (ARM)
79737e4a
PB
2183@command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF
2184binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
2185configurations), and arm-uclinux bFLT format binaries.
2186
7544a042
SW
2187@cindex user mode (ColdFire)
2188@cindex user mode (M68K)
e6e5906b
PB
2189@command{qemu-m68k} is capable of running semihosted binaries using the BDM
2190(m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
2191coldfire uClinux bFLT format binaries.
2192
79737e4a
PB
2193The binary format is detected automatically.
2194
7544a042
SW
2195@cindex user mode (Cris)
2196@command{qemu-cris} TODO.
2197
2198@cindex user mode (i386)
2199@command{qemu-i386} TODO.
2200@command{qemu-x86_64} TODO.
2201
2202@cindex user mode (Microblaze)
2203@command{qemu-microblaze} TODO.
2204
2205@cindex user mode (MIPS)
2206@command{qemu-mips} TODO.
2207@command{qemu-mipsel} TODO.
2208
2209@cindex user mode (PowerPC)
2210@command{qemu-ppc64abi32} TODO.
2211@command{qemu-ppc64} TODO.
2212@command{qemu-ppc} TODO.
2213
2214@cindex user mode (SH4)
2215@command{qemu-sh4eb} TODO.
2216@command{qemu-sh4} TODO.
2217
2218@cindex user mode (SPARC)
34a3d239
BS
2219@command{qemu-sparc} can execute Sparc32 binaries (Sparc32 CPU, 32 bit ABI).
2220
a785e42e
BS
2221@command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries
2222(Sparc64 CPU, 32 bit ABI).
2223
2224@command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
2225SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
2226
83195237
FB
2227@node Mac OS X/Darwin User space emulator
2228@section Mac OS X/Darwin User space emulator
2229
2230@menu
2231* Mac OS X/Darwin Status::
2232* Mac OS X/Darwin Quick Start::
2233* Mac OS X/Darwin Command line options::
2234@end menu
2235
2236@node Mac OS X/Darwin Status
2237@subsection Mac OS X/Darwin Status
2238
2239@itemize @minus
2240@item
2241target x86 on x86: Most apps (Cocoa and Carbon too) works. [1]
2242@item
2243target PowerPC on x86: Not working as the ppc commpage can't be mapped (yet!)
2244@item
dbcf5e82 2245target PowerPC on PowerPC: Most apps (Cocoa and Carbon too) works. [1]
83195237
FB
2246@item
2247target x86 on PowerPC: most utilities work. Cocoa and Carbon apps are not yet supported.
2248@end itemize
2249
2250[1] If you're host commpage can be executed by qemu.
2251
2252@node Mac OS X/Darwin Quick Start
2253@subsection Quick Start
2254
2255In order to launch a Mac OS X/Darwin process, QEMU needs the process executable
2256itself and all the target dynamic libraries used by it. If you don't have the FAT
2257libraries (you're running Mac OS X/ppc) you'll need to obtain it from a Mac OS X
2258CD or compile them by hand.
2259
2260@itemize
2261
2262@item On x86, you can just try to launch any process by using the native
2263libraries:
2264
5fafdf24 2265@example
dbcf5e82 2266qemu-i386 /bin/ls
83195237
FB
2267@end example
2268
2269or to run the ppc version of the executable:
2270
5fafdf24 2271@example
dbcf5e82 2272qemu-ppc /bin/ls
83195237
FB
2273@end example
2274
2275@item On ppc, you'll have to tell qemu where your x86 libraries (and dynamic linker)
2276are installed:
2277
5fafdf24 2278@example
dbcf5e82 2279qemu-i386 -L /opt/x86_root/ /bin/ls
83195237
FB
2280@end example
2281
2282@code{-L /opt/x86_root/} tells that the dynamic linker (dyld) path is in
2283@file{/opt/x86_root/usr/bin/dyld}.
2284
2285@end itemize
2286
2287@node Mac OS X/Darwin Command line options
2288@subsection Command line options
2289
2290@example
dbcf5e82 2291usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
83195237
FB
2292@end example
2293
2294@table @option
2295@item -h
2296Print the help
3b46e624 2297@item -L path
83195237
FB
2298Set the library root path (default=/)
2299@item -s size
2300Set the stack size in bytes (default=524288)
2301@end table
2302
2303Debug options:
2304
2305@table @option
2306@item -d
2307Activate log (logfile=/tmp/qemu.log)
2308@item -p pagesize
2309Act as if the host page size was 'pagesize' bytes
1b530a6d
AJ
2310@item -singlestep
2311Run the emulation in single step mode.
83195237
FB
2312@end table
2313
84778508
BS
2314@node BSD User space emulator
2315@section BSD User space emulator
2316
2317@menu
2318* BSD Status::
2319* BSD Quick Start::
2320* BSD Command line options::
2321@end menu
2322
2323@node BSD Status
2324@subsection BSD Status
2325
2326@itemize @minus
2327@item
2328target Sparc64 on Sparc64: Some trivial programs work.
2329@end itemize
2330
2331@node BSD Quick Start
2332@subsection Quick Start
2333
2334In order to launch a BSD process, QEMU needs the process executable
2335itself and all the target dynamic libraries used by it.
2336
2337@itemize
2338
2339@item On Sparc64, you can just try to launch any process by using the native
2340libraries:
2341
2342@example
2343qemu-sparc64 /bin/ls
2344@end example
2345
2346@end itemize
2347
2348@node BSD Command line options
2349@subsection Command line options
2350
2351@example
2352usage: qemu-sparc64 [-h] [-d] [-L path] [-s size] [-bsd type] program [arguments...]
2353@end example
2354
2355@table @option
2356@item -h
2357Print the help
2358@item -L path
2359Set the library root path (default=/)
2360@item -s size
2361Set the stack size in bytes (default=524288)
2362@item -bsd type
2363Set the type of the emulated BSD Operating system. Valid values are
2364FreeBSD, NetBSD and OpenBSD (default).
2365@end table
2366
2367Debug options:
2368
2369@table @option
2370@item -d
2371Activate log (logfile=/tmp/qemu.log)
2372@item -p pagesize
2373Act as if the host page size was 'pagesize' bytes
1b530a6d
AJ
2374@item -singlestep
2375Run the emulation in single step mode.
84778508
BS
2376@end table
2377
15a34c63
FB
2378@node compilation
2379@chapter Compilation from the sources
2380
debc7065
FB
2381@menu
2382* Linux/Unix::
2383* Windows::
2384* Cross compilation for Windows with Linux::
2385* Mac OS X::
47eacb4f 2386* Make targets::
debc7065
FB
2387@end menu
2388
2389@node Linux/Unix
7c3fc84d
FB
2390@section Linux/Unix
2391
2392@subsection Compilation
2393
2394First you must decompress the sources:
2395@example
2396cd /tmp
2397tar zxvf qemu-x.y.z.tar.gz
2398cd qemu-x.y.z
2399@end example
2400
2401Then you configure QEMU and build it (usually no options are needed):
2402@example
2403./configure
2404make
2405@end example
2406
2407Then type as root user:
2408@example
2409make install
2410@end example
2411to install QEMU in @file{/usr/local}.
2412
debc7065 2413@node Windows
15a34c63
FB
2414@section Windows
2415
2416@itemize
2417@item Install the current versions of MSYS and MinGW from
2418@url{http://www.mingw.org/}. You can find detailed installation
2419instructions in the download section and the FAQ.
2420
5fafdf24 2421@item Download
15a34c63 2422the MinGW development library of SDL 1.2.x
debc7065 2423(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
d0a96f3d
ST
2424@url{http://www.libsdl.org}. Unpack it in a temporary place and
2425edit the @file{sdl-config} script so that it gives the
15a34c63
FB
2426correct SDL directory when invoked.
2427
d0a96f3d
ST
2428@item Install the MinGW version of zlib and make sure
2429@file{zlib.h} and @file{libz.dll.a} are in
2430MingGW's default header and linker search paths.
2431
15a34c63 2432@item Extract the current version of QEMU.
5fafdf24 2433
15a34c63
FB
2434@item Start the MSYS shell (file @file{msys.bat}).
2435
5fafdf24 2436@item Change to the QEMU directory. Launch @file{./configure} and
15a34c63
FB
2437@file{make}. If you have problems using SDL, verify that
2438@file{sdl-config} can be launched from the MSYS command line.
2439
5fafdf24 2440@item You can install QEMU in @file{Program Files/Qemu} by typing
15a34c63
FB
2441@file{make install}. Don't forget to copy @file{SDL.dll} in
2442@file{Program Files/Qemu}.
2443
2444@end itemize
2445
debc7065 2446@node Cross compilation for Windows with Linux
15a34c63
FB
2447@section Cross compilation for Windows with Linux
2448
2449@itemize
2450@item
2451Install the MinGW cross compilation tools available at
2452@url{http://www.mingw.org/}.
2453
d0a96f3d
ST
2454@item Download
2455the MinGW development library of SDL 1.2.x
2456(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
2457@url{http://www.libsdl.org}. Unpack it in a temporary place and
2458edit the @file{sdl-config} script so that it gives the
2459correct SDL directory when invoked. Set up the @code{PATH} environment
2460variable so that @file{sdl-config} can be launched by
15a34c63
FB
2461the QEMU configuration script.
2462
d0a96f3d
ST
2463@item Install the MinGW version of zlib and make sure
2464@file{zlib.h} and @file{libz.dll.a} are in
2465MingGW's default header and linker search paths.
2466
5fafdf24 2467@item
15a34c63
FB
2468Configure QEMU for Windows cross compilation:
2469@example
d0a96f3d
ST
2470PATH=/usr/i686-pc-mingw32/sys-root/mingw/bin:$PATH ./configure --cross-prefix='i686-pc-mingw32-'
2471@end example
2472The example assumes @file{sdl-config} is installed under @file{/usr/i686-pc-mingw32/sys-root/mingw/bin} and
2473MinGW cross compilation tools have names like @file{i686-pc-mingw32-gcc} and @file{i686-pc-mingw32-strip}.
2474We set the @code{PATH} environment variable to ensure the MingW version of @file{sdl-config} is used and
2475use --cross-prefix to specify the name of the cross compiler.
2476You can also use --prefix to set the Win32 install path which defaults to @file{c:/Program Files/Qemu}.
2477
2478Under Fedora Linux, you can run:
2479@example
2480yum -y install mingw32-gcc mingw32-SDL mingw32-zlib
15a34c63 2481@end example
d0a96f3d 2482to get a suitable cross compilation environment.
15a34c63 2483
5fafdf24 2484@item You can install QEMU in the installation directory by typing
d0a96f3d 2485@code{make install}. Don't forget to copy @file{SDL.dll} and @file{zlib1.dll} into the
5fafdf24 2486installation directory.
15a34c63
FB
2487
2488@end itemize
2489
d0a96f3d 2490Wine can be used to launch the resulting qemu.exe compiled for Win32.
15a34c63 2491
debc7065 2492@node Mac OS X
15a34c63
FB
2493@section Mac OS X
2494
2495The Mac OS X patches are not fully merged in QEMU, so you should look
2496at the QEMU mailing list archive to have all the necessary
2497information.
2498
47eacb4f
SW
2499@node Make targets
2500@section Make targets
2501
2502@table @code
2503
2504@item make
2505@item make all
2506Make everything which is typically needed.
2507
2508@item install
2509TODO
2510
2511@item install-doc
2512TODO
2513
2514@item make clean
2515Remove most files which were built during make.
2516
2517@item make distclean
2518Remove everything which was built during make.
2519
2520@item make dvi
2521@item make html
2522@item make info
2523@item make pdf
2524Create documentation in dvi, html, info or pdf format.
2525
2526@item make cscope
2527TODO
2528
2529@item make defconfig
2530(Re-)create some build configuration files.
2531User made changes will be overwritten.
2532
2533@item tar
2534@item tarbin
2535TODO
2536
2537@end table
2538
7544a042
SW
2539@node License
2540@appendix License
2541
2542QEMU is a trademark of Fabrice Bellard.
2543
2544QEMU is released under the GNU General Public License (TODO: add link).
2545Parts of QEMU have specific licenses, see file LICENSE.
2546
2547TODO (refer to file LICENSE, include it, include the GPL?)
2548
debc7065 2549@node Index
7544a042
SW
2550@appendix Index
2551@menu
2552* Concept Index::
2553* Function Index::
2554* Keystroke Index::
2555* Program Index::
2556* Data Type Index::
2557* Variable Index::
2558@end menu
2559
2560@node Concept Index
2561@section Concept Index
2562This is the main index. Should we combine all keywords in one index? TODO
debc7065
FB
2563@printindex cp
2564
7544a042
SW
2565@node Function Index
2566@section Function Index
2567This index could be used for command line options and monitor functions.
2568@printindex fn
2569
2570@node Keystroke Index
2571@section Keystroke Index
2572
2573This is a list of all keystrokes which have a special function
2574in system emulation.
2575
2576@printindex ky
2577
2578@node Program Index
2579@section Program Index
2580@printindex pg
2581
2582@node Data Type Index
2583@section Data Type Index
2584
2585This index could be used for qdev device names and options.
2586
2587@printindex tp
2588
2589@node Variable Index
2590@section Variable Index
2591@printindex vr
2592
debc7065 2593@bye