Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 60e1b2a6

History | View | Annotate | Download (81.1 kB)

1
\input texinfo @c -*- texinfo -*-
2
@c %**start of header
3
@setfilename qemu-doc.info
4

    
5
@documentlanguage en
6
@documentencoding UTF-8
7

    
8
@settitle QEMU Emulator User Documentation
9
@exampleindent 0
10
@paragraphindent 0
11
@c %**end of header
12

    
13
@ifinfo
14
@direntry
15
* QEMU: (qemu-doc).    The QEMU Emulator User Documentation.
16
@end direntry
17
@end ifinfo
18

    
19
@iftex
20
@titlepage
21
@sp 7
22
@center @titlefont{QEMU Emulator}
23
@sp 1
24
@center @titlefont{User Documentation}
25
@sp 3
26
@end titlepage
27
@end iftex
28

    
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::
38
* QEMU User space emulator::
39
* compilation:: Compilation from the sources
40
* License::
41
* Index::
42
@end menu
43
@end ifnottex
44

    
45
@contents
46

    
47
@node Introduction
48
@chapter Introduction
49

    
50
@menu
51
* intro_features:: Features
52
@end menu
53

    
54
@node intro_features
55
@section Features
56

    
57
QEMU is a FAST! processor emulator using dynamic translation to
58
achieve good emulation speed.
59

    
60
QEMU has two operating modes:
61

    
62
@itemize
63
@cindex operating modes
64

    
65
@item
66
@cindex system emulation
67
Full system emulation. In this mode, QEMU emulates a full system (for
68
example a PC), including one or several processors and various
69
peripherals. It can be used to launch different Operating Systems
70
without rebooting the PC or to debug system code.
71

    
72
@item
73
@cindex user mode emulation
74
User mode emulation. In this mode, QEMU can launch
75
processes compiled for one CPU on another CPU. It can be used to
76
launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
77
to ease cross-compilation and cross-debugging.
78

    
79
@end itemize
80

    
81
QEMU can run without an host kernel driver and yet gives acceptable
82
performance.
83

    
84
For system emulation, the following hardware targets are supported:
85
@itemize
86
@cindex emulated target systems
87
@cindex supported target systems
88
@item PC (x86 or x86_64 processor)
89
@item ISA PC (old style PC without PCI bus)
90
@item PREP (PowerPC processor)
91
@item G3 Beige PowerMac (PowerPC processor)
92
@item Mac99 PowerMac (PowerPC processor, in progress)
93
@item Sun4m/Sun4c/Sun4d (32-bit Sparc processor)
94
@item Sun4u/Sun4v (64-bit Sparc processor, in progress)
95
@item Malta board (32-bit and 64-bit MIPS processors)
96
@item MIPS Magnum (64-bit MIPS processor)
97
@item ARM Integrator/CP (ARM)
98
@item ARM Versatile baseboard (ARM)
99
@item ARM RealView Emulation/Platform baseboard (ARM)
100
@item Spitz, Akita, Borzoi, Terrier and Tosa PDAs (PXA270 processor)
101
@item Luminary Micro LM3S811EVB (ARM Cortex-M3)
102
@item Luminary Micro LM3S6965EVB (ARM Cortex-M3)
103
@item Freescale MCF5208EVB (ColdFire V2).
104
@item Arnewsh MCF5206 evaluation board (ColdFire V2).
105
@item Palm Tungsten|E PDA (OMAP310 processor)
106
@item N800 and N810 tablets (OMAP2420 processor)
107
@item MusicPal (MV88W8618 ARM processor)
108
@item Gumstix "Connex" and "Verdex" motherboards (PXA255/270).
109
@item Siemens SX1 smartphone (OMAP310 processor)
110
@item AXIS-Devboard88 (CRISv32 ETRAX-FS).
111
@item Petalogix Spartan 3aDSP1800 MMU ref design (MicroBlaze).
112
@item Avnet LX60/LX110/LX200 boards (Xtensa)
113
@end itemize
114

    
115
@cindex supported user mode targets
116
For user emulation, x86 (32 and 64 bit), PowerPC (32 and 64 bit),
117
ARM, MIPS (32 bit only), Sparc (32 and 64 bit),
118
Alpha, ColdFire(m68k), CRISv32 and MicroBlaze CPUs are supported.
119

    
120
@node Installation
121
@chapter Installation
122

    
123
If you want to compile QEMU yourself, see @ref{compilation}.
124

    
125
@menu
126
* install_linux::   Linux
127
* install_windows:: Windows
128
* install_mac::     Macintosh
129
@end menu
130

    
131
@node install_linux
132
@section Linux
133
@cindex installation (Linux)
134

    
135
If a precompiled package is available for your distribution - you just
136
have to install it. Otherwise, see @ref{compilation}.
137

    
138
@node install_windows
139
@section Windows
140
@cindex installation (Windows)
141

    
142
Download the experimental binary installer at
143
@url{http://www.free.oszoo.org/@/download.html}.
144
TODO (no longer available)
145

    
146
@node install_mac
147
@section Mac OS X
148

    
149
Download the experimental binary installer at
150
@url{http://www.free.oszoo.org/@/download.html}.
151
TODO (no longer available)
152

    
153
@node QEMU PC System emulator
154
@chapter QEMU PC System emulator
155
@cindex system emulation (PC)
156

    
157
@menu
158
* pcsys_introduction:: Introduction
159
* pcsys_quickstart::   Quick Start
160
* sec_invocation::     Invocation
161
* pcsys_keys::         Keys
162
* pcsys_monitor::      QEMU Monitor
163
* disk_images::        Disk Images
164
* pcsys_network::      Network emulation
165
* pcsys_other_devs::   Other Devices
166
* direct_linux_boot::  Direct Linux Boot
167
* pcsys_usb::          USB emulation
168
* vnc_security::       VNC security
169
* gdb_usage::          GDB usage
170
* pcsys_os_specific::  Target OS specific information
171
@end menu
172

    
173
@node pcsys_introduction
174
@section Introduction
175

    
176
@c man begin DESCRIPTION
177

    
178
The QEMU PC System emulator simulates the
179
following peripherals:
180

    
181
@itemize @minus
182
@item
183
i440FX host PCI bridge and PIIX3 PCI to ISA bridge
184
@item
185
Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
186
extensions (hardware level, including all non standard modes).
187
@item
188
PS/2 mouse and keyboard
189
@item
190
2 PCI IDE interfaces with hard disk and CD-ROM support
191
@item
192
Floppy disk
193
@item
194
PCI and ISA network adapters
195
@item
196
Serial ports
197
@item
198
Creative SoundBlaster 16 sound card
199
@item
200
ENSONIQ AudioPCI ES1370 sound card
201
@item
202
Intel 82801AA AC97 Audio compatible sound card
203
@item
204
Intel HD Audio Controller and HDA codec
205
@item
206
Adlib (OPL2) - Yamaha YM3812 compatible chip
207
@item
208
Gravis Ultrasound GF1 sound card
209
@item
210
CS4231A compatible sound card
211
@item
212
PCI UHCI USB controller and a virtual USB hub.
213
@end itemize
214

    
215
SMP is supported with up to 255 CPUs.
216

    
217
Note that adlib, gus and cs4231a are only available when QEMU was
218
configured with --audio-card-list option containing the name(s) of
219
required card(s).
220

    
221
QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
222
VGA BIOS.
223

    
224
QEMU uses YM3812 emulation by Tatsuyuki Satoh.
225

    
226
QEMU uses GUS emulation (GUSEMU32 @url{http://www.deinmeister.de/gusemu/})
227
by Tibor "TS" Schütz.
228

    
229
Note that, by default, GUS shares IRQ(7) with parallel ports and so
230
qemu must be told to not have parallel ports to have working GUS
231

    
232
@example
233
qemu dos.img -soundhw gus -parallel none
234
@end example
235

    
236
Alternatively:
237
@example
238
qemu dos.img -device gus,irq=5
239
@end example
240

    
241
Or some other unclaimed IRQ.
242

    
243
CS4231A is the chip used in Windows Sound System and GUSMAX products
244

    
245
@c man end
246

    
247
@node pcsys_quickstart
248
@section Quick Start
249
@cindex quick start
250

    
251
Download and uncompress the linux image (@file{linux.img}) and type:
252

    
253
@example
254
qemu linux.img
255
@end example
256

    
257
Linux should boot and give you a prompt.
258

    
259
@node sec_invocation
260
@section Invocation
261

    
262
@example
263
@c man begin SYNOPSIS
264
usage: qemu [options] [@var{disk_image}]
265
@c man end
266
@end example
267

    
268
@c man begin OPTIONS
269
@var{disk_image} is a raw hard disk image for IDE hard disk 0. Some
270
targets do not need a disk image.
271

    
272
@include qemu-options.texi
273

    
274
@c man end
275

    
276
@node pcsys_keys
277
@section Keys
278

    
279
@c man begin OPTIONS
280

    
281
During the graphical emulation, you can use special key combinations to change
282
modes. The default key mappings are shown below, but if you use @code{-alt-grab}
283
then 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

    
286
@table @key
287
@item Ctrl-Alt-f
288
@kindex Ctrl-Alt-f
289
Toggle full screen
290

    
291
@item Ctrl-Alt-+
292
@kindex Ctrl-Alt-+
293
Enlarge the screen
294

    
295
@item Ctrl-Alt--
296
@kindex Ctrl-Alt--
297
Shrink the screen
298

    
299
@item Ctrl-Alt-u
300
@kindex Ctrl-Alt-u
301
Restore the screen's un-scaled dimensions
302

    
303
@item Ctrl-Alt-n
304
@kindex Ctrl-Alt-n
305
Switch to virtual console 'n'. Standard console mappings are:
306
@table @emph
307
@item 1
308
Target system display
309
@item 2
310
Monitor
311
@item 3
312
Serial port
313
@end table
314

    
315
@item Ctrl-Alt
316
@kindex Ctrl-Alt
317
Toggle mouse and keyboard grab.
318
@end table
319

    
320
@kindex Ctrl-Up
321
@kindex Ctrl-Down
322
@kindex Ctrl-PageUp
323
@kindex Ctrl-PageDown
324
In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
325
@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
326

    
327
@kindex Ctrl-a h
328
During emulation, if you are using the @option{-nographic} option, use
329
@key{Ctrl-a h} to get terminal commands:
330

    
331
@table @key
332
@item Ctrl-a h
333
@kindex Ctrl-a h
334
@item Ctrl-a ?
335
@kindex Ctrl-a ?
336
Print this help
337
@item Ctrl-a x
338
@kindex Ctrl-a x
339
Exit emulator
340
@item Ctrl-a s
341
@kindex Ctrl-a s
342
Save disk data back to file (if -snapshot)
343
@item Ctrl-a t
344
@kindex Ctrl-a t
345
Toggle console timestamps
346
@item Ctrl-a b
347
@kindex Ctrl-a b
348
Send break (magic sysrq in Linux)
349
@item Ctrl-a c
350
@kindex Ctrl-a c
351
Switch between console and monitor
352
@item Ctrl-a Ctrl-a
353
@kindex Ctrl-a a
354
Send Ctrl-a
355
@end table
356
@c man end
357

    
358
@ignore
359

    
360
@c man begin SEEALSO
361
The HTML documentation of QEMU for more precise information and Linux
362
user mode emulator invocation.
363
@c man end
364

    
365
@c man begin AUTHOR
366
Fabrice Bellard
367
@c man end
368

    
369
@end ignore
370

    
371
@node pcsys_monitor
372
@section QEMU Monitor
373
@cindex QEMU monitor
374

    
375
The QEMU monitor is used to give complex commands to the QEMU
376
emulator. You can use it to:
377

    
378
@itemize @minus
379

    
380
@item
381
Remove or insert removable media images
382
(such as CD-ROM or floppies).
383

    
384
@item
385
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
386
from a disk file.
387

    
388
@item Inspect the VM state without an external debugger.
389

    
390
@end itemize
391

    
392
@subsection Commands
393

    
394
The following commands are available:
395

    
396
@include qemu-monitor.texi
397

    
398
@subsection Integer expressions
399

    
400
The monitor understands integers expressions for every integer
401
argument. You can use register names to get the value of specifics
402
CPU registers by prefixing them with @emph{$}.
403

    
404
@node disk_images
405
@section Disk Images
406

    
407
Since version 0.6.1, QEMU supports many disk image formats, including
408
growable disk images (their size increase as non empty sectors are
409
written), compressed and encrypted disk images. Version 0.8.3 added
410
the new qcow2 disk image format which is essential to support VM
411
snapshots.
412

    
413
@menu
414
* disk_images_quickstart::    Quick start for disk image creation
415
* disk_images_snapshot_mode:: Snapshot mode
416
* vm_snapshots::              VM snapshots
417
* qemu_img_invocation::       qemu-img Invocation
418
* qemu_nbd_invocation::       qemu-nbd Invocation
419
* host_drives::               Using host drives
420
* disk_images_fat_images::    Virtual FAT disk images
421
* disk_images_nbd::           NBD access
422
* disk_images_sheepdog::      Sheepdog disk images
423
* disk_images_iscsi::         iSCSI LUNs
424
@end menu
425

    
426
@node disk_images_quickstart
427
@subsection Quick start for disk image creation
428

    
429
You can create a disk image with the command:
430
@example
431
qemu-img create myimage.img mysize
432
@end example
433
where @var{myimage.img} is the disk image filename and @var{mysize} is its
434
size in kilobytes. You can add an @code{M} suffix to give the size in
435
megabytes and a @code{G} suffix for gigabytes.
436

    
437
See @ref{qemu_img_invocation} for more information.
438

    
439
@node disk_images_snapshot_mode
440
@subsection Snapshot mode
441

    
442
If you use the option @option{-snapshot}, all disk images are
443
considered as read only. When sectors in written, they are written in
444
a temporary file created in @file{/tmp}. You can however force the
445
write back to the raw disk images by using the @code{commit} monitor
446
command (or @key{C-a s} in the serial console).
447

    
448
@node vm_snapshots
449
@subsection VM snapshots
450

    
451
VM snapshots are snapshots of the complete virtual machine including
452
CPU state, RAM, device state and the content of all the writable
453
disks. In order to use VM snapshots, you must have at least one non
454
removable and writable block device using the @code{qcow2} disk image
455
format. Normally this device is the first virtual hard drive.
456

    
457
Use the monitor command @code{savevm} to create a new VM snapshot or
458
replace an existing one. A human readable name can be assigned to each
459
snapshot in addition to its numerical ID.
460

    
461
Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
462
a VM snapshot. @code{info snapshots} lists the available snapshots
463
with their associated information:
464

    
465
@example
466
(qemu) info snapshots
467
Snapshot devices: hda
468
Snapshot list (from hda):
469
ID        TAG                 VM SIZE                DATE       VM CLOCK
470
1         start                   41M 2006-08-06 12:38:02   00:00:14.954
471
2                                 40M 2006-08-06 12:43:29   00:00:18.633
472
3         msys                    40M 2006-08-06 12:44:04   00:00:23.514
473
@end example
474

    
475
A VM snapshot is made of a VM state info (its size is shown in
476
@code{info snapshots}) and a snapshot of every writable disk image.
477
The VM state info is stored in the first @code{qcow2} non removable
478
and writable block device. The disk image snapshots are stored in
479
every disk image. The size of a snapshot in a disk image is difficult
480
to evaluate and is not shown by @code{info snapshots} because the
481
associated disk sectors are shared among all the snapshots to save
482
disk space (otherwise each snapshot would need a full copy of all the
483
disk images).
484

    
485
When using the (unrelated) @code{-snapshot} option
486
(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
487
but they are deleted as soon as you exit QEMU.
488

    
489
VM snapshots currently have the following known limitations:
490
@itemize
491
@item
492
They cannot cope with removable devices if they are removed or
493
inserted after a snapshot is done.
494
@item
495
A few device drivers still have incomplete snapshot support so their
496
state is not saved or restored properly (in particular USB).
497
@end itemize
498

    
499
@node qemu_img_invocation
500
@subsection @code{qemu-img} Invocation
501

    
502
@include qemu-img.texi
503

    
504
@node qemu_nbd_invocation
505
@subsection @code{qemu-nbd} Invocation
506

    
507
@include qemu-nbd.texi
508

    
509
@node host_drives
510
@subsection Using host drives
511

    
512
In addition to disk image files, QEMU can directly access host
513
devices. We describe here the usage for QEMU version >= 0.8.3.
514

    
515
@subsubsection Linux
516

    
517
On Linux, you can directly use the host device filename instead of a
518
disk image filename provided you have enough privileges to access
519
it. For example, use @file{/dev/cdrom} to access to the CDROM or
520
@file{/dev/fd0} for the floppy.
521

    
522
@table @code
523
@item CD
524
You can specify a CDROM device even if no CDROM is loaded. QEMU has
525
specific code to detect CDROM insertion or removal. CDROM ejection by
526
the guest OS is supported. Currently only data CDs are supported.
527
@item Floppy
528
You can specify a floppy device even if no floppy is loaded. Floppy
529
removal is currently not detected accurately (if you change floppy
530
without doing floppy access while the floppy is not loaded, the guest
531
OS will think that the same floppy is loaded).
532
@item Hard disks
533
Hard disks can be used. Normally you must specify the whole disk
534
(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
535
see it as a partitioned disk. WARNING: unless you know what you do, it
536
is better to only make READ-ONLY accesses to the hard disk otherwise
537
you may corrupt your host data (use the @option{-snapshot} command
538
line option or modify the device permissions accordingly).
539
@end table
540

    
541
@subsubsection Windows
542

    
543
@table @code
544
@item CD
545
The preferred syntax is the drive letter (e.g. @file{d:}). The
546
alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
547
supported as an alias to the first CDROM drive.
548

    
549
Currently there is no specific code to handle removable media, so it
550
is better to use the @code{change} or @code{eject} monitor commands to
551
change or eject media.
552
@item Hard disks
553
Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
554
where @var{N} is the drive number (0 is the first hard disk).
555

    
556
WARNING: unless you know what you do, it is better to only make
557
READ-ONLY accesses to the hard disk otherwise you may corrupt your
558
host data (use the @option{-snapshot} command line so that the
559
modifications are written in a temporary file).
560
@end table
561

    
562

    
563
@subsubsection Mac OS X
564

    
565
@file{/dev/cdrom} is an alias to the first CDROM.
566

    
567
Currently there is no specific code to handle removable media, so it
568
is better to use the @code{change} or @code{eject} monitor commands to
569
change or eject media.
570

    
571
@node disk_images_fat_images
572
@subsection Virtual FAT disk images
573

    
574
QEMU can automatically create a virtual FAT disk image from a
575
directory tree. In order to use it, just type:
576

    
577
@example
578
qemu linux.img -hdb fat:/my_directory
579
@end example
580

    
581
Then you access access to all the files in the @file{/my_directory}
582
directory without having to copy them in a disk image or to export
583
them via SAMBA or NFS. The default access is @emph{read-only}.
584

    
585
Floppies can be emulated with the @code{:floppy:} option:
586

    
587
@example
588
qemu linux.img -fda fat:floppy:/my_directory
589
@end example
590

    
591
A read/write support is available for testing (beta stage) with the
592
@code{:rw:} option:
593

    
594
@example
595
qemu linux.img -fda fat:floppy:rw:/my_directory
596
@end example
597

    
598
What you should @emph{never} do:
599
@itemize
600
@item use non-ASCII filenames ;
601
@item use "-snapshot" together with ":rw:" ;
602
@item expect it to work when loadvm'ing ;
603
@item write to the FAT directory on the host system while accessing it with the guest system.
604
@end itemize
605

    
606
@node disk_images_nbd
607
@subsection NBD access
608

    
609
QEMU can access directly to block device exported using the Network Block Device
610
protocol.
611

    
612
@example
613
qemu linux.img -hdb nbd:my_nbd_server.mydomain.org:1024
614
@end example
615

    
616
If the NBD server is located on the same host, you can use an unix socket instead
617
of an inet socket:
618

    
619
@example
620
qemu linux.img -hdb nbd:unix:/tmp/my_socket
621
@end example
622

    
623
In this case, the block device must be exported using qemu-nbd:
624

    
625
@example
626
qemu-nbd --socket=/tmp/my_socket my_disk.qcow2
627
@end example
628

    
629
The use of qemu-nbd allows to share a disk between several guests:
630
@example
631
qemu-nbd --socket=/tmp/my_socket --share=2 my_disk.qcow2
632
@end example
633

    
634
and then you can use it with two guests:
635
@example
636
qemu linux1.img -hdb nbd:unix:/tmp/my_socket
637
qemu linux2.img -hdb nbd:unix:/tmp/my_socket
638
@end example
639

    
640
If the nbd-server uses named exports (since NBD 2.9.18), you must use the
641
"exportname" option:
642
@example
643
qemu -cdrom nbd:localhost:exportname=debian-500-ppc-netinst
644
qemu -cdrom nbd:localhost:exportname=openSUSE-11.1-ppc-netinst
645
@end example
646

    
647
@node disk_images_sheepdog
648
@subsection Sheepdog disk images
649

    
650
Sheepdog is a distributed storage system for QEMU.  It provides highly
651
available block level storage volumes that can be attached to
652
QEMU-based virtual machines.
653

    
654
You can create a Sheepdog disk image with the command:
655
@example
656
qemu-img create sheepdog:@var{image} @var{size}
657
@end example
658
where @var{image} is the Sheepdog image name and @var{size} is its
659
size.
660

    
661
To import the existing @var{filename} to Sheepdog, you can use a
662
convert command.
663
@example
664
qemu-img convert @var{filename} sheepdog:@var{image}
665
@end example
666

    
667
You can boot from the Sheepdog disk image with the command:
668
@example
669
qemu sheepdog:@var{image}
670
@end example
671

    
672
You can also create a snapshot of the Sheepdog image like qcow2.
673
@example
674
qemu-img snapshot -c @var{tag} sheepdog:@var{image}
675
@end example
676
where @var{tag} is a tag name of the newly created snapshot.
677

    
678
To boot from the Sheepdog snapshot, specify the tag name of the
679
snapshot.
680
@example
681
qemu sheepdog:@var{image}:@var{tag}
682
@end example
683

    
684
You can create a cloned image from the existing snapshot.
685
@example
686
qemu-img create -b sheepdog:@var{base}:@var{tag} sheepdog:@var{image}
687
@end example
688
where @var{base} is a image name of the source snapshot and @var{tag}
689
is its tag name.
690

    
691
If the Sheepdog daemon doesn't run on the local host, you need to
692
specify one of the Sheepdog servers to connect to.
693
@example
694
qemu-img create sheepdog:@var{hostname}:@var{port}:@var{image} @var{size}
695
qemu sheepdog:@var{hostname}:@var{port}:@var{image}
696
@end example
697

    
698
@node disk_images_iscsi
699
@subsection iSCSI LUNs
700

    
701
iSCSI is a popular protocol used to access SCSI devices across a computer
702
network.
703

    
704
There are two different ways iSCSI devices can be used by QEMU.
705

    
706
The first method is to mount the iSCSI LUN on the host, and make it appear as
707
any other ordinary SCSI device on the host and then to access this device as a
708
/dev/sd device from QEMU. How to do this differs between host OSes.
709

    
710
The second method involves using the iSCSI initiator that is built into
711
QEMU. This provides a mechanism that works the same way regardless of which
712
host OS you are running QEMU on. This section will describe this second method
713
of using iSCSI together with QEMU.
714

    
715
In QEMU, iSCSI devices are described using special iSCSI URLs
716

    
717
@example
718
URL syntax:
719
iscsi://[<username>[%<password>]@@]<host>[:<port>]/<target-iqn-name>/<lun>
720
@end example
721

    
722
Username and password are optional and only used if your target is set up
723
using CHAP authentication for access control.
724
Alternatively the username and password can also be set via environment
725
variables to have these not show up in the process list
726

    
727
@example
728
export LIBISCSI_CHAP_USERNAME=<username>
729
export LIBISCSI_CHAP_PASSWORD=<password>
730
iscsi://<host>/<target-iqn-name>/<lun>
731
@end example
732

    
733
Various session related parameters can be set via special options, either
734
in a configuration file provided via '-readconfig' or directly on the
735
command line.
736

    
737
@example
738
Setting a specific initiator name to use when logging in to the target
739
-iscsi initiator-name=iqn.qemu.test:my-initiator
740
@end example
741

    
742
@example
743
Controlling which type of header digest to negotiate with the target
744
-iscsi header-digest=CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
745
@end example
746

    
747
These can also be set via a configuration file
748
@example
749
[iscsi]
750
  user = "CHAP username"
751
  password = "CHAP password"
752
  initiator-name = "iqn.qemu.test:my-initiator"
753
  # header digest is one of CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
754
  header-digest = "CRC32C"
755
@end example
756

    
757

    
758
Setting the target name allows different options for different targets
759
@example
760
[iscsi "iqn.target.name"]
761
  user = "CHAP username"
762
  password = "CHAP password"
763
  initiator-name = "iqn.qemu.test:my-initiator"
764
  # header digest is one of CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
765
  header-digest = "CRC32C"
766
@end example
767

    
768

    
769
Howto use a configuration file to set iSCSI configuration options:
770
@example
771
cat >iscsi.conf <<EOF
772
[iscsi]
773
  user = "me"
774
  password = "my password"
775
  initiator-name = "iqn.qemu.test:my-initiator"
776
  header-digest = "CRC32C"
777
EOF
778

    
779
qemu-system-i386 -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
780
    -readconfig iscsi.conf
781
@end example
782

    
783

    
784
Howto set up a simple iSCSI target on loopback and accessing it via QEMU:
785
@example
786
This example shows how to set up an iSCSI target with one CDROM and one DISK
787
using the Linux STGT software target. This target is available on Red Hat based
788
systems as the package 'scsi-target-utils'.
789

    
790
tgtd --iscsi portal=127.0.0.1:3260
791
tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.qemu.test
792
tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 \
793
    -b /IMAGES/disk.img --device-type=disk
794
tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 2 \
795
    -b /IMAGES/cd.iso --device-type=cd
796
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
797

    
798
qemu-system-i386 -iscsi initiator-name=iqn.qemu.test:my-initiator \
799
    -boot d -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
800
    -cdrom iscsi://127.0.0.1/iqn.qemu.test/2
801
@end example
802

    
803

    
804

    
805
@node pcsys_network
806
@section Network emulation
807

    
808
QEMU can simulate several network cards (PCI or ISA cards on the PC
809
target) and can connect them to an arbitrary number of Virtual Local
810
Area Networks (VLANs). Host TAP devices can be connected to any QEMU
811
VLAN. VLAN can be connected between separate instances of QEMU to
812
simulate large networks. For simpler usage, a non privileged user mode
813
network stack can replace the TAP device to have a basic network
814
connection.
815

    
816
@subsection VLANs
817

    
818
QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
819
connection between several network devices. These devices can be for
820
example QEMU virtual Ethernet cards or virtual Host ethernet devices
821
(TAP devices).
822

    
823
@subsection Using TAP network interfaces
824

    
825
This is the standard way to connect QEMU to a real network. QEMU adds
826
a virtual network device on your host (called @code{tapN}), and you
827
can then configure it as if it was a real ethernet card.
828

    
829
@subsubsection Linux host
830

    
831
As an example, you can download the @file{linux-test-xxx.tar.gz}
832
archive and copy the script @file{qemu-ifup} in @file{/etc} and
833
configure properly @code{sudo} so that the command @code{ifconfig}
834
contained in @file{qemu-ifup} can be executed as root. You must verify
835
that your host kernel supports the TAP network interfaces: the
836
device @file{/dev/net/tun} must be present.
837

    
838
See @ref{sec_invocation} to have examples of command lines using the
839
TAP network interfaces.
840

    
841
@subsubsection Windows host
842

    
843
There is a virtual ethernet driver for Windows 2000/XP systems, called
844
TAP-Win32. But it is not included in standard QEMU for Windows,
845
so you will need to get it separately. It is part of OpenVPN package,
846
so download OpenVPN from : @url{http://openvpn.net/}.
847

    
848
@subsection Using the user mode network stack
849

    
850
By using the option @option{-net user} (default configuration if no
851
@option{-net} option is specified), QEMU uses a completely user mode
852
network stack (you don't need root privilege to use the virtual
853
network). The virtual network configuration is the following:
854

    
855
@example
856

    
857
         QEMU VLAN      <------>  Firewall/DHCP server <-----> Internet
858
                           |          (10.0.2.2)
859
                           |
860
                           ---->  DNS server (10.0.2.3)
861
                           |
862
                           ---->  SMB server (10.0.2.4)
863
@end example
864

    
865
The QEMU VM behaves as if it was behind a firewall which blocks all
866
incoming connections. You can use a DHCP client to automatically
867
configure the network in the QEMU VM. The DHCP server assign addresses
868
to the hosts starting from 10.0.2.15.
869

    
870
In order to check that the user mode network is working, you can ping
871
the address 10.0.2.2 and verify that you got an address in the range
872
10.0.2.x from the QEMU virtual DHCP server.
873

    
874
Note that @code{ping} is not supported reliably to the internet as it
875
would require root privileges. It means you can only ping the local
876
router (10.0.2.2).
877

    
878
When using the built-in TFTP server, the router is also the TFTP
879
server.
880

    
881
When using the @option{-redir} option, TCP or UDP connections can be
882
redirected from the host to the guest. It allows for example to
883
redirect X11, telnet or SSH connections.
884

    
885
@subsection Connecting VLANs between QEMU instances
886

    
887
Using the @option{-net socket} option, it is possible to make VLANs
888
that span several QEMU instances. See @ref{sec_invocation} to have a
889
basic example.
890

    
891
@node pcsys_other_devs
892
@section Other Devices
893

    
894
@subsection Inter-VM Shared Memory device
895

    
896
With KVM enabled on a Linux host, a shared memory device is available.  Guests
897
map a POSIX shared memory region into the guest as a PCI device that enables
898
zero-copy communication to the application level of the guests.  The basic
899
syntax is:
900

    
901
@example
902
qemu -device ivshmem,size=<size in format accepted by -m>[,shm=<shm name>]
903
@end example
904

    
905
If desired, interrupts can be sent between guest VMs accessing the same shared
906
memory region.  Interrupt support requires using a shared memory server and
907
using a chardev socket to connect to it.  The code for the shared memory server
908
is qemu.git/contrib/ivshmem-server.  An example syntax when using the shared
909
memory server is:
910

    
911
@example
912
qemu -device ivshmem,size=<size in format accepted by -m>[,chardev=<id>]
913
                        [,msi=on][,ioeventfd=on][,vectors=n][,role=peer|master]
914
qemu -chardev socket,path=<path>,id=<id>
915
@end example
916

    
917
When using the server, the guest will be assigned a VM ID (>=0) that allows guests
918
using the same server to communicate via interrupts.  Guests can read their
919
VM ID from a device register (see example code).  Since receiving the shared
920
memory region from the server is asynchronous, there is a (small) chance the
921
guest may boot before the shared memory is attached.  To allow an application
922
to ensure shared memory is attached, the VM ID register will return -1 (an
923
invalid VM ID) until the memory is attached.  Once the shared memory is
924
attached, the VM ID will return the guest's valid VM ID.  With these semantics,
925
the guest application can check to ensure the shared memory is attached to the
926
guest before proceeding.
927

    
928
The @option{role} argument can be set to either master or peer and will affect
929
how the shared memory is migrated.  With @option{role=master}, the guest will
930
copy the shared memory on migration to the destination host.  With
931
@option{role=peer}, the guest will not be able to migrate with the device attached.
932
With the @option{peer} case, the device should be detached and then reattached
933
after migration using the PCI hotplug support.
934

    
935
@node direct_linux_boot
936
@section Direct Linux Boot
937

    
938
This section explains how to launch a Linux kernel inside QEMU without
939
having to make a full bootable image. It is very useful for fast Linux
940
kernel testing.
941

    
942
The syntax is:
943
@example
944
qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
945
@end example
946

    
947
Use @option{-kernel} to provide the Linux kernel image and
948
@option{-append} to give the kernel command line arguments. The
949
@option{-initrd} option can be used to provide an INITRD image.
950

    
951
When using the direct Linux boot, a disk image for the first hard disk
952
@file{hda} is required because its boot sector is used to launch the
953
Linux kernel.
954

    
955
If you do not need graphical output, you can disable it and redirect
956
the virtual serial port and the QEMU monitor to the console with the
957
@option{-nographic} option. The typical command line is:
958
@example
959
qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
960
     -append "root=/dev/hda console=ttyS0" -nographic
961
@end example
962

    
963
Use @key{Ctrl-a c} to switch between the serial console and the
964
monitor (@pxref{pcsys_keys}).
965

    
966
@node pcsys_usb
967
@section USB emulation
968

    
969
QEMU emulates a PCI UHCI USB controller. You can virtually plug
970
virtual USB devices or real host USB devices (experimental, works only
971
on Linux hosts).  Qemu will automatically create and connect virtual USB hubs
972
as necessary to connect multiple USB devices.
973

    
974
@menu
975
* usb_devices::
976
* host_usb_devices::
977
@end menu
978
@node usb_devices
979
@subsection Connecting USB devices
980

    
981
USB devices can be connected with the @option{-usbdevice} commandline option
982
or the @code{usb_add} monitor command.  Available devices are:
983

    
984
@table @code
985
@item mouse
986
Virtual Mouse.  This will override the PS/2 mouse emulation when activated.
987
@item tablet
988
Pointer device that uses absolute coordinates (like a touchscreen).
989
This means qemu is able to report the mouse position without having
990
to grab the mouse.  Also overrides the PS/2 mouse emulation when activated.
991
@item disk:@var{file}
992
Mass storage device based on @var{file} (@pxref{disk_images})
993
@item host:@var{bus.addr}
994
Pass through the host device identified by @var{bus.addr}
995
(Linux only)
996
@item host:@var{vendor_id:product_id}
997
Pass through the host device identified by @var{vendor_id:product_id}
998
(Linux only)
999
@item wacom-tablet
1000
Virtual Wacom PenPartner tablet.  This device is similar to the @code{tablet}
1001
above but it can be used with the tslib library because in addition to touch
1002
coordinates it reports touch pressure.
1003
@item keyboard
1004
Standard USB keyboard.  Will override the PS/2 keyboard (if present).
1005
@item serial:[vendorid=@var{vendor_id}][,product_id=@var{product_id}]:@var{dev}
1006
Serial converter. This emulates an FTDI FT232BM chip connected to host character
1007
device @var{dev}. The available character devices are the same as for the
1008
@code{-serial} option. The @code{vendorid} and @code{productid} options can be
1009
used to override the default 0403:6001. For instance,
1010
@example
1011
usb_add serial:productid=FA00:tcp:192.168.0.2:4444
1012
@end example
1013
will connect to tcp port 4444 of ip 192.168.0.2, and plug that to the virtual
1014
serial converter, faking a Matrix Orbital LCD Display (USB ID 0403:FA00).
1015
@item braille
1016
Braille device.  This will use BrlAPI to display the braille output on a real
1017
or fake device.
1018
@item net:@var{options}
1019
Network adapter that supports CDC ethernet and RNDIS protocols.  @var{options}
1020
specifies NIC options as with @code{-net nic,}@var{options} (see description).
1021
For instance, user-mode networking can be used with
1022
@example
1023
qemu [...OPTIONS...] -net user,vlan=0 -usbdevice net:vlan=0
1024
@end example
1025
Currently this cannot be used in machines that support PCI NICs.
1026
@item bt[:@var{hci-type}]
1027
Bluetooth dongle whose type is specified in the same format as with
1028
the @option{-bt hci} option, @pxref{bt-hcis,,allowed HCI types}.  If
1029
no type is given, the HCI logic corresponds to @code{-bt hci,vlan=0}.
1030
This USB device implements the USB Transport Layer of HCI.  Example
1031
usage:
1032
@example
1033
qemu [...OPTIONS...] -usbdevice bt:hci,vlan=3 -bt device:keyboard,vlan=3
1034
@end example
1035
@end table
1036

    
1037
@node host_usb_devices
1038
@subsection Using host USB devices on a Linux host
1039

    
1040
WARNING: this is an experimental feature. QEMU will slow down when
1041
using it. USB devices requiring real time streaming (i.e. USB Video
1042
Cameras) are not supported yet.
1043

    
1044
@enumerate
1045
@item If you use an early Linux 2.4 kernel, verify that no Linux driver
1046
is actually using the USB device. A simple way to do that is simply to
1047
disable the corresponding kernel module by renaming it from @file{mydriver.o}
1048
to @file{mydriver.o.disabled}.
1049

    
1050
@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1051
@example
1052
ls /proc/bus/usb
1053
001  devices  drivers
1054
@end example
1055

    
1056
@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:
1057
@example
1058
chown -R myuid /proc/bus/usb
1059
@end example
1060

    
1061
@item Launch QEMU and do in the monitor:
1062
@example
1063
info usbhost
1064
  Device 1.2, speed 480 Mb/s
1065
    Class 00: USB device 1234:5678, USB DISK
1066
@end example
1067
You should see the list of the devices you can use (Never try to use
1068
hubs, it won't work).
1069

    
1070
@item Add the device in QEMU by using:
1071
@example
1072
usb_add host:1234:5678
1073
@end example
1074

    
1075
Normally the guest OS should report that a new USB device is
1076
plugged. You can use the option @option{-usbdevice} to do the same.
1077

    
1078
@item Now you can try to use the host USB device in QEMU.
1079

    
1080
@end enumerate
1081

    
1082
When relaunching QEMU, you may have to unplug and plug again the USB
1083
device to make it work again (this is a bug).
1084

    
1085
@node vnc_security
1086
@section VNC security
1087

    
1088
The VNC server capability provides access to the graphical console
1089
of the guest VM across the network. This has a number of security
1090
considerations depending on the deployment scenarios.
1091

    
1092
@menu
1093
* vnc_sec_none::
1094
* vnc_sec_password::
1095
* vnc_sec_certificate::
1096
* vnc_sec_certificate_verify::
1097
* vnc_sec_certificate_pw::
1098
* vnc_sec_sasl::
1099
* vnc_sec_certificate_sasl::
1100
* vnc_generate_cert::
1101
* vnc_setup_sasl::
1102
@end menu
1103
@node vnc_sec_none
1104
@subsection Without passwords
1105

    
1106
The simplest VNC server setup does not include any form of authentication.
1107
For this setup it is recommended to restrict it to listen on a UNIX domain
1108
socket only. For example
1109

    
1110
@example
1111
qemu [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
1112
@end example
1113

    
1114
This ensures that only users on local box with read/write access to that
1115
path can access the VNC server. To securely access the VNC server from a
1116
remote machine, a combination of netcat+ssh can be used to provide a secure
1117
tunnel.
1118

    
1119
@node vnc_sec_password
1120
@subsection With passwords
1121

    
1122
The VNC protocol has limited support for password based authentication. Since
1123
the protocol limits passwords to 8 characters it should not be considered
1124
to provide high security. The password can be fairly easily brute-forced by
1125
a client making repeat connections. For this reason, a VNC server using password
1126
authentication should be restricted to only listen on the loopback interface
1127
or UNIX domain sockets. Password authentication is requested with the @code{password}
1128
option, and then once QEMU is running the password is set with the monitor. Until
1129
the monitor is used to set the password all clients will be rejected.
1130

    
1131
@example
1132
qemu [...OPTIONS...] -vnc :1,password -monitor stdio
1133
(qemu) change vnc password
1134
Password: ********
1135
(qemu)
1136
@end example
1137

    
1138
@node vnc_sec_certificate
1139
@subsection With x509 certificates
1140

    
1141
The QEMU VNC server also implements the VeNCrypt extension allowing use of
1142
TLS for encryption of the session, and x509 certificates for authentication.
1143
The use of x509 certificates is strongly recommended, because TLS on its
1144
own is susceptible to man-in-the-middle attacks. Basic x509 certificate
1145
support provides a secure session, but no authentication. This allows any
1146
client to connect, and provides an encrypted session.
1147

    
1148
@example
1149
qemu [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
1150
@end example
1151

    
1152
In the above example @code{/etc/pki/qemu} should contain at least three files,
1153
@code{ca-cert.pem}, @code{server-cert.pem} and @code{server-key.pem}. Unprivileged
1154
users will want to use a private directory, for example @code{$HOME/.pki/qemu}.
1155
NB the @code{server-key.pem} file should be protected with file mode 0600 to
1156
only be readable by the user owning it.
1157

    
1158
@node vnc_sec_certificate_verify
1159
@subsection With x509 certificates and client verification
1160

    
1161
Certificates can also provide a means to authenticate the client connecting.
1162
The server will request that the client provide a certificate, which it will
1163
then validate against the CA certificate. This is a good choice if deploying
1164
in an environment with a private internal certificate authority.
1165

    
1166
@example
1167
qemu [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
1168
@end example
1169

    
1170

    
1171
@node vnc_sec_certificate_pw
1172
@subsection With x509 certificates, client verification and passwords
1173

    
1174
Finally, the previous method can be combined with VNC password authentication
1175
to provide two layers of authentication for clients.
1176

    
1177
@example
1178
qemu [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
1179
(qemu) change vnc password
1180
Password: ********
1181
(qemu)
1182
@end example
1183

    
1184

    
1185
@node vnc_sec_sasl
1186
@subsection With SASL authentication
1187

    
1188
The SASL authentication method is a VNC extension, that provides an
1189
easily extendable, pluggable authentication method. This allows for
1190
integration with a wide range of authentication mechanisms, such as
1191
PAM, GSSAPI/Kerberos, LDAP, SQL databases, one-time keys and more.
1192
The strength of the authentication depends on the exact mechanism
1193
configured. If the chosen mechanism also provides a SSF layer, then
1194
it will encrypt the datastream as well.
1195

    
1196
Refer to the later docs on how to choose the exact SASL mechanism
1197
used for authentication, but assuming use of one supporting SSF,
1198
then QEMU can be launched with:
1199

    
1200
@example
1201
qemu [...OPTIONS...] -vnc :1,sasl -monitor stdio
1202
@end example
1203

    
1204
@node vnc_sec_certificate_sasl
1205
@subsection With x509 certificates and SASL authentication
1206

    
1207
If the desired SASL authentication mechanism does not supported
1208
SSF layers, then it is strongly advised to run it in combination
1209
with TLS and x509 certificates. This provides securely encrypted
1210
data stream, avoiding risk of compromising of the security
1211
credentials. This can be enabled, by combining the 'sasl' option
1212
with the aforementioned TLS + x509 options:
1213

    
1214
@example
1215
qemu [...OPTIONS...] -vnc :1,tls,x509,sasl -monitor stdio
1216
@end example
1217

    
1218

    
1219
@node vnc_generate_cert
1220
@subsection Generating certificates for VNC
1221

    
1222
The GNU TLS packages provides a command called @code{certtool} which can
1223
be used to generate certificates and keys in PEM format. At a minimum it
1224
is necessary to setup a certificate authority, and issue certificates to
1225
each server. If using certificates for authentication, then each client
1226
will also need to be issued a certificate. The recommendation is for the
1227
server to keep its certificates in either @code{/etc/pki/qemu} or for
1228
unprivileged users in @code{$HOME/.pki/qemu}.
1229

    
1230
@menu
1231
* vnc_generate_ca::
1232
* vnc_generate_server::
1233
* vnc_generate_client::
1234
@end menu
1235
@node vnc_generate_ca
1236
@subsubsection Setup the Certificate Authority
1237

    
1238
This step only needs to be performed once per organization / organizational
1239
unit. First the CA needs a private key. This key must be kept VERY secret
1240
and secure. If this key is compromised the entire trust chain of the certificates
1241
issued with it is lost.
1242

    
1243
@example
1244
# certtool --generate-privkey > ca-key.pem
1245
@end example
1246

    
1247
A CA needs to have a public certificate. For simplicity it can be a self-signed
1248
certificate, or one issue by a commercial certificate issuing authority. To
1249
generate a self-signed certificate requires one core piece of information, the
1250
name of the organization.
1251

    
1252
@example
1253
# cat > ca.info <<EOF
1254
cn = Name of your organization
1255
ca
1256
cert_signing_key
1257
EOF
1258
# certtool --generate-self-signed \
1259
           --load-privkey ca-key.pem
1260
           --template ca.info \
1261
           --outfile ca-cert.pem
1262
@end example
1263

    
1264
The @code{ca-cert.pem} file should be copied to all servers and clients wishing to utilize
1265
TLS support in the VNC server. The @code{ca-key.pem} must not be disclosed/copied at all.
1266

    
1267
@node vnc_generate_server
1268
@subsubsection Issuing server certificates
1269

    
1270
Each server (or host) needs to be issued with a key and certificate. When connecting
1271
the certificate is sent to the client which validates it against the CA certificate.
1272
The core piece of information for a server certificate is the hostname. This should
1273
be the fully qualified hostname that the client will connect with, since the client
1274
will typically also verify the hostname in the certificate. On the host holding the
1275
secure CA private key:
1276

    
1277
@example
1278
# cat > server.info <<EOF
1279
organization = Name  of your organization
1280
cn = server.foo.example.com
1281
tls_www_server
1282
encryption_key
1283
signing_key
1284
EOF
1285
# certtool --generate-privkey > server-key.pem
1286
# certtool --generate-certificate \
1287
           --load-ca-certificate ca-cert.pem \
1288
           --load-ca-privkey ca-key.pem \
1289
           --load-privkey server server-key.pem \
1290
           --template server.info \
1291
           --outfile server-cert.pem
1292
@end example
1293

    
1294
The @code{server-key.pem} and @code{server-cert.pem} files should now be securely copied
1295
to the server for which they were generated. The @code{server-key.pem} is security
1296
sensitive and should be kept protected with file mode 0600 to prevent disclosure.
1297

    
1298
@node vnc_generate_client
1299
@subsubsection Issuing client certificates
1300

    
1301
If the QEMU VNC server is to use the @code{x509verify} option to validate client
1302
certificates as its authentication mechanism, each client also needs to be issued
1303
a certificate. The client certificate contains enough metadata to uniquely identify
1304
the client, typically organization, state, city, building, etc. On the host holding
1305
the secure CA private key:
1306

    
1307
@example
1308
# cat > client.info <<EOF
1309
country = GB
1310
state = London
1311
locality = London
1312
organiazation = Name of your organization
1313
cn = client.foo.example.com
1314
tls_www_client
1315
encryption_key
1316
signing_key
1317
EOF
1318
# certtool --generate-privkey > client-key.pem
1319
# certtool --generate-certificate \
1320
           --load-ca-certificate ca-cert.pem \
1321
           --load-ca-privkey ca-key.pem \
1322
           --load-privkey client-key.pem \
1323
           --template client.info \
1324
           --outfile client-cert.pem
1325
@end example
1326

    
1327
The @code{client-key.pem} and @code{client-cert.pem} files should now be securely
1328
copied to the client for which they were generated.
1329

    
1330

    
1331
@node vnc_setup_sasl
1332

    
1333
@subsection Configuring SASL mechanisms
1334

    
1335
The following documentation assumes use of the Cyrus SASL implementation on a
1336
Linux host, but the principals should apply to any other SASL impl. When SASL
1337
is enabled, the mechanism configuration will be loaded from system default
1338
SASL service config /etc/sasl2/qemu.conf. If running QEMU as an
1339
unprivileged user, an environment variable SASL_CONF_PATH can be used
1340
to make it search alternate locations for the service config.
1341

    
1342
The default configuration might contain
1343

    
1344
@example
1345
mech_list: digest-md5
1346
sasldb_path: /etc/qemu/passwd.db
1347
@end example
1348

    
1349
This says to use the 'Digest MD5' mechanism, which is similar to the HTTP
1350
Digest-MD5 mechanism. The list of valid usernames & passwords is maintained
1351
in the /etc/qemu/passwd.db file, and can be updated using the saslpasswd2
1352
command. While this mechanism is easy to configure and use, it is not
1353
considered secure by modern standards, so only suitable for developers /
1354
ad-hoc testing.
1355

    
1356
A more serious deployment might use Kerberos, which is done with the 'gssapi'
1357
mechanism
1358

    
1359
@example
1360
mech_list: gssapi
1361
keytab: /etc/qemu/krb5.tab
1362
@end example
1363

    
1364
For this to work the administrator of your KDC must generate a Kerberos
1365
principal for the server, with a name of  'qemu/somehost.example.com@@EXAMPLE.COM'
1366
replacing 'somehost.example.com' with the fully qualified host name of the
1367
machine running QEMU, and 'EXAMPLE.COM' with the Kerberos Realm.
1368

    
1369
Other configurations will be left as an exercise for the reader. It should
1370
be noted that only Digest-MD5 and GSSAPI provides a SSF layer for data
1371
encryption. For all other mechanisms, VNC should always be configured to
1372
use TLS and x509 certificates to protect security credentials from snooping.
1373

    
1374
@node gdb_usage
1375
@section GDB usage
1376

    
1377
QEMU has a primitive support to work with gdb, so that you can do
1378
'Ctrl-C' while the virtual machine is running and inspect its state.
1379

    
1380
In order to use gdb, launch qemu with the '-s' option. It will wait for a
1381
gdb connection:
1382
@example
1383
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1384
       -append "root=/dev/hda"
1385
Connected to host network interface: tun0
1386
Waiting gdb connection on port 1234
1387
@end example
1388

    
1389
Then launch gdb on the 'vmlinux' executable:
1390
@example
1391
> gdb vmlinux
1392
@end example
1393

    
1394
In gdb, connect to QEMU:
1395
@example
1396
(gdb) target remote localhost:1234
1397
@end example
1398

    
1399
Then you can use gdb normally. For example, type 'c' to launch the kernel:
1400
@example
1401
(gdb) c
1402
@end example
1403

    
1404
Here are some useful tips in order to use gdb on system code:
1405

    
1406
@enumerate
1407
@item
1408
Use @code{info reg} to display all the CPU registers.
1409
@item
1410
Use @code{x/10i $eip} to display the code at the PC position.
1411
@item
1412
Use @code{set architecture i8086} to dump 16 bit code. Then use
1413
@code{x/10i $cs*16+$eip} to dump the code at the PC position.
1414
@end enumerate
1415

    
1416
Advanced debugging options:
1417

    
1418
The 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:
1419
@table @code
1420
@item maintenance packet qqemu.sstepbits
1421

    
1422
This will display the MASK bits used to control the single stepping IE:
1423
@example
1424
(gdb) maintenance packet qqemu.sstepbits
1425
sending: "qqemu.sstepbits"
1426
received: "ENABLE=1,NOIRQ=2,NOTIMER=4"
1427
@end example
1428
@item maintenance packet qqemu.sstep
1429

    
1430
This will display the current value of the mask used when single stepping IE:
1431
@example
1432
(gdb) maintenance packet qqemu.sstep
1433
sending: "qqemu.sstep"
1434
received: "0x7"
1435
@end example
1436
@item maintenance packet Qqemu.sstep=HEX_VALUE
1437

    
1438
This will change the single step mask, so if wanted to enable IRQs on the single step, but not timers, you would use:
1439
@example
1440
(gdb) maintenance packet Qqemu.sstep=0x5
1441
sending: "qemu.sstep=0x5"
1442
received: "OK"
1443
@end example
1444
@end table
1445

    
1446
@node pcsys_os_specific
1447
@section Target OS specific information
1448

    
1449
@subsection Linux
1450

    
1451
To have access to SVGA graphic modes under X11, use the @code{vesa} or
1452
the @code{cirrus} X11 driver. For optimal performances, use 16 bit
1453
color depth in the guest and the host OS.
1454

    
1455
When using a 2.6 guest Linux kernel, you should add the option
1456
@code{clock=pit} on the kernel command line because the 2.6 Linux
1457
kernels make very strict real time clock checks by default that QEMU
1458
cannot simulate exactly.
1459

    
1460
When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1461
not activated because QEMU is slower with this patch. The QEMU
1462
Accelerator Module is also much slower in this case. Earlier Fedora
1463
Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporate this
1464
patch by default. Newer kernels don't have it.
1465

    
1466
@subsection Windows
1467

    
1468
If you have a slow host, using Windows 95 is better as it gives the
1469
best speed. Windows 2000 is also a good choice.
1470

    
1471
@subsubsection SVGA graphic modes support
1472

    
1473
QEMU emulates a Cirrus Logic GD5446 Video
1474
card. All Windows versions starting from Windows 95 should recognize
1475
and use this graphic card. For optimal performances, use 16 bit color
1476
depth in the guest and the host OS.
1477

    
1478
If you are using Windows XP as guest OS and if you want to use high
1479
resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
1480
1280x1024x16), then you should use the VESA VBE virtual graphic card
1481
(option @option{-std-vga}).
1482

    
1483
@subsubsection CPU usage reduction
1484

    
1485
Windows 9x does not correctly use the CPU HLT
1486
instruction. The result is that it takes host CPU cycles even when
1487
idle. You can install the utility from
1488
@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
1489
problem. Note that no such tool is needed for NT, 2000 or XP.
1490

    
1491
@subsubsection Windows 2000 disk full problem
1492

    
1493
Windows 2000 has a bug which gives a disk full problem during its
1494
installation. When installing it, use the @option{-win2k-hack} QEMU
1495
option to enable a specific workaround. After Windows 2000 is
1496
installed, you no longer need this option (this option slows down the
1497
IDE transfers).
1498

    
1499
@subsubsection Windows 2000 shutdown
1500

    
1501
Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1502
can. It comes from the fact that Windows 2000 does not automatically
1503
use the APM driver provided by the BIOS.
1504

    
1505
In order to correct that, do the following (thanks to Struan
1506
Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
1507
Add/Troubleshoot a device => Add a new device & Next => No, select the
1508
hardware from a list & Next => NT Apm/Legacy Support & Next => Next
1509
(again) a few times. Now the driver is installed and Windows 2000 now
1510
correctly instructs QEMU to shutdown at the appropriate moment.
1511

    
1512
@subsubsection Share a directory between Unix and Windows
1513

    
1514
See @ref{sec_invocation} about the help of the option @option{-smb}.
1515

    
1516
@subsubsection Windows XP security problem
1517

    
1518
Some releases of Windows XP install correctly but give a security
1519
error when booting:
1520
@example
1521
A problem is preventing Windows from accurately checking the
1522
license for this computer. Error code: 0x800703e6.
1523
@end example
1524

    
1525
The workaround is to install a service pack for XP after a boot in safe
1526
mode. Then reboot, and the problem should go away. Since there is no
1527
network while in safe mode, its recommended to download the full
1528
installation of SP1 or SP2 and transfer that via an ISO or using the
1529
vvfat block device ("-hdb fat:directory_which_holds_the_SP").
1530

    
1531
@subsection MS-DOS and FreeDOS
1532

    
1533
@subsubsection CPU usage reduction
1534

    
1535
DOS does not correctly use the CPU HLT instruction. The result is that
1536
it takes host CPU cycles even when idle. You can install the utility
1537
from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
1538
problem.
1539

    
1540
@node QEMU System emulator for non PC targets
1541
@chapter QEMU System emulator for non PC targets
1542

    
1543
QEMU is a generic emulator and it emulates many non PC
1544
machines. Most of the options are similar to the PC emulator. The
1545
differences are mentioned in the following sections.
1546

    
1547
@menu
1548
* PowerPC System emulator::
1549
* Sparc32 System emulator::
1550
* Sparc64 System emulator::
1551
* MIPS System emulator::
1552
* ARM System emulator::
1553
* ColdFire System emulator::
1554
* Cris System emulator::
1555
* Microblaze System emulator::
1556
* SH4 System emulator::
1557
* Xtensa System emulator::
1558
@end menu
1559

    
1560
@node PowerPC System emulator
1561
@section PowerPC System emulator
1562
@cindex system emulation (PowerPC)
1563

    
1564
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1565
or PowerMac PowerPC system.
1566

    
1567
QEMU emulates the following PowerMac peripherals:
1568

    
1569
@itemize @minus
1570
@item
1571
UniNorth or Grackle PCI Bridge
1572
@item
1573
PCI VGA compatible card with VESA Bochs Extensions
1574
@item
1575
2 PMAC IDE interfaces with hard disk and CD-ROM support
1576
@item
1577
NE2000 PCI adapters
1578
@item
1579
Non Volatile RAM
1580
@item
1581
VIA-CUDA with ADB keyboard and mouse.
1582
@end itemize
1583

    
1584
QEMU emulates the following PREP peripherals:
1585

    
1586
@itemize @minus
1587
@item
1588
PCI Bridge
1589
@item
1590
PCI VGA compatible card with VESA Bochs Extensions
1591
@item
1592
2 IDE interfaces with hard disk and CD-ROM support
1593
@item
1594
Floppy disk
1595
@item
1596
NE2000 network adapters
1597
@item
1598
Serial port
1599
@item
1600
PREP Non Volatile RAM
1601
@item
1602
PC compatible keyboard and mouse.
1603
@end itemize
1604

    
1605
QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
1606
@url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
1607

    
1608
Since version 0.9.1, QEMU uses OpenBIOS @url{http://www.openbios.org/}
1609
for the g3beige and mac99 PowerMac machines. OpenBIOS is a free (GPL
1610
v2) portable firmware implementation. The goal is to implement a 100%
1611
IEEE 1275-1994 (referred to as Open Firmware) compliant firmware.
1612

    
1613
@c man begin OPTIONS
1614

    
1615
The following options are specific to the PowerPC emulation:
1616

    
1617
@table @option
1618

    
1619
@item -g @var{W}x@var{H}[x@var{DEPTH}]
1620

    
1621
Set the initial VGA graphic mode. The default is 800x600x15.
1622

    
1623
@item -prom-env @var{string}
1624

    
1625
Set OpenBIOS variables in NVRAM, for example:
1626

    
1627
@example
1628
qemu-system-ppc -prom-env 'auto-boot?=false' \
1629
 -prom-env 'boot-device=hd:2,\yaboot' \
1630
 -prom-env 'boot-args=conf=hd:2,\yaboot.conf'
1631
@end example
1632

    
1633
These variables are not used by Open Hack'Ware.
1634

    
1635
@end table
1636

    
1637
@c man end
1638

    
1639

    
1640
More information is available at
1641
@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
1642

    
1643
@node Sparc32 System emulator
1644
@section Sparc32 System emulator
1645
@cindex system emulation (Sparc32)
1646

    
1647
Use the executable @file{qemu-system-sparc} to simulate the following
1648
Sun4m architecture machines:
1649
@itemize @minus
1650
@item
1651
SPARCstation 4
1652
@item
1653
SPARCstation 5
1654
@item
1655
SPARCstation 10
1656
@item
1657
SPARCstation 20
1658
@item
1659
SPARCserver 600MP
1660
@item
1661
SPARCstation LX
1662
@item
1663
SPARCstation Voyager
1664
@item
1665
SPARCclassic
1666
@item
1667
SPARCbook
1668
@end itemize
1669

    
1670
The emulation is somewhat complete. SMP up to 16 CPUs is supported,
1671
but Linux limits the number of usable CPUs to 4.
1672

    
1673
It's also possible to simulate a SPARCstation 2 (sun4c architecture),
1674
SPARCserver 1000, or SPARCcenter 2000 (sun4d architecture), but these
1675
emulators are not usable yet.
1676

    
1677
QEMU emulates the following sun4m/sun4c/sun4d peripherals:
1678

    
1679
@itemize @minus
1680
@item
1681
IOMMU or IO-UNITs
1682
@item
1683
TCX Frame buffer
1684
@item
1685
Lance (Am7990) Ethernet
1686
@item
1687
Non Volatile RAM M48T02/M48T08
1688
@item
1689
Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1690
and power/reset logic
1691
@item
1692
ESP SCSI controller with hard disk and CD-ROM support
1693
@item
1694
Floppy drive (not on SS-600MP)
1695
@item
1696
CS4231 sound device (only on SS-5, not working yet)
1697
@end itemize
1698

    
1699
The number of peripherals is fixed in the architecture.  Maximum
1700
memory size depends on the machine type, for SS-5 it is 256MB and for
1701
others 2047MB.
1702

    
1703
Since version 0.8.2, QEMU uses OpenBIOS
1704
@url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
1705
firmware implementation. The goal is to implement a 100% IEEE
1706
1275-1994 (referred to as Open Firmware) compliant firmware.
1707

    
1708
A sample Linux 2.6 series kernel and ram disk image are available on
1709
the QEMU web site. There are still issues with NetBSD and OpenBSD, but
1710
some kernel versions work. Please note that currently Solaris kernels
1711
don't work probably due to interface issues between OpenBIOS and
1712
Solaris.
1713

    
1714
@c man begin OPTIONS
1715

    
1716
The following options are specific to the Sparc32 emulation:
1717

    
1718
@table @option
1719

    
1720
@item -g @var{W}x@var{H}x[x@var{DEPTH}]
1721

    
1722
Set the initial TCX graphic mode. The default is 1024x768x8, currently
1723
the only other possible mode is 1024x768x24.
1724

    
1725
@item -prom-env @var{string}
1726

    
1727
Set OpenBIOS variables in NVRAM, for example:
1728

    
1729
@example
1730
qemu-system-sparc -prom-env 'auto-boot?=false' \
1731
 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
1732
@end example
1733

    
1734
@item -M [SS-4|SS-5|SS-10|SS-20|SS-600MP|LX|Voyager|SPARCClassic] [|SPARCbook|SS-2|SS-1000|SS-2000]
1735

    
1736
Set the emulated machine type. Default is SS-5.
1737

    
1738
@end table
1739

    
1740
@c man end
1741

    
1742
@node Sparc64 System emulator
1743
@section Sparc64 System emulator
1744
@cindex system emulation (Sparc64)
1745

    
1746
Use the executable @file{qemu-system-sparc64} to simulate a Sun4u
1747
(UltraSPARC PC-like machine), Sun4v (T1 PC-like machine), or generic
1748
Niagara (T1) machine. The emulator is not usable for anything yet, but
1749
it can launch some kernels.
1750

    
1751
QEMU emulates the following peripherals:
1752

    
1753
@itemize @minus
1754
@item
1755
UltraSparc IIi APB PCI Bridge
1756
@item
1757
PCI VGA compatible card with VESA Bochs Extensions
1758
@item
1759
PS/2 mouse and keyboard
1760
@item
1761
Non Volatile RAM M48T59
1762
@item
1763
PC-compatible serial ports
1764
@item
1765
2 PCI IDE interfaces with hard disk and CD-ROM support
1766
@item
1767
Floppy disk
1768
@end itemize
1769

    
1770
@c man begin OPTIONS
1771

    
1772
The following options are specific to the Sparc64 emulation:
1773

    
1774
@table @option
1775

    
1776
@item -prom-env @var{string}
1777

    
1778
Set OpenBIOS variables in NVRAM, for example:
1779

    
1780
@example
1781
qemu-system-sparc64 -prom-env 'auto-boot?=false'
1782
@end example
1783

    
1784
@item -M [sun4u|sun4v|Niagara]
1785

    
1786
Set the emulated machine type. The default is sun4u.
1787

    
1788
@end table
1789

    
1790
@c man end
1791

    
1792
@node MIPS System emulator
1793
@section MIPS System emulator
1794
@cindex system emulation (MIPS)
1795

    
1796
Four executables cover simulation of 32 and 64-bit MIPS systems in
1797
both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
1798
@file{qemu-system-mips64} and @file{qemu-system-mips64el}.
1799
Five different machine types are emulated:
1800

    
1801
@itemize @minus
1802
@item
1803
A generic ISA PC-like machine "mips"
1804
@item
1805
The MIPS Malta prototype board "malta"
1806
@item
1807
An ACER Pica "pica61". This machine needs the 64-bit emulator.
1808
@item
1809
MIPS emulator pseudo board "mipssim"
1810
@item
1811
A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
1812
@end itemize
1813

    
1814
The generic emulation is supported by Debian 'Etch' and is able to
1815
install Debian into a virtual disk image. The following devices are
1816
emulated:
1817

    
1818
@itemize @minus
1819
@item
1820
A range of MIPS CPUs, default is the 24Kf
1821
@item
1822
PC style serial port
1823
@item
1824
PC style IDE disk
1825
@item
1826
NE2000 network card
1827
@end itemize
1828

    
1829
The Malta emulation supports the following devices:
1830

    
1831
@itemize @minus
1832
@item
1833
Core board with MIPS 24Kf CPU and Galileo system controller
1834
@item
1835
PIIX4 PCI/USB/SMbus controller
1836
@item
1837
The Multi-I/O chip's serial device
1838
@item
1839
PCI network cards (PCnet32 and others)
1840
@item
1841
Malta FPGA serial device
1842
@item
1843
Cirrus (default) or any other PCI VGA graphics card
1844
@end itemize
1845

    
1846
The ACER Pica emulation supports:
1847

    
1848
@itemize @minus
1849
@item
1850
MIPS R4000 CPU
1851
@item
1852
PC-style IRQ and DMA controllers
1853
@item
1854
PC Keyboard
1855
@item
1856
IDE controller
1857
@end itemize
1858

    
1859
The mipssim pseudo board emulation provides an environment similar
1860
to what the proprietary MIPS emulator uses for running Linux.
1861
It supports:
1862

    
1863
@itemize @minus
1864
@item
1865
A range of MIPS CPUs, default is the 24Kf
1866
@item
1867
PC style serial port
1868
@item
1869
MIPSnet network emulation
1870
@end itemize
1871

    
1872
The MIPS Magnum R4000 emulation supports:
1873

    
1874
@itemize @minus
1875
@item
1876
MIPS R4000 CPU
1877
@item
1878
PC-style IRQ controller
1879
@item
1880
PC Keyboard
1881
@item
1882
SCSI controller
1883
@item
1884
G364 framebuffer
1885
@end itemize
1886

    
1887

    
1888
@node ARM System emulator
1889
@section ARM System emulator
1890
@cindex system emulation (ARM)
1891

    
1892
Use the executable @file{qemu-system-arm} to simulate a ARM
1893
machine. The ARM Integrator/CP board is emulated with the following
1894
devices:
1895

    
1896
@itemize @minus
1897
@item
1898
ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
1899
@item
1900
Two PL011 UARTs
1901
@item
1902
SMC 91c111 Ethernet adapter
1903
@item
1904
PL110 LCD controller
1905
@item
1906
PL050 KMI with PS/2 keyboard and mouse.
1907
@item
1908
PL181 MultiMedia Card Interface with SD card.
1909
@end itemize
1910

    
1911
The ARM Versatile baseboard is emulated with the following devices:
1912

    
1913
@itemize @minus
1914
@item
1915
ARM926E, ARM1136 or Cortex-A8 CPU
1916
@item
1917
PL190 Vectored Interrupt Controller
1918
@item
1919
Four PL011 UARTs
1920
@item
1921
SMC 91c111 Ethernet adapter
1922
@item
1923
PL110 LCD controller
1924
@item
1925
PL050 KMI with PS/2 keyboard and mouse.
1926
@item
1927
PCI host bridge.  Note the emulated PCI bridge only provides access to
1928
PCI memory space.  It does not provide access to PCI IO space.
1929
This means some devices (eg. ne2k_pci NIC) are not usable, and others
1930
(eg. rtl8139 NIC) are only usable when the guest drivers use the memory
1931
mapped control registers.
1932
@item
1933
PCI OHCI USB controller.
1934
@item
1935
LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
1936
@item
1937
PL181 MultiMedia Card Interface with SD card.
1938
@end itemize
1939

    
1940
Several variants of the ARM RealView baseboard are emulated,
1941
including the EB, PB-A8 and PBX-A9.  Due to interactions with the
1942
bootloader, only certain Linux kernel configurations work out
1943
of the box on these boards.
1944

    
1945
Kernels for the PB-A8 board should have CONFIG_REALVIEW_HIGH_PHYS_OFFSET
1946
enabled in the kernel, and expect 512M RAM.  Kernels for The PBX-A9 board
1947
should have CONFIG_SPARSEMEM enabled, CONFIG_REALVIEW_HIGH_PHYS_OFFSET
1948
disabled and expect 1024M RAM.
1949

    
1950
The following devices are emulated:
1951

    
1952
@itemize @minus
1953
@item
1954
ARM926E, ARM1136, ARM11MPCore, Cortex-A8 or Cortex-A9 MPCore CPU
1955
@item
1956
ARM AMBA Generic/Distributed Interrupt Controller
1957
@item
1958
Four PL011 UARTs
1959
@item
1960
SMC 91c111 or SMSC LAN9118 Ethernet adapter
1961
@item
1962
PL110 LCD controller
1963
@item
1964
PL050 KMI with PS/2 keyboard and mouse
1965
@item
1966
PCI host bridge
1967
@item
1968
PCI OHCI USB controller
1969
@item
1970
LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
1971
@item
1972
PL181 MultiMedia Card Interface with SD card.
1973
@end itemize
1974

    
1975
The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
1976
and "Terrier") emulation includes the following peripherals:
1977

    
1978
@itemize @minus
1979
@item
1980
Intel PXA270 System-on-chip (ARM V5TE core)
1981
@item
1982
NAND Flash memory
1983
@item
1984
IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
1985
@item
1986
On-chip OHCI USB controller
1987
@item
1988
On-chip LCD controller
1989
@item
1990
On-chip Real Time Clock
1991
@item
1992
TI ADS7846 touchscreen controller on SSP bus
1993
@item
1994
Maxim MAX1111 analog-digital converter on I@math{^2}C bus
1995
@item
1996
GPIO-connected keyboard controller and LEDs
1997
@item
1998
Secure Digital card connected to PXA MMC/SD host
1999
@item
2000
Three on-chip UARTs
2001
@item
2002
WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
2003
@end itemize
2004

    
2005
The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
2006
following elements:
2007

    
2008
@itemize @minus
2009
@item
2010
Texas Instruments OMAP310 System-on-chip (ARM 925T core)
2011
@item
2012
ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
2013
@item
2014
On-chip LCD controller
2015
@item
2016
On-chip Real Time Clock
2017
@item
2018
TI TSC2102i touchscreen controller / analog-digital converter / Audio
2019
CODEC, connected through MicroWire and I@math{^2}S busses
2020
@item
2021
GPIO-connected matrix keypad
2022
@item
2023
Secure Digital card connected to OMAP MMC/SD host
2024
@item
2025
Three on-chip UARTs
2026
@end itemize
2027

    
2028
Nokia N800 and N810 internet tablets (known also as RX-34 and RX-44 / 48)
2029
emulation supports the following elements:
2030

    
2031
@itemize @minus
2032
@item
2033
Texas Instruments OMAP2420 System-on-chip (ARM 1136 core)
2034
@item
2035
RAM and non-volatile OneNAND Flash memories
2036
@item
2037
Display connected to EPSON remote framebuffer chip and OMAP on-chip
2038
display controller and a LS041y3 MIPI DBI-C controller
2039
@item
2040
TI TSC2301 (in N800) and TI TSC2005 (in N810) touchscreen controllers
2041
driven through SPI bus
2042
@item
2043
National Semiconductor LM8323-controlled qwerty keyboard driven
2044
through I@math{^2}C bus
2045
@item
2046
Secure Digital card connected to OMAP MMC/SD host
2047
@item
2048
Three OMAP on-chip UARTs and on-chip STI debugging console
2049
@item
2050
A Bluetooth(R) transceiver and HCI connected to an UART
2051
@item
2052
Mentor Graphics "Inventra" dual-role USB controller embedded in a TI
2053
TUSB6010 chip - only USB host mode is supported
2054
@item
2055
TI TMP105 temperature sensor driven through I@math{^2}C bus
2056
@item
2057
TI TWL92230C power management companion with an RTC on I@math{^2}C bus
2058
@item
2059
Nokia RETU and TAHVO multi-purpose chips with an RTC, connected
2060
through CBUS
2061
@end itemize
2062

    
2063
The Luminary Micro Stellaris LM3S811EVB emulation includes the following
2064
devices:
2065

    
2066
@itemize @minus
2067
@item
2068
Cortex-M3 CPU core.
2069
@item
2070
64k Flash and 8k SRAM.
2071
@item
2072
Timers, UARTs, ADC and I@math{^2}C interface.
2073
@item
2074
OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
2075
@end itemize
2076

    
2077
The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
2078
devices:
2079

    
2080
@itemize @minus
2081
@item
2082
Cortex-M3 CPU core.
2083
@item
2084
256k Flash and 64k SRAM.
2085
@item
2086
Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
2087
@item
2088
OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
2089
@end itemize
2090

    
2091
The Freecom MusicPal internet radio emulation includes the following
2092
elements:
2093

    
2094
@itemize @minus
2095
@item
2096
Marvell MV88W8618 ARM core.
2097
@item
2098
32 MB RAM, 256 KB SRAM, 8 MB flash.
2099
@item
2100
Up to 2 16550 UARTs
2101
@item
2102
MV88W8xx8 Ethernet controller
2103
@item
2104
MV88W8618 audio controller, WM8750 CODEC and mixer
2105
@item
2106
128×64 display with brightness control
2107
@item
2108
2 buttons, 2 navigation wheels with button function
2109
@end itemize
2110

    
2111
The Siemens SX1 models v1 and v2 (default) basic emulation.
2112
The emulation includes the following elements:
2113

    
2114
@itemize @minus
2115
@item
2116
Texas Instruments OMAP310 System-on-chip (ARM 925T core)
2117
@item
2118
ROM and RAM memories (ROM firmware image can be loaded with -pflash)
2119
V1
2120
1 Flash of 16MB and 1 Flash of 8MB
2121
V2
2122
1 Flash of 32MB
2123
@item
2124
On-chip LCD controller
2125
@item
2126
On-chip Real Time Clock
2127
@item
2128
Secure Digital card connected to OMAP MMC/SD host
2129
@item
2130
Three on-chip UARTs
2131
@end itemize
2132

    
2133
A Linux 2.6 test image is available on the QEMU web site. More
2134
information is available in the QEMU mailing-list archive.
2135

    
2136
@c man begin OPTIONS
2137

    
2138
The following options are specific to the ARM emulation:
2139

    
2140
@table @option
2141

    
2142
@item -semihosting
2143
Enable semihosting syscall emulation.
2144

    
2145
On ARM this implements the "Angel" interface.
2146

    
2147
Note that this allows guest direct access to the host filesystem,
2148
so should only be used with trusted guest OS.
2149

    
2150
@end table
2151

    
2152
@node ColdFire System emulator
2153
@section ColdFire System emulator
2154
@cindex system emulation (ColdFire)
2155
@cindex system emulation (M68K)
2156

    
2157
Use the executable @file{qemu-system-m68k} to simulate a ColdFire machine.
2158
The emulator is able to boot a uClinux kernel.
2159

    
2160
The M5208EVB emulation includes the following devices:
2161

    
2162
@itemize @minus
2163
@item
2164
MCF5208 ColdFire V2 Microprocessor (ISA A+ with EMAC).
2165
@item
2166
Three Two on-chip UARTs.
2167
@item
2168
Fast Ethernet Controller (FEC)
2169
@end itemize
2170

    
2171
The AN5206 emulation includes the following devices:
2172

    
2173
@itemize @minus
2174
@item
2175
MCF5206 ColdFire V2 Microprocessor.
2176
@item
2177
Two on-chip UARTs.
2178
@end itemize
2179

    
2180
@c man begin OPTIONS
2181

    
2182
The following options are specific to the ColdFire emulation:
2183

    
2184
@table @option
2185

    
2186
@item -semihosting
2187
Enable semihosting syscall emulation.
2188

    
2189
On M68K this implements the "ColdFire GDB" interface used by libgloss.
2190

    
2191
Note that this allows guest direct access to the host filesystem,
2192
so should only be used with trusted guest OS.
2193

    
2194
@end table
2195

    
2196
@node Cris System emulator
2197
@section Cris System emulator
2198
@cindex system emulation (Cris)
2199

    
2200
TODO
2201

    
2202
@node Microblaze System emulator
2203
@section Microblaze System emulator
2204
@cindex system emulation (Microblaze)
2205

    
2206
TODO
2207

    
2208
@node SH4 System emulator
2209
@section SH4 System emulator
2210
@cindex system emulation (SH4)
2211

    
2212
TODO
2213

    
2214
@node Xtensa System emulator
2215
@section Xtensa System emulator
2216
@cindex system emulation (Xtensa)
2217

    
2218
Two executables cover simulation of both Xtensa endian options,
2219
@file{qemu-system-xtensa} and @file{qemu-system-xtensaeb}.
2220
Two different machine types are emulated:
2221

    
2222
@itemize @minus
2223
@item
2224
Xtensa emulator pseudo board "sim"
2225
@item
2226
Avnet LX60/LX110/LX200 board
2227
@end itemize
2228

    
2229
The sim pseudo board emulation provides an environment similar
2230
to one provided by the proprietary Tensilica ISS.
2231
It supports:
2232

    
2233
@itemize @minus
2234
@item
2235
A range of Xtensa CPUs, default is the DC232B
2236
@item
2237
Console and filesystem access via semihosting calls
2238
@end itemize
2239

    
2240
The Avnet LX60/LX110/LX200 emulation supports:
2241

    
2242
@itemize @minus
2243
@item
2244
A range of Xtensa CPUs, default is the DC232B
2245
@item
2246
16550 UART
2247
@item
2248
OpenCores 10/100 Mbps Ethernet MAC
2249
@end itemize
2250

    
2251
@c man begin OPTIONS
2252

    
2253
The following options are specific to the Xtensa emulation:
2254

    
2255
@table @option
2256

    
2257
@item -semihosting
2258
Enable semihosting syscall emulation.
2259

    
2260
Xtensa semihosting provides basic file IO calls, such as open/read/write/seek/select.
2261
Tensilica baremetal libc for ISS and linux platform "sim" use this interface.
2262

    
2263
Note that this allows guest direct access to the host filesystem,
2264
so should only be used with trusted guest OS.
2265

    
2266
@end table
2267
@node QEMU User space emulator
2268
@chapter QEMU User space emulator
2269

    
2270
@menu
2271
* Supported Operating Systems ::
2272
* Linux User space emulator::
2273
* Mac OS X/Darwin User space emulator ::
2274
* BSD User space emulator ::
2275
@end menu
2276

    
2277
@node Supported Operating Systems
2278
@section Supported Operating Systems
2279

    
2280
The following OS are supported in user space emulation:
2281

    
2282
@itemize @minus
2283
@item
2284
Linux (referred as qemu-linux-user)
2285
@item
2286
Mac OS X/Darwin (referred as qemu-darwin-user)
2287
@item
2288
BSD (referred as qemu-bsd-user)
2289
@end itemize
2290

    
2291
@node Linux User space emulator
2292
@section Linux User space emulator
2293

    
2294
@menu
2295
* Quick Start::
2296
* Wine launch::
2297
* Command line options::
2298
* Other binaries::
2299
@end menu
2300

    
2301
@node Quick Start
2302
@subsection Quick Start
2303

    
2304
In order to launch a Linux process, QEMU needs the process executable
2305
itself and all the target (x86) dynamic libraries used by it.
2306

    
2307
@itemize
2308

    
2309
@item On x86, you can just try to launch any process by using the native
2310
libraries:
2311

    
2312
@example
2313
qemu-i386 -L / /bin/ls
2314
@end example
2315

    
2316
@code{-L /} tells that the x86 dynamic linker must be searched with a
2317
@file{/} prefix.
2318

    
2319
@item Since QEMU is also a linux process, you can launch qemu with
2320
qemu (NOTE: you can only do that if you compiled QEMU from the sources):
2321

    
2322
@example
2323
qemu-i386 -L / qemu-i386 -L / /bin/ls
2324
@end example
2325

    
2326
@item On non x86 CPUs, you need first to download at least an x86 glibc
2327
(@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
2328
@code{LD_LIBRARY_PATH} is not set:
2329

    
2330
@example
2331
unset LD_LIBRARY_PATH
2332
@end example
2333

    
2334
Then you can launch the precompiled @file{ls} x86 executable:
2335

    
2336
@example
2337
qemu-i386 tests/i386/ls
2338
@end example
2339
You can look at @file{scripts/qemu-binfmt-conf.sh} so that
2340
QEMU is automatically launched by the Linux kernel when you try to
2341
launch x86 executables. It requires the @code{binfmt_misc} module in the
2342
Linux kernel.
2343

    
2344
@item The x86 version of QEMU is also included. You can try weird things such as:
2345
@example
2346
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
2347
          /usr/local/qemu-i386/bin/ls-i386
2348
@end example
2349

    
2350
@end itemize
2351

    
2352
@node Wine launch
2353
@subsection Wine launch
2354

    
2355
@itemize
2356

    
2357
@item Ensure that you have a working QEMU with the x86 glibc
2358
distribution (see previous section). In order to verify it, you must be
2359
able to do:
2360

    
2361
@example
2362
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
2363
@end example
2364

    
2365
@item Download the binary x86 Wine install
2366
(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
2367

    
2368
@item Configure Wine on your account. Look at the provided script
2369
@file{/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous
2370
@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
2371

    
2372
@item Then you can try the example @file{putty.exe}:
2373

    
2374
@example
2375
qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
2376
          /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
2377
@end example
2378

    
2379
@end itemize
2380

    
2381
@node Command line options
2382
@subsection Command line options
2383

    
2384
@example
2385
usage: qemu-i386 [-h] [-d] [-L path] [-s size] [-cpu model] [-g port] [-B offset] [-R size] program [arguments...]
2386
@end example
2387

    
2388
@table @option
2389
@item -h
2390
Print the help
2391
@item -L path
2392
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
2393
@item -s size
2394
Set the x86 stack size in bytes (default=524288)
2395
@item -cpu model
2396
Select CPU model (-cpu ? for list and additional feature selection)
2397
@item -ignore-environment
2398
Start with an empty environment. Without this option,
2399
the initial environment is a copy of the caller's environment.
2400
@item -E @var{var}=@var{value}
2401
Set environment @var{var} to @var{value}.
2402
@item -U @var{var}
2403
Remove @var{var} from the environment.
2404
@item -B offset
2405
Offset guest address by the specified number of bytes.  This is useful when
2406
the address region required by guest applications is reserved on the host.
2407
This option is currently only supported on some hosts.
2408
@item -R size
2409
Pre-allocate a guest virtual address space of the given size (in bytes).
2410
"G", "M", and "k" suffixes may be used when specifying the size.
2411
@end table
2412

    
2413
Debug options:
2414

    
2415
@table @option
2416
@item -d
2417
Activate log (logfile=/tmp/qemu.log)
2418
@item -p pagesize
2419
Act as if the host page size was 'pagesize' bytes
2420
@item -g port
2421
Wait gdb connection to port
2422
@item -singlestep
2423
Run the emulation in single step mode.
2424
@end table
2425

    
2426
Environment variables:
2427

    
2428
@table @env
2429
@item QEMU_STRACE
2430
Print system calls and arguments similar to the 'strace' program
2431
(NOTE: the actual 'strace' program will not work because the user
2432
space emulator hasn't implemented ptrace).  At the moment this is
2433
incomplete.  All system calls that don't have a specific argument
2434
format are printed with information for six arguments.  Many
2435
flag-style arguments don't have decoders and will show up as numbers.
2436
@end table
2437

    
2438
@node Other binaries
2439
@subsection Other binaries
2440

    
2441
@cindex user mode (Alpha)
2442
@command{qemu-alpha} TODO.
2443

    
2444
@cindex user mode (ARM)
2445
@command{qemu-armeb} TODO.
2446

    
2447
@cindex user mode (ARM)
2448
@command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF
2449
binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
2450
configurations), and arm-uclinux bFLT format binaries.
2451

    
2452
@cindex user mode (ColdFire)
2453
@cindex user mode (M68K)
2454
@command{qemu-m68k} is capable of running semihosted binaries using the BDM
2455
(m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
2456
coldfire uClinux bFLT format binaries.
2457

    
2458
The binary format is detected automatically.
2459

    
2460
@cindex user mode (Cris)
2461
@command{qemu-cris} TODO.
2462

    
2463
@cindex user mode (i386)
2464
@command{qemu-i386} TODO.
2465
@command{qemu-x86_64} TODO.
2466

    
2467
@cindex user mode (Microblaze)
2468
@command{qemu-microblaze} TODO.
2469

    
2470
@cindex user mode (MIPS)
2471
@command{qemu-mips} TODO.
2472
@command{qemu-mipsel} TODO.
2473

    
2474
@cindex user mode (PowerPC)
2475
@command{qemu-ppc64abi32} TODO.
2476
@command{qemu-ppc64} TODO.
2477
@command{qemu-ppc} TODO.
2478

    
2479
@cindex user mode (SH4)
2480
@command{qemu-sh4eb} TODO.
2481
@command{qemu-sh4} TODO.
2482

    
2483
@cindex user mode (SPARC)
2484
@command{qemu-sparc} can execute Sparc32 binaries (Sparc32 CPU, 32 bit ABI).
2485

    
2486
@command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries
2487
(Sparc64 CPU, 32 bit ABI).
2488

    
2489
@command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
2490
SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
2491

    
2492
@node Mac OS X/Darwin User space emulator
2493
@section Mac OS X/Darwin User space emulator
2494

    
2495
@menu
2496
* Mac OS X/Darwin Status::
2497
* Mac OS X/Darwin Quick Start::
2498
* Mac OS X/Darwin Command line options::
2499
@end menu
2500

    
2501
@node Mac OS X/Darwin Status
2502
@subsection Mac OS X/Darwin Status
2503

    
2504
@itemize @minus
2505
@item
2506
target x86 on x86: Most apps (Cocoa and Carbon too) works. [1]
2507
@item
2508
target PowerPC on x86: Not working as the ppc commpage can't be mapped (yet!)
2509
@item
2510
target PowerPC on PowerPC: Most apps (Cocoa and Carbon too) works. [1]
2511
@item
2512
target x86 on PowerPC: most utilities work. Cocoa and Carbon apps are not yet supported.
2513
@end itemize
2514

    
2515
[1] If you're host commpage can be executed by qemu.
2516

    
2517
@node Mac OS X/Darwin Quick Start
2518
@subsection Quick Start
2519

    
2520
In order to launch a Mac OS X/Darwin process, QEMU needs the process executable
2521
itself and all the target dynamic libraries used by it. If you don't have the FAT
2522
libraries (you're running Mac OS X/ppc) you'll need to obtain it from a Mac OS X
2523
CD or compile them by hand.
2524

    
2525
@itemize
2526

    
2527
@item On x86, you can just try to launch any process by using the native
2528
libraries:
2529

    
2530
@example
2531
qemu-i386 /bin/ls
2532
@end example
2533

    
2534
or to run the ppc version of the executable:
2535

    
2536
@example
2537
qemu-ppc /bin/ls
2538
@end example
2539

    
2540
@item On ppc, you'll have to tell qemu where your x86 libraries (and dynamic linker)
2541
are installed:
2542

    
2543
@example
2544
qemu-i386 -L /opt/x86_root/ /bin/ls
2545
@end example
2546

    
2547
@code{-L /opt/x86_root/} tells that the dynamic linker (dyld) path is in
2548
@file{/opt/x86_root/usr/bin/dyld}.
2549

    
2550
@end itemize
2551

    
2552
@node Mac OS X/Darwin Command line options
2553
@subsection Command line options
2554

    
2555
@example
2556
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
2557
@end example
2558

    
2559
@table @option
2560
@item -h
2561
Print the help
2562
@item -L path
2563
Set the library root path (default=/)
2564
@item -s size
2565
Set the stack size in bytes (default=524288)
2566
@end table
2567

    
2568
Debug options:
2569

    
2570
@table @option
2571
@item -d
2572
Activate log (logfile=/tmp/qemu.log)
2573
@item -p pagesize
2574
Act as if the host page size was 'pagesize' bytes
2575
@item -singlestep
2576
Run the emulation in single step mode.
2577
@end table
2578

    
2579
@node BSD User space emulator
2580
@section BSD User space emulator
2581

    
2582
@menu
2583
* BSD Status::
2584
* BSD Quick Start::
2585
* BSD Command line options::
2586
@end menu
2587

    
2588
@node BSD Status
2589
@subsection BSD Status
2590

    
2591
@itemize @minus
2592
@item
2593
target Sparc64 on Sparc64: Some trivial programs work.
2594
@end itemize
2595

    
2596
@node BSD Quick Start
2597
@subsection Quick Start
2598

    
2599
In order to launch a BSD process, QEMU needs the process executable
2600
itself and all the target dynamic libraries used by it.
2601

    
2602
@itemize
2603

    
2604
@item On Sparc64, you can just try to launch any process by using the native
2605
libraries:
2606

    
2607
@example
2608
qemu-sparc64 /bin/ls
2609
@end example
2610

    
2611
@end itemize
2612

    
2613
@node BSD Command line options
2614
@subsection Command line options
2615

    
2616
@example
2617
usage: qemu-sparc64 [-h] [-d] [-L path] [-s size] [-bsd type] program [arguments...]
2618
@end example
2619

    
2620
@table @option
2621
@item -h
2622
Print the help
2623
@item -L path
2624
Set the library root path (default=/)
2625
@item -s size
2626
Set the stack size in bytes (default=524288)
2627
@item -ignore-environment
2628
Start with an empty environment. Without this option,
2629
the initial environment is a copy of the caller's environment.
2630
@item -E @var{var}=@var{value}
2631
Set environment @var{var} to @var{value}.
2632
@item -U @var{var}
2633
Remove @var{var} from the environment.
2634
@item -bsd type
2635
Set the type of the emulated BSD Operating system. Valid values are
2636
FreeBSD, NetBSD and OpenBSD (default).
2637
@end table
2638

    
2639
Debug options:
2640

    
2641
@table @option
2642
@item -d
2643
Activate log (logfile=/tmp/qemu.log)
2644
@item -p pagesize
2645
Act as if the host page size was 'pagesize' bytes
2646
@item -singlestep
2647
Run the emulation in single step mode.
2648
@end table
2649

    
2650
@node compilation
2651
@chapter Compilation from the sources
2652

    
2653
@menu
2654
* Linux/Unix::
2655
* Windows::
2656
* Cross compilation for Windows with Linux::
2657
* Mac OS X::
2658
* Make targets::
2659
@end menu
2660

    
2661
@node Linux/Unix
2662
@section Linux/Unix
2663

    
2664
@subsection Compilation
2665

    
2666
First you must decompress the sources:
2667
@example
2668
cd /tmp
2669
tar zxvf qemu-x.y.z.tar.gz
2670
cd qemu-x.y.z
2671
@end example
2672

    
2673
Then you configure QEMU and build it (usually no options are needed):
2674
@example
2675
./configure
2676
make
2677
@end example
2678

    
2679
Then type as root user:
2680
@example
2681
make install
2682
@end example
2683
to install QEMU in @file{/usr/local}.
2684

    
2685
@node Windows
2686
@section Windows
2687

    
2688
@itemize
2689
@item Install the current versions of MSYS and MinGW from
2690
@url{http://www.mingw.org/}. You can find detailed installation
2691
instructions in the download section and the FAQ.
2692

    
2693
@item Download
2694
the MinGW development library of SDL 1.2.x
2695
(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
2696
@url{http://www.libsdl.org}. Unpack it in a temporary place and
2697
edit the @file{sdl-config} script so that it gives the
2698
correct SDL directory when invoked.
2699

    
2700
@item Install the MinGW version of zlib and make sure
2701
@file{zlib.h} and @file{libz.dll.a} are in
2702
MinGW's default header and linker search paths.
2703

    
2704
@item Extract the current version of QEMU.
2705

    
2706
@item Start the MSYS shell (file @file{msys.bat}).
2707

    
2708
@item Change to the QEMU directory. Launch @file{./configure} and
2709
@file{make}.  If you have problems using SDL, verify that
2710
@file{sdl-config} can be launched from the MSYS command line.
2711

    
2712
@item You can install QEMU in @file{Program Files/Qemu} by typing
2713
@file{make install}. Don't forget to copy @file{SDL.dll} in
2714
@file{Program Files/Qemu}.
2715

    
2716
@end itemize
2717

    
2718
@node Cross compilation for Windows with Linux
2719
@section Cross compilation for Windows with Linux
2720

    
2721
@itemize
2722
@item
2723
Install the MinGW cross compilation tools available at
2724
@url{http://www.mingw.org/}.
2725

    
2726
@item Download
2727
the MinGW development library of SDL 1.2.x
2728
(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
2729
@url{http://www.libsdl.org}. Unpack it in a temporary place and
2730
edit the @file{sdl-config} script so that it gives the
2731
correct SDL directory when invoked.  Set up the @code{PATH} environment
2732
variable so that @file{sdl-config} can be launched by
2733
the QEMU configuration script.
2734

    
2735
@item Install the MinGW version of zlib and make sure
2736
@file{zlib.h} and @file{libz.dll.a} are in
2737
MinGW's default header and linker search paths.
2738

    
2739
@item
2740
Configure QEMU for Windows cross compilation:
2741
@example
2742
PATH=/usr/i686-pc-mingw32/sys-root/mingw/bin:$PATH ./configure --cross-prefix='i686-pc-mingw32-'
2743
@end example
2744
The example assumes @file{sdl-config} is installed under @file{/usr/i686-pc-mingw32/sys-root/mingw/bin} and
2745
MinGW cross compilation tools have names like @file{i686-pc-mingw32-gcc} and @file{i686-pc-mingw32-strip}.
2746
We set the @code{PATH} environment variable to ensure the MinGW version of @file{sdl-config} is used and
2747
use --cross-prefix to specify the name of the cross compiler.
2748
You can also use --prefix to set the Win32 install path which defaults to @file{c:/Program Files/Qemu}.
2749

    
2750
Under Fedora Linux, you can run:
2751
@example
2752
yum -y install mingw32-gcc mingw32-SDL mingw32-zlib
2753
@end example
2754
to get a suitable cross compilation environment.
2755

    
2756
@item You can install QEMU in the installation directory by typing
2757
@code{make install}. Don't forget to copy @file{SDL.dll} and @file{zlib1.dll} into the
2758
installation directory.
2759

    
2760
@end itemize
2761

    
2762
Wine can be used to launch the resulting qemu.exe compiled for Win32.
2763

    
2764
@node Mac OS X
2765
@section Mac OS X
2766

    
2767
The Mac OS X patches are not fully merged in QEMU, so you should look
2768
at the QEMU mailing list archive to have all the necessary
2769
information.
2770

    
2771
@node Make targets
2772
@section Make targets
2773

    
2774
@table @code
2775

    
2776
@item make
2777
@item make all
2778
Make everything which is typically needed.
2779

    
2780
@item install
2781
TODO
2782

    
2783
@item install-doc
2784
TODO
2785

    
2786
@item make clean
2787
Remove most files which were built during make.
2788

    
2789
@item make distclean
2790
Remove everything which was built during make.
2791

    
2792
@item make dvi
2793
@item make html
2794
@item make info
2795
@item make pdf
2796
Create documentation in dvi, html, info or pdf format.
2797

    
2798
@item make cscope
2799
TODO
2800

    
2801
@item make defconfig
2802
(Re-)create some build configuration files.
2803
User made changes will be overwritten.
2804

    
2805
@item tar
2806
@item tarbin
2807
TODO
2808

    
2809
@end table
2810

    
2811
@node License
2812
@appendix License
2813

    
2814
QEMU is a trademark of Fabrice Bellard.
2815

    
2816
QEMU is released under the GNU General Public License (TODO: add link).
2817
Parts of QEMU have specific licenses, see file LICENSE.
2818

    
2819
TODO (refer to file LICENSE, include it, include the GPL?)
2820

    
2821
@node Index
2822
@appendix Index
2823
@menu
2824
* Concept Index::
2825
* Function Index::
2826
* Keystroke Index::
2827
* Program Index::
2828
* Data Type Index::
2829
* Variable Index::
2830
@end menu
2831

    
2832
@node Concept Index
2833
@section Concept Index
2834
This is the main index. Should we combine all keywords in one index? TODO
2835
@printindex cp
2836

    
2837
@node Function Index
2838
@section Function Index
2839
This index could be used for command line options and monitor functions.
2840
@printindex fn
2841

    
2842
@node Keystroke Index
2843
@section Keystroke Index
2844

    
2845
This is a list of all keystrokes which have a special function
2846
in system emulation.
2847

    
2848
@printindex ky
2849

    
2850
@node Program Index
2851
@section Program Index
2852
@printindex pg
2853

    
2854
@node Data Type Index
2855
@section Data Type Index
2856

    
2857
This index could be used for qdev device names and options.
2858

    
2859
@printindex tp
2860

    
2861
@node Variable Index
2862
@section Variable Index
2863
@printindex vr
2864

    
2865
@bye