Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 1b8bbb46

History | View | Annotate | Download (88.1 kB)

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

    
5
@documentlanguage en
6
@documentencoding UTF-8
7

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

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

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

    
29
@ifnottex
30
@node Top
31
@top
32

    
33
@menu
34
* Introduction::
35
* Installation::
36
* QEMU PC System emulator::
37
* QEMU System emulator for non PC targets::
38
* QEMU User space emulator::
39
* compilation:: Compilation from the sources
40
* License::
41
* Index::
42
@end menu
43
@end ifnottex
44

    
45
@contents
46

    
47
@node Introduction
48
@chapter Introduction
49

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

    
54
@node intro_features
55
@section Features
56

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

    
60
QEMU has two operating modes:
61

    
62
@itemize
63
@cindex operating modes
64

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

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

    
79
@end itemize
80

    
81
QEMU can run without 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
You can use an unix socket instead of an inet socket:
869

    
870
@example
871
qemu-system-i386 sheepdog+unix:///@var{image}?socket=@var{path}
872
@end example
873

    
874
If the Sheepdog daemon doesn't run on the local host, you need to
875
specify one of the Sheepdog servers to connect to.
876
@example
877
qemu-img create sheepdog://@var{hostname}:@var{port}/@var{image} @var{size}
878
qemu-system-i386 sheepdog://@var{hostname}:@var{port}/@var{image}
879
@end example
880

    
881
@node disk_images_iscsi
882
@subsection iSCSI LUNs
883

    
884
iSCSI is a popular protocol used to access SCSI devices across a computer
885
network.
886

    
887
There are two different ways iSCSI devices can be used by QEMU.
888

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

    
893
The second method involves using the iSCSI initiator that is built into
894
QEMU. This provides a mechanism that works the same way regardless of which
895
host OS you are running QEMU on. This section will describe this second method
896
of using iSCSI together with QEMU.
897

    
898
In QEMU, iSCSI devices are described using special iSCSI URLs
899

    
900
@example
901
URL syntax:
902
iscsi://[<username>[%<password>]@@]<host>[:<port>]/<target-iqn-name>/<lun>
903
@end example
904

    
905
Username and password are optional and only used if your target is set up
906
using CHAP authentication for access control.
907
Alternatively the username and password can also be set via environment
908
variables to have these not show up in the process list
909

    
910
@example
911
export LIBISCSI_CHAP_USERNAME=<username>
912
export LIBISCSI_CHAP_PASSWORD=<password>
913
iscsi://<host>/<target-iqn-name>/<lun>
914
@end example
915

    
916
Various session related parameters can be set via special options, either
917
in a configuration file provided via '-readconfig' or directly on the
918
command line.
919

    
920
If the initiator-name is not specified qemu will use a default name
921
of 'iqn.2008-11.org.linux-kvm[:<name>'] where <name> is the name of the
922
virtual machine.
923

    
924

    
925
@example
926
Setting a specific initiator name to use when logging in to the target
927
-iscsi initiator-name=iqn.qemu.test:my-initiator
928
@end example
929

    
930
@example
931
Controlling which type of header digest to negotiate with the target
932
-iscsi header-digest=CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
933
@end example
934

    
935
These can also be set via a configuration file
936
@example
937
[iscsi]
938
  user = "CHAP username"
939
  password = "CHAP password"
940
  initiator-name = "iqn.qemu.test:my-initiator"
941
  # header digest is one of CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
942
  header-digest = "CRC32C"
943
@end example
944

    
945

    
946
Setting the target name allows different options for different targets
947
@example
948
[iscsi "iqn.target.name"]
949
  user = "CHAP username"
950
  password = "CHAP password"
951
  initiator-name = "iqn.qemu.test:my-initiator"
952
  # header digest is one of CRC32C|CRC32C-NONE|NONE-CRC32C|NONE
953
  header-digest = "CRC32C"
954
@end example
955

    
956

    
957
Howto use a configuration file to set iSCSI configuration options:
958
@example
959
cat >iscsi.conf <<EOF
960
[iscsi]
961
  user = "me"
962
  password = "my password"
963
  initiator-name = "iqn.qemu.test:my-initiator"
964
  header-digest = "CRC32C"
965
EOF
966

    
967
qemu-system-i386 -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
968
    -readconfig iscsi.conf
969
@end example
970

    
971

    
972
Howto set up a simple iSCSI target on loopback and accessing it via QEMU:
973
@example
974
This example shows how to set up an iSCSI target with one CDROM and one DISK
975
using the Linux STGT software target. This target is available on Red Hat based
976
systems as the package 'scsi-target-utils'.
977

    
978
tgtd --iscsi portal=127.0.0.1:3260
979
tgtadm --lld iscsi --op new --mode target --tid 1 -T iqn.qemu.test
980
tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 1 \
981
    -b /IMAGES/disk.img --device-type=disk
982
tgtadm --lld iscsi --mode logicalunit --op new --tid 1 --lun 2 \
983
    -b /IMAGES/cd.iso --device-type=cd
984
tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL
985

    
986
qemu-system-i386 -iscsi initiator-name=iqn.qemu.test:my-initiator \
987
    -boot d -drive file=iscsi://127.0.0.1/iqn.qemu.test/1 \
988
    -cdrom iscsi://127.0.0.1/iqn.qemu.test/2
989
@end example
990

    
991
@node disk_images_gluster
992
@subsection GlusterFS disk images
993

    
994
GlusterFS is an user space distributed file system.
995

    
996
You can boot from the GlusterFS disk image with the command:
997
@example
998
qemu-system-x86_64 -drive file=gluster[+@var{transport}]://[@var{server}[:@var{port}]]/@var{volname}/@var{image}[?socket=...]
999
@end example
1000

    
1001
@var{gluster} is the protocol.
1002

    
1003
@var{transport} specifies the transport type used to connect to gluster
1004
management daemon (glusterd). Valid transport types are
1005
tcp, unix and rdma. If a transport type isn't specified, then tcp
1006
type is assumed.
1007

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

    
1015
@var{port} is the port number on which glusterd is listening. This is optional
1016
and if not specified, QEMU will send 0 which will make gluster to use the
1017
default port. If the transport type is unix, then @var{port} should not be
1018
specified.
1019

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

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

    
1024
You can create a GlusterFS disk image with the command:
1025
@example
1026
qemu-img create gluster://@var{server}/@var{volname}/@var{image} @var{size}
1027
@end example
1028

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

    
1041
@node pcsys_network
1042
@section Network emulation
1043

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

    
1052
@subsection VLANs
1053

    
1054
QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
1055
connection between several network devices. These devices can be for
1056
example QEMU virtual Ethernet cards or virtual Host ethernet devices
1057
(TAP devices).
1058

    
1059
@subsection Using TAP network interfaces
1060

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

    
1065
@subsubsection Linux host
1066

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

    
1074
See @ref{sec_invocation} to have examples of command lines using the
1075
TAP network interfaces.
1076

    
1077
@subsubsection Windows host
1078

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

    
1084
@subsection Using the user mode network stack
1085

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

    
1091
@example
1092

    
1093
         QEMU VLAN      <------>  Firewall/DHCP server <-----> Internet
1094
                           |          (10.0.2.2)
1095
                           |
1096
                           ---->  DNS server (10.0.2.3)
1097
                           |
1098
                           ---->  SMB server (10.0.2.4)
1099
@end example
1100

    
1101
The QEMU VM behaves as if it was behind a firewall which blocks all
1102
incoming connections. You can use a DHCP client to automatically
1103
configure the network in the QEMU VM. The DHCP server assign addresses
1104
to the hosts starting from 10.0.2.15.
1105

    
1106
In order to check that the user mode network is working, you can ping
1107
the address 10.0.2.2 and verify that you got an address in the range
1108
10.0.2.x from the QEMU virtual DHCP server.
1109

    
1110
Note that @code{ping} is not supported reliably to the internet as it
1111
would require root privileges. It means you can only ping the local
1112
router (10.0.2.2).
1113

    
1114
When using the built-in TFTP server, the router is also the TFTP
1115
server.
1116

    
1117
When using the @option{-redir} option, TCP or UDP connections can be
1118
redirected from the host to the guest. It allows for example to
1119
redirect X11, telnet or SSH connections.
1120

    
1121
@subsection Connecting VLANs between QEMU instances
1122

    
1123
Using the @option{-net socket} option, it is possible to make VLANs
1124
that span several QEMU instances. See @ref{sec_invocation} to have a
1125
basic example.
1126

    
1127
@node pcsys_other_devs
1128
@section Other Devices
1129

    
1130
@subsection Inter-VM Shared Memory device
1131

    
1132
With KVM enabled on a Linux host, a shared memory device is available.  Guests
1133
map a POSIX shared memory region into the guest as a PCI device that enables
1134
zero-copy communication to the application level of the guests.  The basic
1135
syntax is:
1136

    
1137
@example
1138
qemu-system-i386 -device ivshmem,size=<size in format accepted by -m>[,shm=<shm name>]
1139
@end example
1140

    
1141
If desired, interrupts can be sent between guest VMs accessing the same shared
1142
memory region.  Interrupt support requires using a shared memory server and
1143
using a chardev socket to connect to it.  The code for the shared memory server
1144
is qemu.git/contrib/ivshmem-server.  An example syntax when using the shared
1145
memory server is:
1146

    
1147
@example
1148
qemu-system-i386 -device ivshmem,size=<size in format accepted by -m>[,chardev=<id>]
1149
                 [,msi=on][,ioeventfd=on][,vectors=n][,role=peer|master]
1150
qemu-system-i386 -chardev socket,path=<path>,id=<id>
1151
@end example
1152

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

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

    
1171
@node direct_linux_boot
1172
@section Direct Linux Boot
1173

    
1174
This section explains how to launch a Linux kernel inside QEMU without
1175
having to make a full bootable image. It is very useful for fast Linux
1176
kernel testing.
1177

    
1178
The syntax is:
1179
@example
1180
qemu-system-i386 -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1181
@end example
1182

    
1183
Use @option{-kernel} to provide the Linux kernel image and
1184
@option{-append} to give the kernel command line arguments. The
1185
@option{-initrd} option can be used to provide an INITRD image.
1186

    
1187
When using the direct Linux boot, a disk image for the first hard disk
1188
@file{hda} is required because its boot sector is used to launch the
1189
Linux kernel.
1190

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

    
1199
Use @key{Ctrl-a c} to switch between the serial console and the
1200
monitor (@pxref{pcsys_keys}).
1201

    
1202
@node pcsys_usb
1203
@section USB emulation
1204

    
1205
QEMU emulates a PCI UHCI USB controller. You can virtually plug
1206
virtual USB devices or real host USB devices (experimental, works only
1207
on Linux hosts).  QEMU will automatically create and connect virtual USB hubs
1208
as necessary to connect multiple USB devices.
1209

    
1210
@menu
1211
* usb_devices::
1212
* host_usb_devices::
1213
@end menu
1214
@node usb_devices
1215
@subsection Connecting USB devices
1216

    
1217
USB devices can be connected with the @option{-usbdevice} commandline option
1218
or the @code{usb_add} monitor command.  Available devices are:
1219

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

    
1273
@node host_usb_devices
1274
@subsection Using host USB devices on a Linux host
1275

    
1276
WARNING: this is an experimental feature. QEMU will slow down when
1277
using it. USB devices requiring real time streaming (i.e. USB Video
1278
Cameras) are not supported yet.
1279

    
1280
@enumerate
1281
@item If you use an early Linux 2.4 kernel, verify that no Linux driver
1282
is actually using the USB device. A simple way to do that is simply to
1283
disable the corresponding kernel module by renaming it from @file{mydriver.o}
1284
to @file{mydriver.o.disabled}.
1285

    
1286
@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1287
@example
1288
ls /proc/bus/usb
1289
001  devices  drivers
1290
@end example
1291

    
1292
@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:
1293
@example
1294
chown -R myuid /proc/bus/usb
1295
@end example
1296

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

    
1306
@item Add the device in QEMU by using:
1307
@example
1308
usb_add host:1234:5678
1309
@end example
1310

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

    
1314
@item Now you can try to use the host USB device in QEMU.
1315

    
1316
@end enumerate
1317

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

    
1321
@node vnc_security
1322
@section VNC security
1323

    
1324
The VNC server capability provides access to the graphical console
1325
of the guest VM across the network. This has a number of security
1326
considerations depending on the deployment scenarios.
1327

    
1328
@menu
1329
* vnc_sec_none::
1330
* vnc_sec_password::
1331
* vnc_sec_certificate::
1332
* vnc_sec_certificate_verify::
1333
* vnc_sec_certificate_pw::
1334
* vnc_sec_sasl::
1335
* vnc_sec_certificate_sasl::
1336
* vnc_generate_cert::
1337
* vnc_setup_sasl::
1338
@end menu
1339
@node vnc_sec_none
1340
@subsection Without passwords
1341

    
1342
The simplest VNC server setup does not include any form of authentication.
1343
For this setup it is recommended to restrict it to listen on a UNIX domain
1344
socket only. For example
1345

    
1346
@example
1347
qemu-system-i386 [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
1348
@end example
1349

    
1350
This ensures that only users on local box with read/write access to that
1351
path can access the VNC server. To securely access the VNC server from a
1352
remote machine, a combination of netcat+ssh can be used to provide a secure
1353
tunnel.
1354

    
1355
@node vnc_sec_password
1356
@subsection With passwords
1357

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

    
1369
@example
1370
qemu-system-i386 [...OPTIONS...] -vnc :1,password -monitor stdio
1371
(qemu) change vnc password
1372
Password: ********
1373
(qemu)
1374
@end example
1375

    
1376
@node vnc_sec_certificate
1377
@subsection With x509 certificates
1378

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

    
1386
@example
1387
qemu-system-i386 [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
1388
@end example
1389

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

    
1396
@node vnc_sec_certificate_verify
1397
@subsection With x509 certificates and client verification
1398

    
1399
Certificates can also provide a means to authenticate the client connecting.
1400
The server will request that the client provide a certificate, which it will
1401
then validate against the CA certificate. This is a good choice if deploying
1402
in an environment with a private internal certificate authority.
1403

    
1404
@example
1405
qemu-system-i386 [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
1406
@end example
1407

    
1408

    
1409
@node vnc_sec_certificate_pw
1410
@subsection With x509 certificates, client verification and passwords
1411

    
1412
Finally, the previous method can be combined with VNC password authentication
1413
to provide two layers of authentication for clients.
1414

    
1415
@example
1416
qemu-system-i386 [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
1417
(qemu) change vnc password
1418
Password: ********
1419
(qemu)
1420
@end example
1421

    
1422

    
1423
@node vnc_sec_sasl
1424
@subsection With SASL authentication
1425

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

    
1434
Refer to the later docs on how to choose the exact SASL mechanism
1435
used for authentication, but assuming use of one supporting SSF,
1436
then QEMU can be launched with:
1437

    
1438
@example
1439
qemu-system-i386 [...OPTIONS...] -vnc :1,sasl -monitor stdio
1440
@end example
1441

    
1442
@node vnc_sec_certificate_sasl
1443
@subsection With x509 certificates and SASL authentication
1444

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

    
1452
@example
1453
qemu-system-i386 [...OPTIONS...] -vnc :1,tls,x509,sasl -monitor stdio
1454
@end example
1455

    
1456

    
1457
@node vnc_generate_cert
1458
@subsection Generating certificates for VNC
1459

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

    
1468
@menu
1469
* vnc_generate_ca::
1470
* vnc_generate_server::
1471
* vnc_generate_client::
1472
@end menu
1473
@node vnc_generate_ca
1474
@subsubsection Setup the Certificate Authority
1475

    
1476
This step only needs to be performed once per organization / organizational
1477
unit. First the CA needs a private key. This key must be kept VERY secret
1478
and secure. If this key is compromised the entire trust chain of the certificates
1479
issued with it is lost.
1480

    
1481
@example
1482
# certtool --generate-privkey > ca-key.pem
1483
@end example
1484

    
1485
A CA needs to have a public certificate. For simplicity it can be a self-signed
1486
certificate, or one issue by a commercial certificate issuing authority. To
1487
generate a self-signed certificate requires one core piece of information, the
1488
name of the organization.
1489

    
1490
@example
1491
# cat > ca.info <<EOF
1492
cn = Name of your organization
1493
ca
1494
cert_signing_key
1495
EOF
1496
# certtool --generate-self-signed \
1497
           --load-privkey ca-key.pem
1498
           --template ca.info \
1499
           --outfile ca-cert.pem
1500
@end example
1501

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

    
1505
@node vnc_generate_server
1506
@subsubsection Issuing server certificates
1507

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

    
1515
@example
1516
# cat > server.info <<EOF
1517
organization = Name  of your organization
1518
cn = server.foo.example.com
1519
tls_www_server
1520
encryption_key
1521
signing_key
1522
EOF
1523
# certtool --generate-privkey > server-key.pem
1524
# certtool --generate-certificate \
1525
           --load-ca-certificate ca-cert.pem \
1526
           --load-ca-privkey ca-key.pem \
1527
           --load-privkey server server-key.pem \
1528
           --template server.info \
1529
           --outfile server-cert.pem
1530
@end example
1531

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

    
1536
@node vnc_generate_client
1537
@subsubsection Issuing client certificates
1538

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

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

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

    
1568

    
1569
@node vnc_setup_sasl
1570

    
1571
@subsection Configuring SASL mechanisms
1572

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

    
1580
The default configuration might contain
1581

    
1582
@example
1583
mech_list: digest-md5
1584
sasldb_path: /etc/qemu/passwd.db
1585
@end example
1586

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

    
1594
A more serious deployment might use Kerberos, which is done with the 'gssapi'
1595
mechanism
1596

    
1597
@example
1598
mech_list: gssapi
1599
keytab: /etc/qemu/krb5.tab
1600
@end example
1601

    
1602
For this to work the administrator of your KDC must generate a Kerberos
1603
principal for the server, with a name of  'qemu/somehost.example.com@@EXAMPLE.COM'
1604
replacing 'somehost.example.com' with the fully qualified host name of the
1605
machine running QEMU, and 'EXAMPLE.COM' with the Kerberos Realm.
1606

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

    
1612
@node gdb_usage
1613
@section GDB usage
1614

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

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

    
1627
Then launch gdb on the 'vmlinux' executable:
1628
@example
1629
> gdb vmlinux
1630
@end example
1631

    
1632
In gdb, connect to QEMU:
1633
@example
1634
(gdb) target remote localhost:1234
1635
@end example
1636

    
1637
Then you can use gdb normally. For example, type 'c' to launch the kernel:
1638
@example
1639
(gdb) c
1640
@end example
1641

    
1642
Here are some useful tips in order to use gdb on system code:
1643

    
1644
@enumerate
1645
@item
1646
Use @code{info reg} to display all the CPU registers.
1647
@item
1648
Use @code{x/10i $eip} to display the code at the PC position.
1649
@item
1650
Use @code{set architecture i8086} to dump 16 bit code. Then use
1651
@code{x/10i $cs*16+$eip} to dump the code at the PC position.
1652
@end enumerate
1653

    
1654
Advanced debugging options:
1655

    
1656
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:
1657
@table @code
1658
@item maintenance packet qqemu.sstepbits
1659

    
1660
This will display the MASK bits used to control the single stepping IE:
1661
@example
1662
(gdb) maintenance packet qqemu.sstepbits
1663
sending: "qqemu.sstepbits"
1664
received: "ENABLE=1,NOIRQ=2,NOTIMER=4"
1665
@end example
1666
@item maintenance packet qqemu.sstep
1667

    
1668
This will display the current value of the mask used when single stepping IE:
1669
@example
1670
(gdb) maintenance packet qqemu.sstep
1671
sending: "qqemu.sstep"
1672
received: "0x7"
1673
@end example
1674
@item maintenance packet Qqemu.sstep=HEX_VALUE
1675

    
1676
This will change the single step mask, so if wanted to enable IRQs on the single step, but not timers, you would use:
1677
@example
1678
(gdb) maintenance packet Qqemu.sstep=0x5
1679
sending: "qemu.sstep=0x5"
1680
received: "OK"
1681
@end example
1682
@end table
1683

    
1684
@node pcsys_os_specific
1685
@section Target OS specific information
1686

    
1687
@subsection Linux
1688

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

    
1693
When using a 2.6 guest Linux kernel, you should add the option
1694
@code{clock=pit} on the kernel command line because the 2.6 Linux
1695
kernels make very strict real time clock checks by default that QEMU
1696
cannot simulate exactly.
1697

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

    
1704
@subsection Windows
1705

    
1706
If you have a slow host, using Windows 95 is better as it gives the
1707
best speed. Windows 2000 is also a good choice.
1708

    
1709
@subsubsection SVGA graphic modes support
1710

    
1711
QEMU emulates a Cirrus Logic GD5446 Video
1712
card. All Windows versions starting from Windows 95 should recognize
1713
and use this graphic card. For optimal performances, use 16 bit color
1714
depth in the guest and the host OS.
1715

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

    
1721
@subsubsection CPU usage reduction
1722

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

    
1729
@subsubsection Windows 2000 disk full problem
1730

    
1731
Windows 2000 has a bug which gives a disk full problem during its
1732
installation. When installing it, use the @option{-win2k-hack} QEMU
1733
option to enable a specific workaround. After Windows 2000 is
1734
installed, you no longer need this option (this option slows down the
1735
IDE transfers).
1736

    
1737
@subsubsection Windows 2000 shutdown
1738

    
1739
Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1740
can. It comes from the fact that Windows 2000 does not automatically
1741
use the APM driver provided by the BIOS.
1742

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

    
1750
@subsubsection Share a directory between Unix and Windows
1751

    
1752
See @ref{sec_invocation} about the help of the option @option{-smb}.
1753

    
1754
@subsubsection Windows XP security problem
1755

    
1756
Some releases of Windows XP install correctly but give a security
1757
error when booting:
1758
@example
1759
A problem is preventing Windows from accurately checking the
1760
license for this computer. Error code: 0x800703e6.
1761
@end example
1762

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

    
1769
@subsection MS-DOS and FreeDOS
1770

    
1771
@subsubsection CPU usage reduction
1772

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

    
1778
@node QEMU System emulator for non PC targets
1779
@chapter QEMU System emulator for non PC targets
1780

    
1781
QEMU is a generic emulator and it emulates many non PC
1782
machines. Most of the options are similar to the PC emulator. The
1783
differences are mentioned in the following sections.
1784

    
1785
@menu
1786
* PowerPC System emulator::
1787
* Sparc32 System emulator::
1788
* Sparc64 System emulator::
1789
* MIPS System emulator::
1790
* ARM System emulator::
1791
* ColdFire System emulator::
1792
* Cris System emulator::
1793
* Microblaze System emulator::
1794
* SH4 System emulator::
1795
* Xtensa System emulator::
1796
@end menu
1797

    
1798
@node PowerPC System emulator
1799
@section PowerPC System emulator
1800
@cindex system emulation (PowerPC)
1801

    
1802
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1803
or PowerMac PowerPC system.
1804

    
1805
QEMU emulates the following PowerMac peripherals:
1806

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

    
1822
QEMU emulates the following PREP peripherals:
1823

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

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

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

    
1851
@c man begin OPTIONS
1852

    
1853
The following options are specific to the PowerPC emulation:
1854

    
1855
@table @option
1856

    
1857
@item -g @var{W}x@var{H}[x@var{DEPTH}]
1858

    
1859
Set the initial VGA graphic mode. The default is 800x600x15.
1860

    
1861
@item -prom-env @var{string}
1862

    
1863
Set OpenBIOS variables in NVRAM, for example:
1864

    
1865
@example
1866
qemu-system-ppc -prom-env 'auto-boot?=false' \
1867
 -prom-env 'boot-device=hd:2,\yaboot' \
1868
 -prom-env 'boot-args=conf=hd:2,\yaboot.conf'
1869
@end example
1870

    
1871
These variables are not used by Open Hack'Ware.
1872

    
1873
@end table
1874

    
1875
@c man end
1876

    
1877

    
1878
More information is available at
1879
@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
1880

    
1881
@node Sparc32 System emulator
1882
@section Sparc32 System emulator
1883
@cindex system emulation (Sparc32)
1884

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

    
1908
The emulation is somewhat complete. SMP up to 16 CPUs is supported,
1909
but Linux limits the number of usable CPUs to 4.
1910

    
1911
It's also possible to simulate a SPARCstation 2 (sun4c architecture),
1912
SPARCserver 1000, or SPARCcenter 2000 (sun4d architecture), but these
1913
emulators are not usable yet.
1914

    
1915
QEMU emulates the following sun4m/sun4c/sun4d peripherals:
1916

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

    
1937
The number of peripherals is fixed in the architecture.  Maximum
1938
memory size depends on the machine type, for SS-5 it is 256MB and for
1939
others 2047MB.
1940

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

    
1946
A sample Linux 2.6 series kernel and ram disk image are available on
1947
the QEMU web site. There are still issues with NetBSD and OpenBSD, but
1948
some kernel versions work. Please note that currently Solaris kernels
1949
don't work probably due to interface issues between OpenBIOS and
1950
Solaris.
1951

    
1952
@c man begin OPTIONS
1953

    
1954
The following options are specific to the Sparc32 emulation:
1955

    
1956
@table @option
1957

    
1958
@item -g @var{W}x@var{H}x[x@var{DEPTH}]
1959

    
1960
Set the initial TCX graphic mode. The default is 1024x768x8, currently
1961
the only other possible mode is 1024x768x24.
1962

    
1963
@item -prom-env @var{string}
1964

    
1965
Set OpenBIOS variables in NVRAM, for example:
1966

    
1967
@example
1968
qemu-system-sparc -prom-env 'auto-boot?=false' \
1969
 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
1970
@end example
1971

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

    
1974
Set the emulated machine type. Default is SS-5.
1975

    
1976
@end table
1977

    
1978
@c man end
1979

    
1980
@node Sparc64 System emulator
1981
@section Sparc64 System emulator
1982
@cindex system emulation (Sparc64)
1983

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

    
1989
QEMU emulates the following peripherals:
1990

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

    
2008
@c man begin OPTIONS
2009

    
2010
The following options are specific to the Sparc64 emulation:
2011

    
2012
@table @option
2013

    
2014
@item -prom-env @var{string}
2015

    
2016
Set OpenBIOS variables in NVRAM, for example:
2017

    
2018
@example
2019
qemu-system-sparc64 -prom-env 'auto-boot?=false'
2020
@end example
2021

    
2022
@item -M [sun4u|sun4v|Niagara]
2023

    
2024
Set the emulated machine type. The default is sun4u.
2025

    
2026
@end table
2027

    
2028
@c man end
2029

    
2030
@node MIPS System emulator
2031
@section MIPS System emulator
2032
@cindex system emulation (MIPS)
2033

    
2034
Four executables cover simulation of 32 and 64-bit MIPS systems in
2035
both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
2036
@file{qemu-system-mips64} and @file{qemu-system-mips64el}.
2037
Five different machine types are emulated:
2038

    
2039
@itemize @minus
2040
@item
2041
A generic ISA PC-like machine "mips"
2042
@item
2043
The MIPS Malta prototype board "malta"
2044
@item
2045
An ACER Pica "pica61". This machine needs the 64-bit emulator.
2046
@item
2047
MIPS emulator pseudo board "mipssim"
2048
@item
2049
A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
2050
@end itemize
2051

    
2052
The generic emulation is supported by Debian 'Etch' and is able to
2053
install Debian into a virtual disk image. The following devices are
2054
emulated:
2055

    
2056
@itemize @minus
2057
@item
2058
A range of MIPS CPUs, default is the 24Kf
2059
@item
2060
PC style serial port
2061
@item
2062
PC style IDE disk
2063
@item
2064
NE2000 network card
2065
@end itemize
2066

    
2067
The Malta emulation supports the following devices:
2068

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

    
2084
The ACER Pica emulation supports:
2085

    
2086
@itemize @minus
2087
@item
2088
MIPS R4000 CPU
2089
@item
2090
PC-style IRQ and DMA controllers
2091
@item
2092
PC Keyboard
2093
@item
2094
IDE controller
2095
@end itemize
2096

    
2097
The mipssim pseudo board emulation provides an environment similar
2098
to what the proprietary MIPS emulator uses for running Linux.
2099
It supports:
2100

    
2101
@itemize @minus
2102
@item
2103
A range of MIPS CPUs, default is the 24Kf
2104
@item
2105
PC style serial port
2106
@item
2107
MIPSnet network emulation
2108
@end itemize
2109

    
2110
The MIPS Magnum R4000 emulation supports:
2111

    
2112
@itemize @minus
2113
@item
2114
MIPS R4000 CPU
2115
@item
2116
PC-style IRQ controller
2117
@item
2118
PC Keyboard
2119
@item
2120
SCSI controller
2121
@item
2122
G364 framebuffer
2123
@end itemize
2124

    
2125

    
2126
@node ARM System emulator
2127
@section ARM System emulator
2128
@cindex system emulation (ARM)
2129

    
2130
Use the executable @file{qemu-system-arm} to simulate a ARM
2131
machine. The ARM Integrator/CP board is emulated with the following
2132
devices:
2133

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

    
2149
The ARM Versatile baseboard is emulated with the following devices:
2150

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

    
2178
Several variants of the ARM RealView baseboard are emulated,
2179
including the EB, PB-A8 and PBX-A9.  Due to interactions with the
2180
bootloader, only certain Linux kernel configurations work out
2181
of the box on these boards.
2182

    
2183
Kernels for the PB-A8 board should have CONFIG_REALVIEW_HIGH_PHYS_OFFSET
2184
enabled in the kernel, and expect 512M RAM.  Kernels for The PBX-A9 board
2185
should have CONFIG_SPARSEMEM enabled, CONFIG_REALVIEW_HIGH_PHYS_OFFSET
2186
disabled and expect 1024M RAM.
2187

    
2188
The following devices are emulated:
2189

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

    
2213
The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
2214
and "Terrier") emulation includes the following peripherals:
2215

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

    
2243
The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
2244
following elements:
2245

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

    
2266
Nokia N800 and N810 internet tablets (known also as RX-34 and RX-44 / 48)
2267
emulation supports the following elements:
2268

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

    
2301
The Luminary Micro Stellaris LM3S811EVB emulation includes the following
2302
devices:
2303

    
2304
@itemize @minus
2305
@item
2306
Cortex-M3 CPU core.
2307
@item
2308
64k Flash and 8k SRAM.
2309
@item
2310
Timers, UARTs, ADC and I@math{^2}C interface.
2311
@item
2312
OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
2313
@end itemize
2314

    
2315
The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
2316
devices:
2317

    
2318
@itemize @minus
2319
@item
2320
Cortex-M3 CPU core.
2321
@item
2322
256k Flash and 64k SRAM.
2323
@item
2324
Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
2325
@item
2326
OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
2327
@end itemize
2328

    
2329
The Freecom MusicPal internet radio emulation includes the following
2330
elements:
2331

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

    
2349
The Siemens SX1 models v1 and v2 (default) basic emulation.
2350
The emulation includes the following elements:
2351

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

    
2371
A Linux 2.6 test image is available on the QEMU web site. More
2372
information is available in the QEMU mailing-list archive.
2373

    
2374
@c man begin OPTIONS
2375

    
2376
The following options are specific to the ARM emulation:
2377

    
2378
@table @option
2379

    
2380
@item -semihosting
2381
Enable semihosting syscall emulation.
2382

    
2383
On ARM this implements the "Angel" interface.
2384

    
2385
Note that this allows guest direct access to the host filesystem,
2386
so should only be used with trusted guest OS.
2387

    
2388
@end table
2389

    
2390
@node ColdFire System emulator
2391
@section ColdFire System emulator
2392
@cindex system emulation (ColdFire)
2393
@cindex system emulation (M68K)
2394

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

    
2398
The M5208EVB emulation includes the following devices:
2399

    
2400
@itemize @minus
2401
@item
2402
MCF5208 ColdFire V2 Microprocessor (ISA A+ with EMAC).
2403
@item
2404
Three Two on-chip UARTs.
2405
@item
2406
Fast Ethernet Controller (FEC)
2407
@end itemize
2408

    
2409
The AN5206 emulation includes the following devices:
2410

    
2411
@itemize @minus
2412
@item
2413
MCF5206 ColdFire V2 Microprocessor.
2414
@item
2415
Two on-chip UARTs.
2416
@end itemize
2417

    
2418
@c man begin OPTIONS
2419

    
2420
The following options are specific to the ColdFire emulation:
2421

    
2422
@table @option
2423

    
2424
@item -semihosting
2425
Enable semihosting syscall emulation.
2426

    
2427
On M68K this implements the "ColdFire GDB" interface used by libgloss.
2428

    
2429
Note that this allows guest direct access to the host filesystem,
2430
so should only be used with trusted guest OS.
2431

    
2432
@end table
2433

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

    
2438
TODO
2439

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

    
2444
TODO
2445

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

    
2450
TODO
2451

    
2452
@node Xtensa System emulator
2453
@section Xtensa System emulator
2454
@cindex system emulation (Xtensa)
2455

    
2456
Two executables cover simulation of both Xtensa endian options,
2457
@file{qemu-system-xtensa} and @file{qemu-system-xtensaeb}.
2458
Two different machine types are emulated:
2459

    
2460
@itemize @minus
2461
@item
2462
Xtensa emulator pseudo board "sim"
2463
@item
2464
Avnet LX60/LX110/LX200 board
2465
@end itemize
2466

    
2467
The sim pseudo board emulation provides an environment similar
2468
to one provided by the proprietary Tensilica ISS.
2469
It supports:
2470

    
2471
@itemize @minus
2472
@item
2473
A range of Xtensa CPUs, default is the DC232B
2474
@item
2475
Console and filesystem access via semihosting calls
2476
@end itemize
2477

    
2478
The Avnet LX60/LX110/LX200 emulation supports:
2479

    
2480
@itemize @minus
2481
@item
2482
A range of Xtensa CPUs, default is the DC232B
2483
@item
2484
16550 UART
2485
@item
2486
OpenCores 10/100 Mbps Ethernet MAC
2487
@end itemize
2488

    
2489
@c man begin OPTIONS
2490

    
2491
The following options are specific to the Xtensa emulation:
2492

    
2493
@table @option
2494

    
2495
@item -semihosting
2496
Enable semihosting syscall emulation.
2497

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

    
2501
Note that this allows guest direct access to the host filesystem,
2502
so should only be used with trusted guest OS.
2503

    
2504
@end table
2505
@node QEMU User space emulator
2506
@chapter QEMU User space emulator
2507

    
2508
@menu
2509
* Supported Operating Systems ::
2510
* Linux User space emulator::
2511
* BSD User space emulator ::
2512
@end menu
2513

    
2514
@node Supported Operating Systems
2515
@section Supported Operating Systems
2516

    
2517
The following OS are supported in user space emulation:
2518

    
2519
@itemize @minus
2520
@item
2521
Linux (referred as qemu-linux-user)
2522
@item
2523
BSD (referred as qemu-bsd-user)
2524
@end itemize
2525

    
2526
@node Linux User space emulator
2527
@section Linux User space emulator
2528

    
2529
@menu
2530
* Quick Start::
2531
* Wine launch::
2532
* Command line options::
2533
* Other binaries::
2534
@end menu
2535

    
2536
@node Quick Start
2537
@subsection Quick Start
2538

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

    
2542
@itemize
2543

    
2544
@item On x86, you can just try to launch any process by using the native
2545
libraries:
2546

    
2547
@example
2548
qemu-i386 -L / /bin/ls
2549
@end example
2550

    
2551
@code{-L /} tells that the x86 dynamic linker must be searched with a
2552
@file{/} prefix.
2553

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

    
2557
@example
2558
qemu-i386 -L / qemu-i386 -L / /bin/ls
2559
@end example
2560

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

    
2565
@example
2566
unset LD_LIBRARY_PATH
2567
@end example
2568

    
2569
Then you can launch the precompiled @file{ls} x86 executable:
2570

    
2571
@example
2572
qemu-i386 tests/i386/ls
2573
@end example
2574
You can look at @file{scripts/qemu-binfmt-conf.sh} so that
2575
QEMU is automatically launched by the Linux kernel when you try to
2576
launch x86 executables. It requires the @code{binfmt_misc} module in the
2577
Linux kernel.
2578

    
2579
@item The x86 version of QEMU is also included. You can try weird things such as:
2580
@example
2581
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
2582
          /usr/local/qemu-i386/bin/ls-i386
2583
@end example
2584

    
2585
@end itemize
2586

    
2587
@node Wine launch
2588
@subsection Wine launch
2589

    
2590
@itemize
2591

    
2592
@item Ensure that you have a working QEMU with the x86 glibc
2593
distribution (see previous section). In order to verify it, you must be
2594
able to do:
2595

    
2596
@example
2597
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
2598
@end example
2599

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

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

    
2607
@item Then you can try the example @file{putty.exe}:
2608

    
2609
@example
2610
qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
2611
          /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
2612
@end example
2613

    
2614
@end itemize
2615

    
2616
@node Command line options
2617
@subsection Command line options
2618

    
2619
@example
2620
usage: qemu-i386 [-h] [-d] [-L path] [-s size] [-cpu model] [-g port] [-B offset] [-R size] program [arguments...]
2621
@end example
2622

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

    
2648
Debug options:
2649

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

    
2661
Environment variables:
2662

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

    
2673
@node Other binaries
2674
@subsection Other binaries
2675

    
2676
@cindex user mode (Alpha)
2677
@command{qemu-alpha} TODO.
2678

    
2679
@cindex user mode (ARM)
2680
@command{qemu-armeb} TODO.
2681

    
2682
@cindex user mode (ARM)
2683
@command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF
2684
binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
2685
configurations), and arm-uclinux bFLT format binaries.
2686

    
2687
@cindex user mode (ColdFire)
2688
@cindex user mode (M68K)
2689
@command{qemu-m68k} is capable of running semihosted binaries using the BDM
2690
(m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
2691
coldfire uClinux bFLT format binaries.
2692

    
2693
The binary format is detected automatically.
2694

    
2695
@cindex user mode (Cris)
2696
@command{qemu-cris} TODO.
2697

    
2698
@cindex user mode (i386)
2699
@command{qemu-i386} TODO.
2700
@command{qemu-x86_64} TODO.
2701

    
2702
@cindex user mode (Microblaze)
2703
@command{qemu-microblaze} TODO.
2704

    
2705
@cindex user mode (MIPS)
2706
@command{qemu-mips} TODO.
2707
@command{qemu-mipsel} TODO.
2708

    
2709
@cindex user mode (PowerPC)
2710
@command{qemu-ppc64abi32} TODO.
2711
@command{qemu-ppc64} TODO.
2712
@command{qemu-ppc} TODO.
2713

    
2714
@cindex user mode (SH4)
2715
@command{qemu-sh4eb} TODO.
2716
@command{qemu-sh4} TODO.
2717

    
2718
@cindex user mode (SPARC)
2719
@command{qemu-sparc} can execute Sparc32 binaries (Sparc32 CPU, 32 bit ABI).
2720

    
2721
@command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries
2722
(Sparc64 CPU, 32 bit ABI).
2723

    
2724
@command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
2725
SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
2726

    
2727
@node BSD User space emulator
2728
@section BSD User space emulator
2729

    
2730
@menu
2731
* BSD Status::
2732
* BSD Quick Start::
2733
* BSD Command line options::
2734
@end menu
2735

    
2736
@node BSD Status
2737
@subsection BSD Status
2738

    
2739
@itemize @minus
2740
@item
2741
target Sparc64 on Sparc64: Some trivial programs work.
2742
@end itemize
2743

    
2744
@node BSD Quick Start
2745
@subsection Quick Start
2746

    
2747
In order to launch a BSD process, QEMU needs the process executable
2748
itself and all the target dynamic libraries used by it.
2749

    
2750
@itemize
2751

    
2752
@item On Sparc64, you can just try to launch any process by using the native
2753
libraries:
2754

    
2755
@example
2756
qemu-sparc64 /bin/ls
2757
@end example
2758

    
2759
@end itemize
2760

    
2761
@node BSD Command line options
2762
@subsection Command line options
2763

    
2764
@example
2765
usage: qemu-sparc64 [-h] [-d] [-L path] [-s size] [-bsd type] program [arguments...]
2766
@end example
2767

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

    
2787
Debug options:
2788

    
2789
@table @option
2790
@item -d item1,...
2791
Activate logging of the specified items (use '-d help' for a list of log items)
2792
@item -p pagesize
2793
Act as if the host page size was 'pagesize' bytes
2794
@item -singlestep
2795
Run the emulation in single step mode.
2796
@end table
2797

    
2798
@node compilation
2799
@chapter Compilation from the sources
2800

    
2801
@menu
2802
* Linux/Unix::
2803
* Windows::
2804
* Cross compilation for Windows with Linux::
2805
* Mac OS X::
2806
* Make targets::
2807
@end menu
2808

    
2809
@node Linux/Unix
2810
@section Linux/Unix
2811

    
2812
@subsection Compilation
2813

    
2814
First you must decompress the sources:
2815
@example
2816
cd /tmp
2817
tar zxvf qemu-x.y.z.tar.gz
2818
cd qemu-x.y.z
2819
@end example
2820

    
2821
Then you configure QEMU and build it (usually no options are needed):
2822
@example
2823
./configure
2824
make
2825
@end example
2826

    
2827
Then type as root user:
2828
@example
2829
make install
2830
@end example
2831
to install QEMU in @file{/usr/local}.
2832

    
2833
@node Windows
2834
@section Windows
2835

    
2836
@itemize
2837
@item Install the current versions of MSYS and MinGW from
2838
@url{http://www.mingw.org/}. You can find detailed installation
2839
instructions in the download section and the FAQ.
2840

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

    
2848
@item Install the MinGW version of zlib and make sure
2849
@file{zlib.h} and @file{libz.dll.a} are in
2850
MinGW's default header and linker search paths.
2851

    
2852
@item Extract the current version of QEMU.
2853

    
2854
@item Start the MSYS shell (file @file{msys.bat}).
2855

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

    
2860
@item You can install QEMU in @file{Program Files/QEMU} by typing
2861
@file{make install}. Don't forget to copy @file{SDL.dll} in
2862
@file{Program Files/QEMU}.
2863

    
2864
@end itemize
2865

    
2866
@node Cross compilation for Windows with Linux
2867
@section Cross compilation for Windows with Linux
2868

    
2869
@itemize
2870
@item
2871
Install the MinGW cross compilation tools available at
2872
@url{http://www.mingw.org/}.
2873

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

    
2883
@item Install the MinGW version of zlib and make sure
2884
@file{zlib.h} and @file{libz.dll.a} are in
2885
MinGW's default header and linker search paths.
2886

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

    
2898
Under Fedora Linux, you can run:
2899
@example
2900
yum -y install mingw32-gcc mingw32-SDL mingw32-zlib
2901
@end example
2902
to get a suitable cross compilation environment.
2903

    
2904
@item You can install QEMU in the installation directory by typing
2905
@code{make install}. Don't forget to copy @file{SDL.dll} and @file{zlib1.dll} into the
2906
installation directory.
2907

    
2908
@end itemize
2909

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

    
2913
@node Mac OS X
2914
@section Mac OS X
2915

    
2916
The Mac OS X patches are not fully merged in QEMU, so you should look
2917
at the QEMU mailing list archive to have all the necessary
2918
information.
2919

    
2920
@node Make targets
2921
@section Make targets
2922

    
2923
@table @code
2924

    
2925
@item make
2926
@item make all
2927
Make everything which is typically needed.
2928

    
2929
@item install
2930
TODO
2931

    
2932
@item install-doc
2933
TODO
2934

    
2935
@item make clean
2936
Remove most files which were built during make.
2937

    
2938
@item make distclean
2939
Remove everything which was built during make.
2940

    
2941
@item make dvi
2942
@item make html
2943
@item make info
2944
@item make pdf
2945
Create documentation in dvi, html, info or pdf format.
2946

    
2947
@item make cscope
2948
TODO
2949

    
2950
@item make defconfig
2951
(Re-)create some build configuration files.
2952
User made changes will be overwritten.
2953

    
2954
@item tar
2955
@item tarbin
2956
TODO
2957

    
2958
@end table
2959

    
2960
@node License
2961
@appendix License
2962

    
2963
QEMU is a trademark of Fabrice Bellard.
2964

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

    
2968
TODO (refer to file LICENSE, include it, include the GPL?)
2969

    
2970
@node Index
2971
@appendix Index
2972
@menu
2973
* Concept Index::
2974
* Function Index::
2975
* Keystroke Index::
2976
* Program Index::
2977
* Data Type Index::
2978
* Variable Index::
2979
@end menu
2980

    
2981
@node Concept Index
2982
@section Concept Index
2983
This is the main index. Should we combine all keywords in one index? TODO
2984
@printindex cp
2985

    
2986
@node Function Index
2987
@section Function Index
2988
This index could be used for command line options and monitor functions.
2989
@printindex fn
2990

    
2991
@node Keystroke Index
2992
@section Keystroke Index
2993

    
2994
This is a list of all keystrokes which have a special function
2995
in system emulation.
2996

    
2997
@printindex ky
2998

    
2999
@node Program Index
3000
@section Program Index
3001
@printindex pg
3002

    
3003
@node Data Type Index
3004
@section Data Type Index
3005

    
3006
This index could be used for qdev device names and options.
3007

    
3008
@printindex tp
3009

    
3010
@node Variable Index
3011
@section Variable Index
3012
@printindex vr
3013

    
3014
@bye