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