Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 989b697d

History | View | Annotate | Download (88 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 a 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-system-i386 dos.img -soundhw gus -parallel none
234
@end example
235

    
236
Alternatively:
237
@example
238
qemu-system-i386 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-system-i386 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-system-i386 [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
* disk_images_formats::       Disk image file formats
420
* host_drives::               Using host drives
421
* disk_images_fat_images::    Virtual FAT disk images
422
* disk_images_nbd::           NBD access
423
* disk_images_sheepdog::      Sheepdog disk images
424
* disk_images_iscsi::         iSCSI LUNs
425
* disk_images_gluster::       GlusterFS disk images
426
@end menu
427

    
428
@node disk_images_quickstart
429
@subsection Quick start for disk image creation
430

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

    
439
See @ref{qemu_img_invocation} for more information.
440

    
441
@node disk_images_snapshot_mode
442
@subsection Snapshot mode
443

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

    
450
@node vm_snapshots
451
@subsection VM snapshots
452

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

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

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

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

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

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

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

    
501
@node qemu_img_invocation
502
@subsection @code{qemu-img} Invocation
503

    
504
@include qemu-img.texi
505

    
506
@node qemu_nbd_invocation
507
@subsection @code{qemu-nbd} Invocation
508

    
509
@include qemu-nbd.texi
510

    
511
@node disk_images_formats
512
@subsection Disk image file formats
513

    
514
QEMU supports many image file formats that can be used with VMs as well as with
515
any of the tools (like @code{qemu-img}). This includes the preferred formats
516
raw and qcow2 as well as formats that are supported for compatibility with
517
older QEMU versions or other hypervisors.
518

    
519
Depending on the image format, different options can be passed to
520
@code{qemu-img create} and @code{qemu-img convert} using the @code{-o} option.
521
This section describes each format and the options that are supported for it.
522

    
523
@table @option
524
@item raw
525

    
526
Raw disk image format. This format has the advantage of
527
being simple and easily exportable to all other emulators. If your
528
file system supports @emph{holes} (for example in ext2 or ext3 on
529
Linux or NTFS on Windows), then only the written sectors will reserve
530
space. Use @code{qemu-img info} to know the real size used by the
531
image or @code{ls -ls} on Unix/Linux.
532

    
533
@item qcow2
534
QEMU image format, the most versatile format. Use it to have smaller
535
images (useful if your filesystem does not supports holes, for example
536
on Windows), optional AES encryption, zlib based compression and
537
support of multiple VM snapshots.
538

    
539
Supported options:
540
@table @code
541
@item compat
542
Determines the qcow2 version to use. @code{compat=0.10} uses the traditional
543
image format that can be read by any QEMU since 0.10 (this is the default).
544
@code{compat=1.1} enables image format extensions that only QEMU 1.1 and
545
newer understand. Amongst others, this includes zero clusters, which allow
546
efficient copy-on-read for sparse images.
547

    
548
@item backing_file
549
File name of a base image (see @option{create} subcommand)
550
@item backing_fmt
551
Image format of the base image
552
@item encryption
553
If this option is set to @code{on}, the image is encrypted.
554

    
555
Encryption uses the AES format which is very secure (128 bit keys). Use
556
a long password (16 characters) to get maximum protection.
557

    
558
@item cluster_size
559
Changes the qcow2 cluster size (must be between 512 and 2M). Smaller cluster
560
sizes can improve the image file size whereas larger cluster sizes generally
561
provide better performance.
562

    
563
@item preallocation
564
Preallocation mode (allowed values: off, metadata). An image with preallocated
565
metadata is initially larger but can improve performance when the image needs
566
to grow.
567

    
568
@item lazy_refcounts
569
If this option is set to @code{on}, reference count updates are postponed with
570
the goal of avoiding metadata I/O and improving performance. This is
571
particularly interesting with @option{cache=writethrough} which doesn't batch
572
metadata updates. The tradeoff is that after a host crash, the reference count
573
tables must be rebuilt, i.e. on the next open an (automatic) @code{qemu-img
574
check -r all} is required, which may take some time.
575

    
576
This option can only be enabled if @code{compat=1.1} is specified.
577

    
578
@end table
579

    
580
@item qed
581
Old QEMU image format with support for backing files and compact image files
582
(when your filesystem or transport medium does not support holes).
583

    
584
When converting QED images to qcow2, you might want to consider using the
585
@code{lazy_refcounts=on} option to get a more QED-like behaviour.
586

    
587
Supported options:
588
@table @code
589
@item backing_file
590
File name of a base image (see @option{create} subcommand).
591
@item backing_fmt
592
Image file format of backing file (optional).  Useful if the format cannot be
593
autodetected because it has no header, like some vhd/vpc files.
594
@item cluster_size
595
Changes the cluster size (must be power-of-2 between 4K and 64K). Smaller
596
cluster sizes can improve the image file size whereas larger cluster sizes
597
generally provide better performance.
598
@item table_size
599
Changes the number of clusters per L1/L2 table (must be power-of-2 between 1
600
and 16).  There is normally no need to change this value but this option can be
601
used for performance benchmarking.
602
@end table
603

    
604
@item qcow
605
Old QEMU image format with support for backing files, compact image files,
606
encryption and compression.
607

    
608
Supported options:
609
@table @code
610
@item backing_file
611
File name of a base image (see @option{create} subcommand)
612
@item encryption
613
If this option is set to @code{on}, the image is encrypted.
614
@end table
615

    
616
@item cow
617
User Mode Linux Copy On Write image format. It is supported only for
618
compatibility with previous versions.
619
Supported options:
620
@table @code
621
@item backing_file
622
File name of a base image (see @option{create} subcommand)
623
@end table
624

    
625
@item vdi
626
VirtualBox 1.1 compatible image format.
627
Supported options:
628
@table @code
629
@item static
630
If this option is set to @code{on}, the image is created with metadata
631
preallocation.
632
@end table
633

    
634
@item vmdk
635
VMware 3 and 4 compatible image format.
636

    
637
Supported options:
638
@table @code
639
@item backing_file
640
File name of a base image (see @option{create} subcommand).
641
@item compat6
642
Create a VMDK version 6 image (instead of version 4)
643
@item subformat
644
Specifies which VMDK subformat to use. Valid options are
645
@code{monolithicSparse} (default),
646
@code{monolithicFlat},
647
@code{twoGbMaxExtentSparse},
648
@code{twoGbMaxExtentFlat} and
649
@code{streamOptimized}.
650
@end table
651

    
652
@item vpc
653
VirtualPC compatible image format (VHD).
654
Supported options:
655
@table @code
656
@item subformat
657
Specifies which VHD subformat to use. Valid options are
658
@code{dynamic} (default) and @code{fixed}.
659
@end table
660
@end table
661

    
662
@subsubsection Read-only formats
663
More disk image file formats are supported in a read-only mode.
664
@table @option
665
@item bochs
666
Bochs images of @code{growing} type.
667
@item cloop
668
Linux Compressed Loop image, useful only to reuse directly compressed
669
CD-ROM images present for example in the Knoppix CD-ROMs.
670
@item dmg
671
Apple disk image.
672
@item parallels
673
Parallels disk image format.
674
@end table
675

    
676

    
677
@node host_drives
678
@subsection Using host drives
679

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

    
683
@subsubsection Linux
684

    
685
On Linux, you can directly use the host device filename instead of a
686
disk image filename provided you have enough privileges to access
687
it. For example, use @file{/dev/cdrom} to access to the CDROM or
688
@file{/dev/fd0} for the floppy.
689

    
690
@table @code
691
@item CD
692
You can specify a CDROM device even if no CDROM is loaded. QEMU has
693
specific code to detect CDROM insertion or removal. CDROM ejection by
694
the guest OS is supported. Currently only data CDs are supported.
695
@item Floppy
696
You can specify a floppy device even if no floppy is loaded. Floppy
697
removal is currently not detected accurately (if you change floppy
698
without doing floppy access while the floppy is not loaded, the guest
699
OS will think that the same floppy is loaded).
700
@item Hard disks
701
Hard disks can be used. Normally you must specify the whole disk
702
(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
703
see it as a partitioned disk. WARNING: unless you know what you do, it
704
is better to only make READ-ONLY accesses to the hard disk otherwise
705
you may corrupt your host data (use the @option{-snapshot} command
706
line option or modify the device permissions accordingly).
707
@end table
708

    
709
@subsubsection Windows
710

    
711
@table @code
712
@item CD
713
The preferred syntax is the drive letter (e.g. @file{d:}). The
714
alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
715
supported as an alias to the first CDROM drive.
716

    
717
Currently there is no specific code to handle removable media, so it
718
is better to use the @code{change} or @code{eject} monitor commands to
719
change or eject media.
720
@item Hard disks
721
Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
722
where @var{N} is the drive number (0 is the first hard disk).
723

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

    
730

    
731
@subsubsection Mac OS X
732

    
733
@file{/dev/cdrom} is an alias to the first CDROM.
734

    
735
Currently there is no specific code to handle removable media, so it
736
is better to use the @code{change} or @code{eject} monitor commands to
737
change or eject media.
738

    
739
@node disk_images_fat_images
740
@subsection Virtual FAT disk images
741

    
742
QEMU can automatically create a virtual FAT disk image from a
743
directory tree. In order to use it, just type:
744

    
745
@example
746
qemu-system-i386 linux.img -hdb fat:/my_directory
747
@end example
748

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

    
753
Floppies can be emulated with the @code{:floppy:} option:
754

    
755
@example
756
qemu-system-i386 linux.img -fda fat:floppy:/my_directory
757
@end example
758

    
759
A read/write support is available for testing (beta stage) with the
760
@code{:rw:} option:
761

    
762
@example
763
qemu-system-i386 linux.img -fda fat:floppy:rw:/my_directory
764
@end example
765

    
766
What you should @emph{never} do:
767
@itemize
768
@item use non-ASCII filenames ;
769
@item use "-snapshot" together with ":rw:" ;
770
@item expect it to work when loadvm'ing ;
771
@item write to the FAT directory on the host system while accessing it with the guest system.
772
@end itemize
773

    
774
@node disk_images_nbd
775
@subsection NBD access
776

    
777
QEMU can access directly to block device exported using the Network Block Device
778
protocol.
779

    
780
@example
781
qemu-system-i386 linux.img -hdb nbd://my_nbd_server.mydomain.org:1024/
782
@end example
783

    
784
If the NBD server is located on the same host, you can use an unix socket instead
785
of an inet socket:
786

    
787
@example
788
qemu-system-i386 linux.img -hdb nbd+unix://?socket=/tmp/my_socket
789
@end example
790

    
791
In this case, the block device must be exported using qemu-nbd:
792

    
793
@example
794
qemu-nbd --socket=/tmp/my_socket my_disk.qcow2
795
@end example
796

    
797
The use of qemu-nbd allows to share a disk between several guests:
798
@example
799
qemu-nbd --socket=/tmp/my_socket --share=2 my_disk.qcow2
800
@end example
801

    
802
@noindent
803
and then you can use it with two guests:
804
@example
805
qemu-system-i386 linux1.img -hdb nbd+unix://?socket=/tmp/my_socket
806
qemu-system-i386 linux2.img -hdb nbd+unix://?socket=/tmp/my_socket
807
@end example
808

    
809
If the nbd-server uses named exports (supported since NBD 2.9.18, or with QEMU's
810
own embedded NBD server), you must specify an export name in the URI:
811
@example
812
qemu-system-i386 -cdrom nbd://localhost/debian-500-ppc-netinst
813
qemu-system-i386 -cdrom nbd://localhost/openSUSE-11.1-ppc-netinst
814
@end example
815

    
816
The URI syntax for NBD is supported since QEMU 1.3.  An alternative syntax is
817
also available.  Here are some example of the older syntax:
818
@example
819
qemu-system-i386 linux.img -hdb nbd:my_nbd_server.mydomain.org:1024
820
qemu-system-i386 linux2.img -hdb nbd:unix:/tmp/my_socket
821
qemu-system-i386 -cdrom nbd:localhost:10809:exportname=debian-500-ppc-netinst
822
@end example
823

    
824
@node disk_images_sheepdog
825
@subsection Sheepdog disk images
826

    
827
Sheepdog is a distributed storage system for QEMU.  It provides highly
828
available block level storage volumes that can be attached to
829
QEMU-based virtual machines.
830

    
831
You can create a Sheepdog disk image with the command:
832
@example
833
qemu-img create sheepdog:@var{image} @var{size}
834
@end example
835
where @var{image} is the Sheepdog image name and @var{size} is its
836
size.
837

    
838
To import the existing @var{filename} to Sheepdog, you can use a
839
convert command.
840
@example
841
qemu-img convert @var{filename} sheepdog:@var{image}
842
@end example
843

    
844
You can boot from the Sheepdog disk image with the command:
845
@example
846
qemu-system-i386 sheepdog:@var{image}
847
@end example
848

    
849
You can also create a snapshot of the Sheepdog image like qcow2.
850
@example
851
qemu-img snapshot -c @var{tag} sheepdog:@var{image}
852
@end example
853
where @var{tag} is a tag name of the newly created snapshot.
854

    
855
To boot from the Sheepdog snapshot, specify the tag name of the
856
snapshot.
857
@example
858
qemu-system-i386 sheepdog:@var{image}:@var{tag}
859
@end example
860

    
861
You can create a cloned image from the existing snapshot.
862
@example
863
qemu-img create -b sheepdog:@var{base}:@var{tag} sheepdog:@var{image}
864
@end example
865
where @var{base} is a image name of the source snapshot and @var{tag}
866
is its tag name.
867

    
868
If the Sheepdog daemon doesn't run on the local host, you need to
869
specify one of the Sheepdog servers to connect to.
870
@example
871
qemu-img create sheepdog:@var{hostname}:@var{port}:@var{image} @var{size}
872
qemu-system-i386 sheepdog:@var{hostname}:@var{port}:@var{image}
873
@end example
874

    
875
@node disk_images_iscsi
876
@subsection iSCSI LUNs
877

    
878
iSCSI is a popular protocol used to access SCSI devices across a computer
879
network.
880

    
881
There are two different ways iSCSI devices can be used by QEMU.
882

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

    
887
The second method involves using the iSCSI initiator that is built into
888
QEMU. This provides a mechanism that works the same way regardless of which
889
host OS you are running QEMU on. This section will describe this second method
890
of using iSCSI together with QEMU.
891

    
892
In QEMU, iSCSI devices are described using special iSCSI URLs
893

    
894
@example
895
URL syntax:
896
iscsi://[<username>[%<password>]@@]<host>[:<port>]/<target-iqn-name>/<lun>
897
@end example
898

    
899
Username and password are optional and only used if your target is set up
900
using CHAP authentication for access control.
901
Alternatively the username and password can also be set via environment
902
variables to have these not show up in the process list
903

    
904
@example
905
export LIBISCSI_CHAP_USERNAME=<username>
906
export LIBISCSI_CHAP_PASSWORD=<password>
907
iscsi://<host>/<target-iqn-name>/<lun>
908
@end example
909

    
910
Various session related parameters can be set via special options, either
911
in a configuration file provided via '-readconfig' or directly on the
912
command line.
913

    
914
If the initiator-name is not specified qemu will use a default name
915
of 'iqn.2008-11.org.linux-kvm[:<name>'] where <name> is the name of the
916
virtual machine.
917

    
918

    
919
@example
920
Setting a specific initiator name to use when logging in to the target
921
-iscsi initiator-name=iqn.qemu.test:my-initiator
922
@end example
923

    
924
@example
925
Controlling which type of header digest to negotiate with the target
926
-iscsi header-digest=CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
927
@end example
928

    
929
These can also be set via a configuration file
930
@example
931
[iscsi]
932
  user = "CHAP username"
933
  password = "CHAP password"
934
  initiator-name = "iqn.qemu.test:my-initiator"
935
  # header digest is one of CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
936
  header-digest = "CRC32C"
937
@end example
938

    
939

    
940
Setting the target name allows different options for different targets
941
@example
942
[iscsi "iqn.target.name"]
943
  user = "CHAP username"
944
  password = "CHAP password"
945
  initiator-name = "iqn.qemu.test:my-initiator"
946
  # header digest is one of CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
947
  header-digest = "CRC32C"
948
@end example
949

    
950

    
951
Howto use a configuration file to set iSCSI configuration options:
952
@example
953
cat >iscsi.conf <<EOF
954
[iscsi]
955
  user = "me"
956
  password = "my password"
957
  initiator-name = "iqn.qemu.test:my-initiator"
958
  header-digest = "CRC32C"
959
EOF
960

    
961
qemu-system-i386 -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
962
    -readconfig iscsi.conf
963
@end example
964

    
965

    
966
Howto set up a simple iSCSI target on loopback and accessing it via QEMU:
967
@example
968
This example shows how to set up an iSCSI target with one CDROM and one DISK
969
using the Linux STGT software target. This target is available on Red Hat based
970
systems as the package 'scsi-target-utils'.
971

    
972
tgtd --iscsi portal=127.0.0.1:3260
973
tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.qemu.test
974
tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 \
975
    -b /IMAGES/disk.img --device-type=disk
976
tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 2 \
977
    -b /IMAGES/cd.iso --device-type=cd
978
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
979

    
980
qemu-system-i386 -iscsi initiator-name=iqn.qemu.test:my-initiator \
981
    -boot d -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
982
    -cdrom iscsi://127.0.0.1/iqn.qemu.test/2
983
@end example
984

    
985
@node disk_images_gluster
986
@subsection GlusterFS disk images
987

    
988
GlusterFS is an user space distributed file system.
989

    
990
You can boot from the GlusterFS disk image with the command:
991
@example
992
qemu-system-x86_64 -drive file=gluster[+@var{transport}]://[@var{server}[:@var{port}]]/@var{volname}/@var{image}[?socket=...]
993
@end example
994

    
995
@var{gluster} is the protocol.
996

    
997
@var{transport} specifies the transport type used to connect to gluster
998
management daemon (glusterd). Valid transport types are
999
tcp, unix and rdma. If a transport type isn't specified, then tcp
1000
type is assumed.
1001

    
1002
@var{server} specifies the server where the volume file specification for
1003
the given volume resides. This can be either hostname, ipv4 address
1004
or ipv6 address. ipv6 address needs to be within square brackets [ ].
1005
If transport type is unix, then @var{server} field should not be specifed.
1006
Instead @var{socket} field needs to be populated with the path to unix domain
1007
socket.
1008

    
1009
@var{port} is the port number on which glusterd is listening. This is optional
1010
and if not specified, QEMU will send 0 which will make gluster to use the
1011
default port. If the transport type is unix, then @var{port} should not be
1012
specified.
1013

    
1014
@var{volname} is the name of the gluster volume which contains the disk image.
1015

    
1016
@var{image} is the path to the actual disk image that resides on gluster volume.
1017

    
1018
You can create a GlusterFS disk image with the command:
1019
@example
1020
qemu-img create gluster://@var{server}/@var{volname}/@var{image} @var{size}
1021
@end example
1022

    
1023
Examples
1024
@example
1025
qemu-system-x86_64 -drive file=gluster://1.2.3.4/testvol/a.img
1026
qemu-system-x86_64 -drive file=gluster+tcp://1.2.3.4/testvol/a.img
1027
qemu-system-x86_64 -drive file=gluster+tcp://1.2.3.4:24007/testvol/dir/a.img
1028
qemu-system-x86_64 -drive file=gluster+tcp://[1:2:3:4:5:6:7:8]/testvol/dir/a.img
1029
qemu-system-x86_64 -drive file=gluster+tcp://[1:2:3:4:5:6:7:8]:24007/testvol/dir/a.img
1030
qemu-system-x86_64 -drive file=gluster+tcp://server.domain.com:24007/testvol/dir/a.img
1031
qemu-system-x86_64 -drive file=gluster+unix:///testvol/dir/a.img?socket=/tmp/glusterd.socket
1032
qemu-system-x86_64 -drive file=gluster+rdma://1.2.3.4:24007/testvol/a.img
1033
@end example
1034

    
1035
@node pcsys_network
1036
@section Network emulation
1037

    
1038
QEMU can simulate several network cards (PCI or ISA cards on the PC
1039
target) and can connect them to an arbitrary number of Virtual Local
1040
Area Networks (VLANs). Host TAP devices can be connected to any QEMU
1041
VLAN. VLAN can be connected between separate instances of QEMU to
1042
simulate large networks. For simpler usage, a non privileged user mode
1043
network stack can replace the TAP device to have a basic network
1044
connection.
1045

    
1046
@subsection VLANs
1047

    
1048
QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
1049
connection between several network devices. These devices can be for
1050
example QEMU virtual Ethernet cards or virtual Host ethernet devices
1051
(TAP devices).
1052

    
1053
@subsection Using TAP network interfaces
1054

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

    
1059
@subsubsection Linux host
1060

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

    
1068
See @ref{sec_invocation} to have examples of command lines using the
1069
TAP network interfaces.
1070

    
1071
@subsubsection Windows host
1072

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

    
1078
@subsection Using the user mode network stack
1079

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

    
1085
@example
1086

    
1087
         QEMU VLAN      <------>  Firewall/DHCP server <-----> Internet
1088
                           |          (10.0.2.2)
1089
                           |
1090
                           ---->  DNS server (10.0.2.3)
1091
                           |
1092
                           ---->  SMB server (10.0.2.4)
1093
@end example
1094

    
1095
The QEMU VM behaves as if it was behind a firewall which blocks all
1096
incoming connections. You can use a DHCP client to automatically
1097
configure the network in the QEMU VM. The DHCP server assign addresses
1098
to the hosts starting from 10.0.2.15.
1099

    
1100
In order to check that the user mode network is working, you can ping
1101
the address 10.0.2.2 and verify that you got an address in the range
1102
10.0.2.x from the QEMU virtual DHCP server.
1103

    
1104
Note that @code{ping} is not supported reliably to the internet as it
1105
would require root privileges. It means you can only ping the local
1106
router (10.0.2.2).
1107

    
1108
When using the built-in TFTP server, the router is also the TFTP
1109
server.
1110

    
1111
When using the @option{-redir} option, TCP or UDP connections can be
1112
redirected from the host to the guest. It allows for example to
1113
redirect X11, telnet or SSH connections.
1114

    
1115
@subsection Connecting VLANs between QEMU instances
1116

    
1117
Using the @option{-net socket} option, it is possible to make VLANs
1118
that span several QEMU instances. See @ref{sec_invocation} to have a
1119
basic example.
1120

    
1121
@node pcsys_other_devs
1122
@section Other Devices
1123

    
1124
@subsection Inter-VM Shared Memory device
1125

    
1126
With KVM enabled on a Linux host, a shared memory device is available.  Guests
1127
map a POSIX shared memory region into the guest as a PCI device that enables
1128
zero-copy communication to the application level of the guests.  The basic
1129
syntax is:
1130

    
1131
@example
1132
qemu-system-i386 -device ivshmem,size=<size in format accepted by -m>[,shm=<shm name>]
1133
@end example
1134

    
1135
If desired, interrupts can be sent between guest VMs accessing the same shared
1136
memory region.  Interrupt support requires using a shared memory server and
1137
using a chardev socket to connect to it.  The code for the shared memory server
1138
is qemu.git/contrib/ivshmem-server.  An example syntax when using the shared
1139
memory server is:
1140

    
1141
@example
1142
qemu-system-i386 -device ivshmem,size=<size in format accepted by -m>[,chardev=<id>]
1143
                 [,msi=on][,ioeventfd=on][,vectors=n][,role=peer|master]
1144
qemu-system-i386 -chardev socket,path=<path>,id=<id>
1145
@end example
1146

    
1147
When using the server, the guest will be assigned a VM ID (>=0) that allows guests
1148
using the same server to communicate via interrupts.  Guests can read their
1149
VM ID from a device register (see example code).  Since receiving the shared
1150
memory region from the server is asynchronous, there is a (small) chance the
1151
guest may boot before the shared memory is attached.  To allow an application
1152
to ensure shared memory is attached, the VM ID register will return -1 (an
1153
invalid VM ID) until the memory is attached.  Once the shared memory is
1154
attached, the VM ID will return the guest's valid VM ID.  With these semantics,
1155
the guest application can check to ensure the shared memory is attached to the
1156
guest before proceeding.
1157

    
1158
The @option{role} argument can be set to either master or peer and will affect
1159
how the shared memory is migrated.  With @option{role=master}, the guest will
1160
copy the shared memory on migration to the destination host.  With
1161
@option{role=peer}, the guest will not be able to migrate with the device attached.
1162
With the @option{peer} case, the device should be detached and then reattached
1163
after migration using the PCI hotplug support.
1164

    
1165
@node direct_linux_boot
1166
@section Direct Linux Boot
1167

    
1168
This section explains how to launch a Linux kernel inside QEMU without
1169
having to make a full bootable image. It is very useful for fast Linux
1170
kernel testing.
1171

    
1172
The syntax is:
1173
@example
1174
qemu-system-i386 -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1175
@end example
1176

    
1177
Use @option{-kernel} to provide the Linux kernel image and
1178
@option{-append} to give the kernel command line arguments. The
1179
@option{-initrd} option can be used to provide an INITRD image.
1180

    
1181
When using the direct Linux boot, a disk image for the first hard disk
1182
@file{hda} is required because its boot sector is used to launch the
1183
Linux kernel.
1184

    
1185
If you do not need graphical output, you can disable it and redirect
1186
the virtual serial port and the QEMU monitor to the console with the
1187
@option{-nographic} option. The typical command line is:
1188
@example
1189
qemu-system-i386 -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1190
                 -append "root=/dev/hda console=ttyS0" -nographic
1191
@end example
1192

    
1193
Use @key{Ctrl-a c} to switch between the serial console and the
1194
monitor (@pxref{pcsys_keys}).
1195

    
1196
@node pcsys_usb
1197
@section USB emulation
1198

    
1199
QEMU emulates a PCI UHCI USB controller. You can virtually plug
1200
virtual USB devices or real host USB devices (experimental, works only
1201
on Linux hosts).  QEMU will automatically create and connect virtual USB hubs
1202
as necessary to connect multiple USB devices.
1203

    
1204
@menu
1205
* usb_devices::
1206
* host_usb_devices::
1207
@end menu
1208
@node usb_devices
1209
@subsection Connecting USB devices
1210

    
1211
USB devices can be connected with the @option{-usbdevice} commandline option
1212
or the @code{usb_add} monitor command.  Available devices are:
1213

    
1214
@table @code
1215
@item mouse
1216
Virtual Mouse.  This will override the PS/2 mouse emulation when activated.
1217
@item tablet
1218
Pointer device that uses absolute coordinates (like a touchscreen).
1219
This means QEMU is able to report the mouse position without having
1220
to grab the mouse.  Also overrides the PS/2 mouse emulation when activated.
1221
@item disk:@var{file}
1222
Mass storage device based on @var{file} (@pxref{disk_images})
1223
@item host:@var{bus.addr}
1224
Pass through the host device identified by @var{bus.addr}
1225
(Linux only)
1226
@item host:@var{vendor_id:product_id}
1227
Pass through the host device identified by @var{vendor_id:product_id}
1228
(Linux only)
1229
@item wacom-tablet
1230
Virtual Wacom PenPartner tablet.  This device is similar to the @code{tablet}
1231
above but it can be used with the tslib library because in addition to touch
1232
coordinates it reports touch pressure.
1233
@item keyboard
1234
Standard USB keyboard.  Will override the PS/2 keyboard (if present).
1235
@item serial:[vendorid=@var{vendor_id}][,product_id=@var{product_id}]:@var{dev}
1236
Serial converter. This emulates an FTDI FT232BM chip connected to host character
1237
device @var{dev}. The available character devices are the same as for the
1238
@code{-serial} option. The @code{vendorid} and @code{productid} options can be
1239
used to override the default 0403:6001. For instance,
1240
@example
1241
usb_add serial:productid=FA00:tcp:192.168.0.2:4444
1242
@end example
1243
will connect to tcp port 4444 of ip 192.168.0.2, and plug that to the virtual
1244
serial converter, faking a Matrix Orbital LCD Display (USB ID 0403:FA00).
1245
@item braille
1246
Braille device.  This will use BrlAPI to display the braille output on a real
1247
or fake device.
1248
@item net:@var{options}
1249
Network adapter that supports CDC ethernet and RNDIS protocols.  @var{options}
1250
specifies NIC options as with @code{-net nic,}@var{options} (see description).
1251
For instance, user-mode networking can be used with
1252
@example
1253
qemu-system-i386 [...OPTIONS...] -net user,vlan=0 -usbdevice net:vlan=0
1254
@end example
1255
Currently this cannot be used in machines that support PCI NICs.
1256
@item bt[:@var{hci-type}]
1257
Bluetooth dongle whose type is specified in the same format as with
1258
the @option{-bt hci} option, @pxref{bt-hcis,,allowed HCI types}.  If
1259
no type is given, the HCI logic corresponds to @code{-bt hci,vlan=0}.
1260
This USB device implements the USB Transport Layer of HCI.  Example
1261
usage:
1262
@example
1263
qemu-system-i386 [...OPTIONS...] -usbdevice bt:hci,vlan=3 -bt device:keyboard,vlan=3
1264
@end example
1265
@end table
1266

    
1267
@node host_usb_devices
1268
@subsection Using host USB devices on a Linux host
1269

    
1270
WARNING: this is an experimental feature. QEMU will slow down when
1271
using it. USB devices requiring real time streaming (i.e. USB Video
1272
Cameras) are not supported yet.
1273

    
1274
@enumerate
1275
@item If you use an early Linux 2.4 kernel, verify that no Linux driver
1276
is actually using the USB device. A simple way to do that is simply to
1277
disable the corresponding kernel module by renaming it from @file{mydriver.o}
1278
to @file{mydriver.o.disabled}.
1279

    
1280
@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1281
@example
1282
ls /proc/bus/usb
1283
001  devices  drivers
1284
@end example
1285

    
1286
@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:
1287
@example
1288
chown -R myuid /proc/bus/usb
1289
@end example
1290

    
1291
@item Launch QEMU and do in the monitor:
1292
@example
1293
info usbhost
1294
  Device 1.2, speed 480 Mb/s
1295
    Class 00: USB device 1234:5678, USB DISK
1296
@end example
1297
You should see the list of the devices you can use (Never try to use
1298
hubs, it won't work).
1299

    
1300
@item Add the device in QEMU by using:
1301
@example
1302
usb_add host:1234:5678
1303
@end example
1304

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

    
1308
@item Now you can try to use the host USB device in QEMU.
1309

    
1310
@end enumerate
1311

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

    
1315
@node vnc_security
1316
@section VNC security
1317

    
1318
The VNC server capability provides access to the graphical console
1319
of the guest VM across the network. This has a number of security
1320
considerations depending on the deployment scenarios.
1321

    
1322
@menu
1323
* vnc_sec_none::
1324
* vnc_sec_password::
1325
* vnc_sec_certificate::
1326
* vnc_sec_certificate_verify::
1327
* vnc_sec_certificate_pw::
1328
* vnc_sec_sasl::
1329
* vnc_sec_certificate_sasl::
1330
* vnc_generate_cert::
1331
* vnc_setup_sasl::
1332
@end menu
1333
@node vnc_sec_none
1334
@subsection Without passwords
1335

    
1336
The simplest VNC server setup does not include any form of authentication.
1337
For this setup it is recommended to restrict it to listen on a UNIX domain
1338
socket only. For example
1339

    
1340
@example
1341
qemu-system-i386 [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
1342
@end example
1343

    
1344
This ensures that only users on local box with read/write access to that
1345
path can access the VNC server. To securely access the VNC server from a
1346
remote machine, a combination of netcat+ssh can be used to provide a secure
1347
tunnel.
1348

    
1349
@node vnc_sec_password
1350
@subsection With passwords
1351

    
1352
The VNC protocol has limited support for password based authentication. Since
1353
the protocol limits passwords to 8 characters it should not be considered
1354
to provide high security. The password can be fairly easily brute-forced by
1355
a client making repeat connections. For this reason, a VNC server using password
1356
authentication should be restricted to only listen on the loopback interface
1357
or UNIX domain sockets. Password authentication is not supported when operating
1358
in FIPS 140-2 compliance mode as it requires the use of the DES cipher. Password
1359
authentication is requested with the @code{password} option, and then once QEMU
1360
is running the password is set with the monitor. Until the monitor is used to
1361
set the password all clients will be rejected.
1362

    
1363
@example
1364
qemu-system-i386 [...OPTIONS...] -vnc :1,password -monitor stdio
1365
(qemu) change vnc password
1366
Password: ********
1367
(qemu)
1368
@end example
1369

    
1370
@node vnc_sec_certificate
1371
@subsection With x509 certificates
1372

    
1373
The QEMU VNC server also implements the VeNCrypt extension allowing use of
1374
TLS for encryption of the session, and x509 certificates for authentication.
1375
The use of x509 certificates is strongly recommended, because TLS on its
1376
own is susceptible to man-in-the-middle attacks. Basic x509 certificate
1377
support provides a secure session, but no authentication. This allows any
1378
client to connect, and provides an encrypted session.
1379

    
1380
@example
1381
qemu-system-i386 [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
1382
@end example
1383

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

    
1390
@node vnc_sec_certificate_verify
1391
@subsection With x509 certificates and client verification
1392

    
1393
Certificates can also provide a means to authenticate the client connecting.
1394
The server will request that the client provide a certificate, which it will
1395
then validate against the CA certificate. This is a good choice if deploying
1396
in an environment with a private internal certificate authority.
1397

    
1398
@example
1399
qemu-system-i386 [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
1400
@end example
1401

    
1402

    
1403
@node vnc_sec_certificate_pw
1404
@subsection With x509 certificates, client verification and passwords
1405

    
1406
Finally, the previous method can be combined with VNC password authentication
1407
to provide two layers of authentication for clients.
1408

    
1409
@example
1410
qemu-system-i386 [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
1411
(qemu) change vnc password
1412
Password: ********
1413
(qemu)
1414
@end example
1415

    
1416

    
1417
@node vnc_sec_sasl
1418
@subsection With SASL authentication
1419

    
1420
The SASL authentication method is a VNC extension, that provides an
1421
easily extendable, pluggable authentication method. This allows for
1422
integration with a wide range of authentication mechanisms, such as
1423
PAM, GSSAPI/Kerberos, LDAP, SQL databases, one-time keys and more.
1424
The strength of the authentication depends on the exact mechanism
1425
configured. If the chosen mechanism also provides a SSF layer, then
1426
it will encrypt the datastream as well.
1427

    
1428
Refer to the later docs on how to choose the exact SASL mechanism
1429
used for authentication, but assuming use of one supporting SSF,
1430
then QEMU can be launched with:
1431

    
1432
@example
1433
qemu-system-i386 [...OPTIONS...] -vnc :1,sasl -monitor stdio
1434
@end example
1435

    
1436
@node vnc_sec_certificate_sasl
1437
@subsection With x509 certificates and SASL authentication
1438

    
1439
If the desired SASL authentication mechanism does not supported
1440
SSF layers, then it is strongly advised to run it in combination
1441
with TLS and x509 certificates. This provides securely encrypted
1442
data stream, avoiding risk of compromising of the security
1443
credentials. This can be enabled, by combining the 'sasl' option
1444
with the aforementioned TLS + x509 options:
1445

    
1446
@example
1447
qemu-system-i386 [...OPTIONS...] -vnc :1,tls,x509,sasl -monitor stdio
1448
@end example
1449

    
1450

    
1451
@node vnc_generate_cert
1452
@subsection Generating certificates for VNC
1453

    
1454
The GNU TLS packages provides a command called @code{certtool} which can
1455
be used to generate certificates and keys in PEM format. At a minimum it
1456
is necessary to setup a certificate authority, and issue certificates to
1457
each server. If using certificates for authentication, then each client
1458
will also need to be issued a certificate. The recommendation is for the
1459
server to keep its certificates in either @code{/etc/pki/qemu} or for
1460
unprivileged users in @code{$HOME/.pki/qemu}.
1461

    
1462
@menu
1463
* vnc_generate_ca::
1464
* vnc_generate_server::
1465
* vnc_generate_client::
1466
@end menu
1467
@node vnc_generate_ca
1468
@subsubsection Setup the Certificate Authority
1469

    
1470
This step only needs to be performed once per organization / organizational
1471
unit. First the CA needs a private key. This key must be kept VERY secret
1472
and secure. If this key is compromised the entire trust chain of the certificates
1473
issued with it is lost.
1474

    
1475
@example
1476
# certtool --generate-privkey > ca-key.pem
1477
@end example
1478

    
1479
A CA needs to have a public certificate. For simplicity it can be a self-signed
1480
certificate, or one issue by a commercial certificate issuing authority. To
1481
generate a self-signed certificate requires one core piece of information, the
1482
name of the organization.
1483

    
1484
@example
1485
# cat > ca.info <<EOF
1486
cn = Name of your organization
1487
ca
1488
cert_signing_key
1489
EOF
1490
# certtool --generate-self-signed \
1491
           --load-privkey ca-key.pem
1492
           --template ca.info \
1493
           --outfile ca-cert.pem
1494
@end example
1495

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

    
1499
@node vnc_generate_server
1500
@subsubsection Issuing server certificates
1501

    
1502
Each server (or host) needs to be issued with a key and certificate. When connecting
1503
the certificate is sent to the client which validates it against the CA certificate.
1504
The core piece of information for a server certificate is the hostname. This should
1505
be the fully qualified hostname that the client will connect with, since the client
1506
will typically also verify the hostname in the certificate. On the host holding the
1507
secure CA private key:
1508

    
1509
@example
1510
# cat > server.info <<EOF
1511
organization = Name  of your organization
1512
cn = server.foo.example.com
1513
tls_www_server
1514
encryption_key
1515
signing_key
1516
EOF
1517
# certtool --generate-privkey > server-key.pem
1518
# certtool --generate-certificate \
1519
           --load-ca-certificate ca-cert.pem \
1520
           --load-ca-privkey ca-key.pem \
1521
           --load-privkey server server-key.pem \
1522
           --template server.info \
1523
           --outfile server-cert.pem
1524
@end example
1525

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

    
1530
@node vnc_generate_client
1531
@subsubsection Issuing client certificates
1532

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

    
1539
@example
1540
# cat > client.info <<EOF
1541
country = GB
1542
state = London
1543
locality = London
1544
organiazation = Name of your organization
1545
cn = client.foo.example.com
1546
tls_www_client
1547
encryption_key
1548
signing_key
1549
EOF
1550
# certtool --generate-privkey > client-key.pem
1551
# certtool --generate-certificate \
1552
           --load-ca-certificate ca-cert.pem \
1553
           --load-ca-privkey ca-key.pem \
1554
           --load-privkey client-key.pem \
1555
           --template client.info \
1556
           --outfile client-cert.pem
1557
@end example
1558

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

    
1562

    
1563
@node vnc_setup_sasl
1564

    
1565
@subsection Configuring SASL mechanisms
1566

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

    
1574
The default configuration might contain
1575

    
1576
@example
1577
mech_list: digest-md5
1578
sasldb_path: /etc/qemu/passwd.db
1579
@end example
1580

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

    
1588
A more serious deployment might use Kerberos, which is done with the 'gssapi'
1589
mechanism
1590

    
1591
@example
1592
mech_list: gssapi
1593
keytab: /etc/qemu/krb5.tab
1594
@end example
1595

    
1596
For this to work the administrator of your KDC must generate a Kerberos
1597
principal for the server, with a name of  'qemu/somehost.example.com@@EXAMPLE.COM'
1598
replacing 'somehost.example.com' with the fully qualified host name of the
1599
machine running QEMU, and 'EXAMPLE.COM' with the Kerberos Realm.
1600

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

    
1606
@node gdb_usage
1607
@section GDB usage
1608

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

    
1612
In order to use gdb, launch QEMU with the '-s' option. It will wait for a
1613
gdb connection:
1614
@example
1615
qemu-system-i386 -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1616
                    -append "root=/dev/hda"
1617
Connected to host network interface: tun0
1618
Waiting gdb connection on port 1234
1619
@end example
1620

    
1621
Then launch gdb on the 'vmlinux' executable:
1622
@example
1623
> gdb vmlinux
1624
@end example
1625

    
1626
In gdb, connect to QEMU:
1627
@example
1628
(gdb) target remote localhost:1234
1629
@end example
1630

    
1631
Then you can use gdb normally. For example, type 'c' to launch the kernel:
1632
@example
1633
(gdb) c
1634
@end example
1635

    
1636
Here are some useful tips in order to use gdb on system code:
1637

    
1638
@enumerate
1639
@item
1640
Use @code{info reg} to display all the CPU registers.
1641
@item
1642
Use @code{x/10i $eip} to display the code at the PC position.
1643
@item
1644
Use @code{set architecture i8086} to dump 16 bit code. Then use
1645
@code{x/10i $cs*16+$eip} to dump the code at the PC position.
1646
@end enumerate
1647

    
1648
Advanced debugging options:
1649

    
1650
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:
1651
@table @code
1652
@item maintenance packet qqemu.sstepbits
1653

    
1654
This will display the MASK bits used to control the single stepping IE:
1655
@example
1656
(gdb) maintenance packet qqemu.sstepbits
1657
sending: "qqemu.sstepbits"
1658
received: "ENABLE=1,NOIRQ=2,NOTIMER=4"
1659
@end example
1660
@item maintenance packet qqemu.sstep
1661

    
1662
This will display the current value of the mask used when single stepping IE:
1663
@example
1664
(gdb) maintenance packet qqemu.sstep
1665
sending: "qqemu.sstep"
1666
received: "0x7"
1667
@end example
1668
@item maintenance packet Qqemu.sstep=HEX_VALUE
1669

    
1670
This will change the single step mask, so if wanted to enable IRQs on the single step, but not timers, you would use:
1671
@example
1672
(gdb) maintenance packet Qqemu.sstep=0x5
1673
sending: "qemu.sstep=0x5"
1674
received: "OK"
1675
@end example
1676
@end table
1677

    
1678
@node pcsys_os_specific
1679
@section Target OS specific information
1680

    
1681
@subsection Linux
1682

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

    
1687
When using a 2.6 guest Linux kernel, you should add the option
1688
@code{clock=pit} on the kernel command line because the 2.6 Linux
1689
kernels make very strict real time clock checks by default that QEMU
1690
cannot simulate exactly.
1691

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

    
1698
@subsection Windows
1699

    
1700
If you have a slow host, using Windows 95 is better as it gives the
1701
best speed. Windows 2000 is also a good choice.
1702

    
1703
@subsubsection SVGA graphic modes support
1704

    
1705
QEMU emulates a Cirrus Logic GD5446 Video
1706
card. All Windows versions starting from Windows 95 should recognize
1707
and use this graphic card. For optimal performances, use 16 bit color
1708
depth in the guest and the host OS.
1709

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

    
1715
@subsubsection CPU usage reduction
1716

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

    
1723
@subsubsection Windows 2000 disk full problem
1724

    
1725
Windows 2000 has a bug which gives a disk full problem during its
1726
installation. When installing it, use the @option{-win2k-hack} QEMU
1727
option to enable a specific workaround. After Windows 2000 is
1728
installed, you no longer need this option (this option slows down the
1729
IDE transfers).
1730

    
1731
@subsubsection Windows 2000 shutdown
1732

    
1733
Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1734
can. It comes from the fact that Windows 2000 does not automatically
1735
use the APM driver provided by the BIOS.
1736

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

    
1744
@subsubsection Share a directory between Unix and Windows
1745

    
1746
See @ref{sec_invocation} about the help of the option @option{-smb}.
1747

    
1748
@subsubsection Windows XP security problem
1749

    
1750
Some releases of Windows XP install correctly but give a security
1751
error when booting:
1752
@example
1753
A problem is preventing Windows from accurately checking the
1754
license for this computer. Error code: 0x800703e6.
1755
@end example
1756

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

    
1763
@subsection MS-DOS and FreeDOS
1764

    
1765
@subsubsection CPU usage reduction
1766

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

    
1772
@node QEMU System emulator for non PC targets
1773
@chapter QEMU System emulator for non PC targets
1774

    
1775
QEMU is a generic emulator and it emulates many non PC
1776
machines. Most of the options are similar to the PC emulator. The
1777
differences are mentioned in the following sections.
1778

    
1779
@menu
1780
* PowerPC System emulator::
1781
* Sparc32 System emulator::
1782
* Sparc64 System emulator::
1783
* MIPS System emulator::
1784
* ARM System emulator::
1785
* ColdFire System emulator::
1786
* Cris System emulator::
1787
* Microblaze System emulator::
1788
* SH4 System emulator::
1789
* Xtensa System emulator::
1790
@end menu
1791

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

    
1796
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1797
or PowerMac PowerPC system.
1798

    
1799
QEMU emulates the following PowerMac peripherals:
1800

    
1801
@itemize @minus
1802
@item
1803
UniNorth or Grackle PCI Bridge
1804
@item
1805
PCI VGA compatible card with VESA Bochs Extensions
1806
@item
1807
2 PMAC IDE interfaces with hard disk and CD-ROM support
1808
@item
1809
NE2000 PCI adapters
1810
@item
1811
Non Volatile RAM
1812
@item
1813
VIA-CUDA with ADB keyboard and mouse.
1814
@end itemize
1815

    
1816
QEMU emulates the following PREP peripherals:
1817

    
1818
@itemize @minus
1819
@item
1820
PCI Bridge
1821
@item
1822
PCI VGA compatible card with VESA Bochs Extensions
1823
@item
1824
2 IDE interfaces with hard disk and CD-ROM support
1825
@item
1826
Floppy disk
1827
@item
1828
NE2000 network adapters
1829
@item
1830
Serial port
1831
@item
1832
PREP Non Volatile RAM
1833
@item
1834
PC compatible keyboard and mouse.
1835
@end itemize
1836

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

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

    
1845
@c man begin OPTIONS
1846

    
1847
The following options are specific to the PowerPC emulation:
1848

    
1849
@table @option
1850

    
1851
@item -g @var{W}x@var{H}[x@var{DEPTH}]
1852

    
1853
Set the initial VGA graphic mode. The default is 800x600x15.
1854

    
1855
@item -prom-env @var{string}
1856

    
1857
Set OpenBIOS variables in NVRAM, for example:
1858

    
1859
@example
1860
qemu-system-ppc -prom-env 'auto-boot?=false' \
1861
 -prom-env 'boot-device=hd:2,\yaboot' \
1862
 -prom-env 'boot-args=conf=hd:2,\yaboot.conf'
1863
@end example
1864

    
1865
These variables are not used by Open Hack'Ware.
1866

    
1867
@end table
1868

    
1869
@c man end
1870

    
1871

    
1872
More information is available at
1873
@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
1874

    
1875
@node Sparc32 System emulator
1876
@section Sparc32 System emulator
1877
@cindex system emulation (Sparc32)
1878

    
1879
Use the executable @file{qemu-system-sparc} to simulate the following
1880
Sun4m architecture machines:
1881
@itemize @minus
1882
@item
1883
SPARCstation 4
1884
@item
1885
SPARCstation 5
1886
@item
1887
SPARCstation 10
1888
@item
1889
SPARCstation 20
1890
@item
1891
SPARCserver 600MP
1892
@item
1893
SPARCstation LX
1894
@item
1895
SPARCstation Voyager
1896
@item
1897
SPARCclassic
1898
@item
1899
SPARCbook
1900
@end itemize
1901

    
1902
The emulation is somewhat complete. SMP up to 16 CPUs is supported,
1903
but Linux limits the number of usable CPUs to 4.
1904

    
1905
It's also possible to simulate a SPARCstation 2 (sun4c architecture),
1906
SPARCserver 1000, or SPARCcenter 2000 (sun4d architecture), but these
1907
emulators are not usable yet.
1908

    
1909
QEMU emulates the following sun4m/sun4c/sun4d peripherals:
1910

    
1911
@itemize @minus
1912
@item
1913
IOMMU or IO-UNITs
1914
@item
1915
TCX Frame buffer
1916
@item
1917
Lance (Am7990) Ethernet
1918
@item
1919
Non Volatile RAM M48T02/M48T08
1920
@item
1921
Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1922
and power/reset logic
1923
@item
1924
ESP SCSI controller with hard disk and CD-ROM support
1925
@item
1926
Floppy drive (not on SS-600MP)
1927
@item
1928
CS4231 sound device (only on SS-5, not working yet)
1929
@end itemize
1930

    
1931
The number of peripherals is fixed in the architecture.  Maximum
1932
memory size depends on the machine type, for SS-5 it is 256MB and for
1933
others 2047MB.
1934

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

    
1940
A sample Linux 2.6 series kernel and ram disk image are available on
1941
the QEMU web site. There are still issues with NetBSD and OpenBSD, but
1942
some kernel versions work. Please note that currently Solaris kernels
1943
don't work probably due to interface issues between OpenBIOS and
1944
Solaris.
1945

    
1946
@c man begin OPTIONS
1947

    
1948
The following options are specific to the Sparc32 emulation:
1949

    
1950
@table @option
1951

    
1952
@item -g @var{W}x@var{H}x[x@var{DEPTH}]
1953

    
1954
Set the initial TCX graphic mode. The default is 1024x768x8, currently
1955
the only other possible mode is 1024x768x24.
1956

    
1957
@item -prom-env @var{string}
1958

    
1959
Set OpenBIOS variables in NVRAM, for example:
1960

    
1961
@example
1962
qemu-system-sparc -prom-env 'auto-boot?=false' \
1963
 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
1964
@end example
1965

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

    
1968
Set the emulated machine type. Default is SS-5.
1969

    
1970
@end table
1971

    
1972
@c man end
1973

    
1974
@node Sparc64 System emulator
1975
@section Sparc64 System emulator
1976
@cindex system emulation (Sparc64)
1977

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

    
1983
QEMU emulates the following peripherals:
1984

    
1985
@itemize @minus
1986
@item
1987
UltraSparc IIi APB PCI Bridge
1988
@item
1989
PCI VGA compatible card with VESA Bochs Extensions
1990
@item
1991
PS/2 mouse and keyboard
1992
@item
1993
Non Volatile RAM M48T59
1994
@item
1995
PC-compatible serial ports
1996
@item
1997
2 PCI IDE interfaces with hard disk and CD-ROM support
1998
@item
1999
Floppy disk
2000
@end itemize
2001

    
2002
@c man begin OPTIONS
2003

    
2004
The following options are specific to the Sparc64 emulation:
2005

    
2006
@table @option
2007

    
2008
@item -prom-env @var{string}
2009

    
2010
Set OpenBIOS variables in NVRAM, for example:
2011

    
2012
@example
2013
qemu-system-sparc64 -prom-env 'auto-boot?=false'
2014
@end example
2015

    
2016
@item -M [sun4u|sun4v|Niagara]
2017

    
2018
Set the emulated machine type. The default is sun4u.
2019

    
2020
@end table
2021

    
2022
@c man end
2023

    
2024
@node MIPS System emulator
2025
@section MIPS System emulator
2026
@cindex system emulation (MIPS)
2027

    
2028
Four executables cover simulation of 32 and 64-bit MIPS systems in
2029
both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
2030
@file{qemu-system-mips64} and @file{qemu-system-mips64el}.
2031
Five different machine types are emulated:
2032

    
2033
@itemize @minus
2034
@item
2035
A generic ISA PC-like machine "mips"
2036
@item
2037
The MIPS Malta prototype board "malta"
2038
@item
2039
An ACER Pica "pica61". This machine needs the 64-bit emulator.
2040
@item
2041
MIPS emulator pseudo board "mipssim"
2042
@item
2043
A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
2044
@end itemize
2045

    
2046
The generic emulation is supported by Debian 'Etch' and is able to
2047
install Debian into a virtual disk image. The following devices are
2048
emulated:
2049

    
2050
@itemize @minus
2051
@item
2052
A range of MIPS CPUs, default is the 24Kf
2053
@item
2054
PC style serial port
2055
@item
2056
PC style IDE disk
2057
@item
2058
NE2000 network card
2059
@end itemize
2060

    
2061
The Malta emulation supports the following devices:
2062

    
2063
@itemize @minus
2064
@item
2065
Core board with MIPS 24Kf CPU and Galileo system controller
2066
@item
2067
PIIX4 PCI/USB/SMbus controller
2068
@item
2069
The Multi-I/O chip's serial device
2070
@item
2071
PCI network cards (PCnet32 and others)
2072
@item
2073
Malta FPGA serial device
2074
@item
2075
Cirrus (default) or any other PCI VGA graphics card
2076
@end itemize
2077

    
2078
The ACER Pica emulation supports:
2079

    
2080
@itemize @minus
2081
@item
2082
MIPS R4000 CPU
2083
@item
2084
PC-style IRQ and DMA controllers
2085
@item
2086
PC Keyboard
2087
@item
2088
IDE controller
2089
@end itemize
2090

    
2091
The mipssim pseudo board emulation provides an environment similar
2092
to what the proprietary MIPS emulator uses for running Linux.
2093
It supports:
2094

    
2095
@itemize @minus
2096
@item
2097
A range of MIPS CPUs, default is the 24Kf
2098
@item
2099
PC style serial port
2100
@item
2101
MIPSnet network emulation
2102
@end itemize
2103

    
2104
The MIPS Magnum R4000 emulation supports:
2105

    
2106
@itemize @minus
2107
@item
2108
MIPS R4000 CPU
2109
@item
2110
PC-style IRQ controller
2111
@item
2112
PC Keyboard
2113
@item
2114
SCSI controller
2115
@item
2116
G364 framebuffer
2117
@end itemize
2118

    
2119

    
2120
@node ARM System emulator
2121
@section ARM System emulator
2122
@cindex system emulation (ARM)
2123

    
2124
Use the executable @file{qemu-system-arm} to simulate a ARM
2125
machine. The ARM Integrator/CP board is emulated with the following
2126
devices:
2127

    
2128
@itemize @minus
2129
@item
2130
ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
2131
@item
2132
Two PL011 UARTs
2133
@item
2134
SMC 91c111 Ethernet adapter
2135
@item
2136
PL110 LCD controller
2137
@item
2138
PL050 KMI with PS/2 keyboard and mouse.
2139
@item
2140
PL181 MultiMedia Card Interface with SD card.
2141
@end itemize
2142

    
2143
The ARM Versatile baseboard is emulated with the following devices:
2144

    
2145
@itemize @minus
2146
@item
2147
ARM926E, ARM1136 or Cortex-A8 CPU
2148
@item
2149
PL190 Vectored Interrupt Controller
2150
@item
2151
Four PL011 UARTs
2152
@item
2153
SMC 91c111 Ethernet adapter
2154
@item
2155
PL110 LCD controller
2156
@item
2157
PL050 KMI with PS/2 keyboard and mouse.
2158
@item
2159
PCI host bridge.  Note the emulated PCI bridge only provides access to
2160
PCI memory space.  It does not provide access to PCI IO space.
2161
This means some devices (eg. ne2k_pci NIC) are not usable, and others
2162
(eg. rtl8139 NIC) are only usable when the guest drivers use the memory
2163
mapped control registers.
2164
@item
2165
PCI OHCI USB controller.
2166
@item
2167
LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
2168
@item
2169
PL181 MultiMedia Card Interface with SD card.
2170
@end itemize
2171

    
2172
Several variants of the ARM RealView baseboard are emulated,
2173
including the EB, PB-A8 and PBX-A9.  Due to interactions with the
2174
bootloader, only certain Linux kernel configurations work out
2175
of the box on these boards.
2176

    
2177
Kernels for the PB-A8 board should have CONFIG_REALVIEW_HIGH_PHYS_OFFSET
2178
enabled in the kernel, and expect 512M RAM.  Kernels for The PBX-A9 board
2179
should have CONFIG_SPARSEMEM enabled, CONFIG_REALVIEW_HIGH_PHYS_OFFSET
2180
disabled and expect 1024M RAM.
2181

    
2182
The following devices are emulated:
2183

    
2184
@itemize @minus
2185
@item
2186
ARM926E, ARM1136, ARM11MPCore, Cortex-A8 or Cortex-A9 MPCore CPU
2187
@item
2188
ARM AMBA Generic/Distributed Interrupt Controller
2189
@item
2190
Four PL011 UARTs
2191
@item
2192
SMC 91c111 or SMSC LAN9118 Ethernet adapter
2193
@item
2194
PL110 LCD controller
2195
@item
2196
PL050 KMI with PS/2 keyboard and mouse
2197
@item
2198
PCI host bridge
2199
@item
2200
PCI OHCI USB controller
2201
@item
2202
LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
2203
@item
2204
PL181 MultiMedia Card Interface with SD card.
2205
@end itemize
2206

    
2207
The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
2208
and "Terrier") emulation includes the following peripherals:
2209

    
2210
@itemize @minus
2211
@item
2212
Intel PXA270 System-on-chip (ARM V5TE core)
2213
@item
2214
NAND Flash memory
2215
@item
2216
IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
2217
@item
2218
On-chip OHCI USB controller
2219
@item
2220
On-chip LCD controller
2221
@item
2222
On-chip Real Time Clock
2223
@item
2224
TI ADS7846 touchscreen controller on SSP bus
2225
@item
2226
Maxim MAX1111 analog-digital converter on I@math{^2}C bus
2227
@item
2228
GPIO-connected keyboard controller and LEDs
2229
@item
2230
Secure Digital card connected to PXA MMC/SD host
2231
@item
2232
Three on-chip UARTs
2233
@item
2234
WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
2235
@end itemize
2236

    
2237
The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
2238
following elements:
2239

    
2240
@itemize @minus
2241
@item
2242
Texas Instruments OMAP310 System-on-chip (ARM 925T core)
2243
@item
2244
ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
2245
@item
2246
On-chip LCD controller
2247
@item
2248
On-chip Real Time Clock
2249
@item
2250
TI TSC2102i touchscreen controller / analog-digital converter / Audio
2251
CODEC, connected through MicroWire and I@math{^2}S busses
2252
@item
2253
GPIO-connected matrix keypad
2254
@item
2255
Secure Digital card connected to OMAP MMC/SD host
2256
@item
2257
Three on-chip UARTs
2258
@end itemize
2259

    
2260
Nokia N800 and N810 internet tablets (known also as RX-34 and RX-44 / 48)
2261
emulation supports the following elements:
2262

    
2263
@itemize @minus
2264
@item
2265
Texas Instruments OMAP2420 System-on-chip (ARM 1136 core)
2266
@item
2267
RAM and non-volatile OneNAND Flash memories
2268
@item
2269
Display connected to EPSON remote framebuffer chip and OMAP on-chip
2270
display controller and a LS041y3 MIPI DBI-C controller
2271
@item
2272
TI TSC2301 (in N800) and TI TSC2005 (in N810) touchscreen controllers
2273
driven through SPI bus
2274
@item
2275
National Semiconductor LM8323-controlled qwerty keyboard driven
2276
through I@math{^2}C bus
2277
@item
2278
Secure Digital card connected to OMAP MMC/SD host
2279
@item
2280
Three OMAP on-chip UARTs and on-chip STI debugging console
2281
@item
2282
A Bluetooth(R) transceiver and HCI connected to an UART
2283
@item
2284
Mentor Graphics "Inventra" dual-role USB controller embedded in a TI
2285
TUSB6010 chip - only USB host mode is supported
2286
@item
2287
TI TMP105 temperature sensor driven through I@math{^2}C bus
2288
@item
2289
TI TWL92230C power management companion with an RTC on I@math{^2}C bus
2290
@item
2291
Nokia RETU and TAHVO multi-purpose chips with an RTC, connected
2292
through CBUS
2293
@end itemize
2294

    
2295
The Luminary Micro Stellaris LM3S811EVB emulation includes the following
2296
devices:
2297

    
2298
@itemize @minus
2299
@item
2300
Cortex-M3 CPU core.
2301
@item
2302
64k Flash and 8k SRAM.
2303
@item
2304
Timers, UARTs, ADC and I@math{^2}C interface.
2305
@item
2306
OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
2307
@end itemize
2308

    
2309
The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
2310
devices:
2311

    
2312
@itemize @minus
2313
@item
2314
Cortex-M3 CPU core.
2315
@item
2316
256k Flash and 64k SRAM.
2317
@item
2318
Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
2319
@item
2320
OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
2321
@end itemize
2322

    
2323
The Freecom MusicPal internet radio emulation includes the following
2324
elements:
2325

    
2326
@itemize @minus
2327
@item
2328
Marvell MV88W8618 ARM core.
2329
@item
2330
32 MB RAM, 256 KB SRAM, 8 MB flash.
2331
@item
2332
Up to 2 16550 UARTs
2333
@item
2334
MV88W8xx8 Ethernet controller
2335
@item
2336
MV88W8618 audio controller, WM8750 CODEC and mixer
2337
@item
2338
128×64 display with brightness control
2339
@item
2340
2 buttons, 2 navigation wheels with button function
2341
@end itemize
2342

    
2343
The Siemens SX1 models v1 and v2 (default) basic emulation.
2344
The emulation includes the following elements:
2345

    
2346
@itemize @minus
2347
@item
2348
Texas Instruments OMAP310 System-on-chip (ARM 925T core)
2349
@item
2350
ROM and RAM memories (ROM firmware image can be loaded with -pflash)
2351
V1
2352
1 Flash of 16MB and 1 Flash of 8MB
2353
V2
2354
1 Flash of 32MB
2355
@item
2356
On-chip LCD controller
2357
@item
2358
On-chip Real Time Clock
2359
@item
2360
Secure Digital card connected to OMAP MMC/SD host
2361
@item
2362
Three on-chip UARTs
2363
@end itemize
2364

    
2365
A Linux 2.6 test image is available on the QEMU web site. More
2366
information is available in the QEMU mailing-list archive.
2367

    
2368
@c man begin OPTIONS
2369

    
2370
The following options are specific to the ARM emulation:
2371

    
2372
@table @option
2373

    
2374
@item -semihosting
2375
Enable semihosting syscall emulation.
2376

    
2377
On ARM this implements the "Angel" interface.
2378

    
2379
Note that this allows guest direct access to the host filesystem,
2380
so should only be used with trusted guest OS.
2381

    
2382
@end table
2383

    
2384
@node ColdFire System emulator
2385
@section ColdFire System emulator
2386
@cindex system emulation (ColdFire)
2387
@cindex system emulation (M68K)
2388

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

    
2392
The M5208EVB emulation includes the following devices:
2393

    
2394
@itemize @minus
2395
@item
2396
MCF5208 ColdFire V2 Microprocessor (ISA A+ with EMAC).
2397
@item
2398
Three Two on-chip UARTs.
2399
@item
2400
Fast Ethernet Controller (FEC)
2401
@end itemize
2402

    
2403
The AN5206 emulation includes the following devices:
2404

    
2405
@itemize @minus
2406
@item
2407
MCF5206 ColdFire V2 Microprocessor.
2408
@item
2409
Two on-chip UARTs.
2410
@end itemize
2411

    
2412
@c man begin OPTIONS
2413

    
2414
The following options are specific to the ColdFire emulation:
2415

    
2416
@table @option
2417

    
2418
@item -semihosting
2419
Enable semihosting syscall emulation.
2420

    
2421
On M68K this implements the "ColdFire GDB" interface used by libgloss.
2422

    
2423
Note that this allows guest direct access to the host filesystem,
2424
so should only be used with trusted guest OS.
2425

    
2426
@end table
2427

    
2428
@node Cris System emulator
2429
@section Cris System emulator
2430
@cindex system emulation (Cris)
2431

    
2432
TODO
2433

    
2434
@node Microblaze System emulator
2435
@section Microblaze System emulator
2436
@cindex system emulation (Microblaze)
2437

    
2438
TODO
2439

    
2440
@node SH4 System emulator
2441
@section SH4 System emulator
2442
@cindex system emulation (SH4)
2443

    
2444
TODO
2445

    
2446
@node Xtensa System emulator
2447
@section Xtensa System emulator
2448
@cindex system emulation (Xtensa)
2449

    
2450
Two executables cover simulation of both Xtensa endian options,
2451
@file{qemu-system-xtensa} and @file{qemu-system-xtensaeb}.
2452
Two different machine types are emulated:
2453

    
2454
@itemize @minus
2455
@item
2456
Xtensa emulator pseudo board "sim"
2457
@item
2458
Avnet LX60/LX110/LX200 board
2459
@end itemize
2460

    
2461
The sim pseudo board emulation provides an environment similar
2462
to one provided by the proprietary Tensilica ISS.
2463
It supports:
2464

    
2465
@itemize @minus
2466
@item
2467
A range of Xtensa CPUs, default is the DC232B
2468
@item
2469
Console and filesystem access via semihosting calls
2470
@end itemize
2471

    
2472
The Avnet LX60/LX110/LX200 emulation supports:
2473

    
2474
@itemize @minus
2475
@item
2476
A range of Xtensa CPUs, default is the DC232B
2477
@item
2478
16550 UART
2479
@item
2480
OpenCores 10/100 Mbps Ethernet MAC
2481
@end itemize
2482

    
2483
@c man begin OPTIONS
2484

    
2485
The following options are specific to the Xtensa emulation:
2486

    
2487
@table @option
2488

    
2489
@item -semihosting
2490
Enable semihosting syscall emulation.
2491

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

    
2495
Note that this allows guest direct access to the host filesystem,
2496
so should only be used with trusted guest OS.
2497

    
2498
@end table
2499
@node QEMU User space emulator
2500
@chapter QEMU User space emulator
2501

    
2502
@menu
2503
* Supported Operating Systems ::
2504
* Linux User space emulator::
2505
* BSD User space emulator ::
2506
@end menu
2507

    
2508
@node Supported Operating Systems
2509
@section Supported Operating Systems
2510

    
2511
The following OS are supported in user space emulation:
2512

    
2513
@itemize @minus
2514
@item
2515
Linux (referred as qemu-linux-user)
2516
@item
2517
BSD (referred as qemu-bsd-user)
2518
@end itemize
2519

    
2520
@node Linux User space emulator
2521
@section Linux User space emulator
2522

    
2523
@menu
2524
* Quick Start::
2525
* Wine launch::
2526
* Command line options::
2527
* Other binaries::
2528
@end menu
2529

    
2530
@node Quick Start
2531
@subsection Quick Start
2532

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

    
2536
@itemize
2537

    
2538
@item On x86, you can just try to launch any process by using the native
2539
libraries:
2540

    
2541
@example
2542
qemu-i386 -L / /bin/ls
2543
@end example
2544

    
2545
@code{-L /} tells that the x86 dynamic linker must be searched with a
2546
@file{/} prefix.
2547

    
2548
@item Since QEMU is also a linux process, you can launch QEMU with
2549
QEMU (NOTE: you can only do that if you compiled QEMU from the sources):
2550

    
2551
@example
2552
qemu-i386 -L / qemu-i386 -L / /bin/ls
2553
@end example
2554

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

    
2559
@example
2560
unset LD_LIBRARY_PATH
2561
@end example
2562

    
2563
Then you can launch the precompiled @file{ls} x86 executable:
2564

    
2565
@example
2566
qemu-i386 tests/i386/ls
2567
@end example
2568
You can look at @file{scripts/qemu-binfmt-conf.sh} so that
2569
QEMU is automatically launched by the Linux kernel when you try to
2570
launch x86 executables. It requires the @code{binfmt_misc} module in the
2571
Linux kernel.
2572

    
2573
@item The x86 version of QEMU is also included. You can try weird things such as:
2574
@example
2575
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
2576
          /usr/local/qemu-i386/bin/ls-i386
2577
@end example
2578

    
2579
@end itemize
2580

    
2581
@node Wine launch
2582
@subsection Wine launch
2583

    
2584
@itemize
2585

    
2586
@item Ensure that you have a working QEMU with the x86 glibc
2587
distribution (see previous section). In order to verify it, you must be
2588
able to do:
2589

    
2590
@example
2591
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
2592
@end example
2593

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

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

    
2601
@item Then you can try the example @file{putty.exe}:
2602

    
2603
@example
2604
qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
2605
          /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
2606
@end example
2607

    
2608
@end itemize
2609

    
2610
@node Command line options
2611
@subsection Command line options
2612

    
2613
@example
2614
usage: qemu-i386 [-h] [-d] [-L path] [-s size] [-cpu model] [-g port] [-B offset] [-R size] program [arguments...]
2615
@end example
2616

    
2617
@table @option
2618
@item -h
2619
Print the help
2620
@item -L path
2621
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
2622
@item -s size
2623
Set the x86 stack size in bytes (default=524288)
2624
@item -cpu model
2625
Select CPU model (-cpu help for list and additional feature selection)
2626
@item -ignore-environment
2627
Start with an empty environment. Without this option,
2628
the initial environment is a copy of the caller's environment.
2629
@item -E @var{var}=@var{value}
2630
Set environment @var{var} to @var{value}.
2631
@item -U @var{var}
2632
Remove @var{var} from the environment.
2633
@item -B offset
2634
Offset guest address by the specified number of bytes.  This is useful when
2635
the address region required by guest applications is reserved on the host.
2636
This option is currently only supported on some hosts.
2637
@item -R size
2638
Pre-allocate a guest virtual address space of the given size (in bytes).
2639
"G", "M", and "k" suffixes may be used when specifying the size.
2640
@end table
2641

    
2642
Debug options:
2643

    
2644
@table @option
2645
@item -d item1,...
2646
Activate logging of the specified items (use '-d help' for a list of log items)
2647
@item -p pagesize
2648
Act as if the host page size was 'pagesize' bytes
2649
@item -g port
2650
Wait gdb connection to port
2651
@item -singlestep
2652
Run the emulation in single step mode.
2653
@end table
2654

    
2655
Environment variables:
2656

    
2657
@table @env
2658
@item QEMU_STRACE
2659
Print system calls and arguments similar to the 'strace' program
2660
(NOTE: the actual 'strace' program will not work because the user
2661
space emulator hasn't implemented ptrace).  At the moment this is
2662
incomplete.  All system calls that don't have a specific argument
2663
format are printed with information for six arguments.  Many
2664
flag-style arguments don't have decoders and will show up as numbers.
2665
@end table
2666

    
2667
@node Other binaries
2668
@subsection Other binaries
2669

    
2670
@cindex user mode (Alpha)
2671
@command{qemu-alpha} TODO.
2672

    
2673
@cindex user mode (ARM)
2674
@command{qemu-armeb} TODO.
2675

    
2676
@cindex user mode (ARM)
2677
@command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF
2678
binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
2679
configurations), and arm-uclinux bFLT format binaries.
2680

    
2681
@cindex user mode (ColdFire)
2682
@cindex user mode (M68K)
2683
@command{qemu-m68k} is capable of running semihosted binaries using the BDM
2684
(m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
2685
coldfire uClinux bFLT format binaries.
2686

    
2687
The binary format is detected automatically.
2688

    
2689
@cindex user mode (Cris)
2690
@command{qemu-cris} TODO.
2691

    
2692
@cindex user mode (i386)
2693
@command{qemu-i386} TODO.
2694
@command{qemu-x86_64} TODO.
2695

    
2696
@cindex user mode (Microblaze)
2697
@command{qemu-microblaze} TODO.
2698

    
2699
@cindex user mode (MIPS)
2700
@command{qemu-mips} TODO.
2701
@command{qemu-mipsel} TODO.
2702

    
2703
@cindex user mode (PowerPC)
2704
@command{qemu-ppc64abi32} TODO.
2705
@command{qemu-ppc64} TODO.
2706
@command{qemu-ppc} TODO.
2707

    
2708
@cindex user mode (SH4)
2709
@command{qemu-sh4eb} TODO.
2710
@command{qemu-sh4} TODO.
2711

    
2712
@cindex user mode (SPARC)
2713
@command{qemu-sparc} can execute Sparc32 binaries (Sparc32 CPU, 32 bit ABI).
2714

    
2715
@command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries
2716
(Sparc64 CPU, 32 bit ABI).
2717

    
2718
@command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
2719
SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
2720

    
2721
@node BSD User space emulator
2722
@section BSD User space emulator
2723

    
2724
@menu
2725
* BSD Status::
2726
* BSD Quick Start::
2727
* BSD Command line options::
2728
@end menu
2729

    
2730
@node BSD Status
2731
@subsection BSD Status
2732

    
2733
@itemize @minus
2734
@item
2735
target Sparc64 on Sparc64: Some trivial programs work.
2736
@end itemize
2737

    
2738
@node BSD Quick Start
2739
@subsection Quick Start
2740

    
2741
In order to launch a BSD process, QEMU needs the process executable
2742
itself and all the target dynamic libraries used by it.
2743

    
2744
@itemize
2745

    
2746
@item On Sparc64, you can just try to launch any process by using the native
2747
libraries:
2748

    
2749
@example
2750
qemu-sparc64 /bin/ls
2751
@end example
2752

    
2753
@end itemize
2754

    
2755
@node BSD Command line options
2756
@subsection Command line options
2757

    
2758
@example
2759
usage: qemu-sparc64 [-h] [-d] [-L path] [-s size] [-bsd type] program [arguments...]
2760
@end example
2761

    
2762
@table @option
2763
@item -h
2764
Print the help
2765
@item -L path
2766
Set the library root path (default=/)
2767
@item -s size
2768
Set the stack size in bytes (default=524288)
2769
@item -ignore-environment
2770
Start with an empty environment. Without this option,
2771
the initial environment is a copy of the caller's environment.
2772
@item -E @var{var}=@var{value}
2773
Set environment @var{var} to @var{value}.
2774
@item -U @var{var}
2775
Remove @var{var} from the environment.
2776
@item -bsd type
2777
Set the type of the emulated BSD Operating system. Valid values are
2778
FreeBSD, NetBSD and OpenBSD (default).
2779
@end table
2780

    
2781
Debug options:
2782

    
2783
@table @option
2784
@item -d item1,...
2785
Activate logging of the specified items (use '-d help' for a list of log items)
2786
@item -p pagesize
2787
Act as if the host page size was 'pagesize' bytes
2788
@item -singlestep
2789
Run the emulation in single step mode.
2790
@end table
2791

    
2792
@node compilation
2793
@chapter Compilation from the sources
2794

    
2795
@menu
2796
* Linux/Unix::
2797
* Windows::
2798
* Cross compilation for Windows with Linux::
2799
* Mac OS X::
2800
* Make targets::
2801
@end menu
2802

    
2803
@node Linux/Unix
2804
@section Linux/Unix
2805

    
2806
@subsection Compilation
2807

    
2808
First you must decompress the sources:
2809
@example
2810
cd /tmp
2811
tar zxvf qemu-x.y.z.tar.gz
2812
cd qemu-x.y.z
2813
@end example
2814

    
2815
Then you configure QEMU and build it (usually no options are needed):
2816
@example
2817
./configure
2818
make
2819
@end example
2820

    
2821
Then type as root user:
2822
@example
2823
make install
2824
@end example
2825
to install QEMU in @file{/usr/local}.
2826

    
2827
@node Windows
2828
@section Windows
2829

    
2830
@itemize
2831
@item Install the current versions of MSYS and MinGW from
2832
@url{http://www.mingw.org/}. You can find detailed installation
2833
instructions in the download section and the FAQ.
2834

    
2835
@item Download
2836
the MinGW development library of SDL 1.2.x
2837
(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
2838
@url{http://www.libsdl.org}. Unpack it in a temporary place and
2839
edit the @file{sdl-config} script so that it gives the
2840
correct SDL directory when invoked.
2841

    
2842
@item Install the MinGW version of zlib and make sure
2843
@file{zlib.h} and @file{libz.dll.a} are in
2844
MinGW's default header and linker search paths.
2845

    
2846
@item Extract the current version of QEMU.
2847

    
2848
@item Start the MSYS shell (file @file{msys.bat}).
2849

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

    
2854
@item You can install QEMU in @file{Program Files/QEMU} by typing
2855
@file{make install}. Don't forget to copy @file{SDL.dll} in
2856
@file{Program Files/QEMU}.
2857

    
2858
@end itemize
2859

    
2860
@node Cross compilation for Windows with Linux
2861
@section Cross compilation for Windows with Linux
2862

    
2863
@itemize
2864
@item
2865
Install the MinGW cross compilation tools available at
2866
@url{http://www.mingw.org/}.
2867

    
2868
@item Download
2869
the MinGW development library of SDL 1.2.x
2870
(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
2871
@url{http://www.libsdl.org}. Unpack it in a temporary place and
2872
edit the @file{sdl-config} script so that it gives the
2873
correct SDL directory when invoked.  Set up the @code{PATH} environment
2874
variable so that @file{sdl-config} can be launched by
2875
the QEMU configuration script.
2876

    
2877
@item Install the MinGW version of zlib and make sure
2878
@file{zlib.h} and @file{libz.dll.a} are in
2879
MinGW's default header and linker search paths.
2880

    
2881
@item
2882
Configure QEMU for Windows cross compilation:
2883
@example
2884
PATH=/usr/i686-pc-mingw32/sys-root/mingw/bin:$PATH ./configure --cross-prefix='i686-pc-mingw32-'
2885
@end example
2886
The example assumes @file{sdl-config} is installed under @file{/usr/i686-pc-mingw32/sys-root/mingw/bin} and
2887
MinGW cross compilation tools have names like @file{i686-pc-mingw32-gcc} and @file{i686-pc-mingw32-strip}.
2888
We set the @code{PATH} environment variable to ensure the MinGW version of @file{sdl-config} is used and
2889
use --cross-prefix to specify the name of the cross compiler.
2890
You can also use --prefix to set the Win32 install path which defaults to @file{c:/Program Files/QEMU}.
2891

    
2892
Under Fedora Linux, you can run:
2893
@example
2894
yum -y install mingw32-gcc mingw32-SDL mingw32-zlib
2895
@end example
2896
to get a suitable cross compilation environment.
2897

    
2898
@item You can install QEMU in the installation directory by typing
2899
@code{make install}. Don't forget to copy @file{SDL.dll} and @file{zlib1.dll} into the
2900
installation directory.
2901

    
2902
@end itemize
2903

    
2904
Wine can be used to launch the resulting qemu-system-i386.exe
2905
and all other qemu-system-@var{target}.exe compiled for Win32.
2906

    
2907
@node Mac OS X
2908
@section Mac OS X
2909

    
2910
The Mac OS X patches are not fully merged in QEMU, so you should look
2911
at the QEMU mailing list archive to have all the necessary
2912
information.
2913

    
2914
@node Make targets
2915
@section Make targets
2916

    
2917
@table @code
2918

    
2919
@item make
2920
@item make all
2921
Make everything which is typically needed.
2922

    
2923
@item install
2924
TODO
2925

    
2926
@item install-doc
2927
TODO
2928

    
2929
@item make clean
2930
Remove most files which were built during make.
2931

    
2932
@item make distclean
2933
Remove everything which was built during make.
2934

    
2935
@item make dvi
2936
@item make html
2937
@item make info
2938
@item make pdf
2939
Create documentation in dvi, html, info or pdf format.
2940

    
2941
@item make cscope
2942
TODO
2943

    
2944
@item make defconfig
2945
(Re-)create some build configuration files.
2946
User made changes will be overwritten.
2947

    
2948
@item tar
2949
@item tarbin
2950
TODO
2951

    
2952
@end table
2953

    
2954
@node License
2955
@appendix License
2956

    
2957
QEMU is a trademark of Fabrice Bellard.
2958

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

    
2962
TODO (refer to file LICENSE, include it, include the GPL?)
2963

    
2964
@node Index
2965
@appendix Index
2966
@menu
2967
* Concept Index::
2968
* Function Index::
2969
* Keystroke Index::
2970
* Program Index::
2971
* Data Type Index::
2972
* Variable Index::
2973
@end menu
2974

    
2975
@node Concept Index
2976
@section Concept Index
2977
This is the main index. Should we combine all keywords in one index? TODO
2978
@printindex cp
2979

    
2980
@node Function Index
2981
@section Function Index
2982
This index could be used for command line options and monitor functions.
2983
@printindex fn
2984

    
2985
@node Keystroke Index
2986
@section Keystroke Index
2987

    
2988
This is a list of all keystrokes which have a special function
2989
in system emulation.
2990

    
2991
@printindex ky
2992

    
2993
@node Program Index
2994
@section Program Index
2995
@printindex pg
2996

    
2997
@node Data Type Index
2998
@section Data Type Index
2999

    
3000
This index could be used for qdev device names and options.
3001

    
3002
@printindex tp
3003

    
3004
@node Variable Index
3005
@section Variable Index
3006
@printindex vr
3007

    
3008
@bye