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