]> git.proxmox.com Git - qemu.git/blame - qemu-doc.texi
Suppress a Sparse warning
[qemu.git] / qemu-doc.texi
CommitLineData
386405f7 1\input texinfo @c -*- texinfo -*-
debc7065
FB
2@c %**start of header
3@setfilename qemu-doc.info
8f40c388 4@settitle QEMU Emulator User Documentation
debc7065
FB
5@exampleindent 0
6@paragraphindent 0
7@c %**end of header
386405f7 8
0806e3f6 9@iftex
386405f7
FB
10@titlepage
11@sp 7
8f40c388 12@center @titlefont{QEMU Emulator}
debc7065
FB
13@sp 1
14@center @titlefont{User Documentation}
386405f7
FB
15@sp 3
16@end titlepage
0806e3f6 17@end iftex
386405f7 18
debc7065
FB
19@ifnottex
20@node Top
21@top
22
23@menu
24* Introduction::
25* Installation::
26* QEMU PC System emulator::
27* QEMU System emulator for non PC targets::
83195237 28* QEMU User space emulator::
debc7065
FB
29* compilation:: Compilation from the sources
30* Index::
31@end menu
32@end ifnottex
33
34@contents
35
36@node Introduction
386405f7
FB
37@chapter Introduction
38
debc7065
FB
39@menu
40* intro_features:: Features
41@end menu
42
43@node intro_features
322d0c66 44@section Features
386405f7 45
1f673135
FB
46QEMU is a FAST! processor emulator using dynamic translation to
47achieve good emulation speed.
1eb20527
FB
48
49QEMU has two operating modes:
0806e3f6
FB
50
51@itemize @minus
52
5fafdf24 53@item
1f673135 54Full system emulation. In this mode, QEMU emulates a full system (for
3f9f3aa1
FB
55example a PC), including one or several processors and various
56peripherals. It can be used to launch different Operating Systems
57without rebooting the PC or to debug system code.
1eb20527 58
5fafdf24 59@item
83195237
FB
60User mode emulation. In this mode, QEMU can launch
61processes compiled for one CPU on another CPU. It can be used to
1f673135
FB
62launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
63to ease cross-compilation and cross-debugging.
1eb20527
FB
64
65@end itemize
66
7c3fc84d 67QEMU can run without an host kernel driver and yet gives acceptable
5fafdf24 68performance.
322d0c66 69
52c00a5f
FB
70For system emulation, the following hardware targets are supported:
71@itemize
9d0a8e6f 72@item PC (x86 or x86_64 processor)
3f9f3aa1 73@item ISA PC (old style PC without PCI bus)
52c00a5f 74@item PREP (PowerPC processor)
d45952a0 75@item G3 Beige PowerMac (PowerPC processor)
9d0a8e6f 76@item Mac99 PowerMac (PowerPC processor, in progress)
ee76f82e 77@item Sun4m/Sun4c/Sun4d (32-bit Sparc processor)
c7ba218d 78@item Sun4u/Sun4v (64-bit Sparc processor, in progress)
d9aedc32 79@item Malta board (32-bit and 64-bit MIPS processors)
88cb0a02 80@item MIPS Magnum (64-bit MIPS processor)
9ee6e8bb
PB
81@item ARM Integrator/CP (ARM)
82@item ARM Versatile baseboard (ARM)
83@item ARM RealView Emulation baseboard (ARM)
ef4c3856 84@item Spitz, Akita, Borzoi, Terrier and Tosa PDAs (PXA270 processor)
9ee6e8bb
PB
85@item Luminary Micro LM3S811EVB (ARM Cortex-M3)
86@item Luminary Micro LM3S6965EVB (ARM Cortex-M3)
707e011b 87@item Freescale MCF5208EVB (ColdFire V2).
209a4e69 88@item Arnewsh MCF5206 evaluation board (ColdFire V2).
02645926 89@item Palm Tungsten|E PDA (OMAP310 processor)
c30bb264 90@item N800 and N810 tablets (OMAP2420 processor)
57cd6e97 91@item MusicPal (MV88W8618 ARM processor)
ef4c3856
AZ
92@item Gumstix "Connex" and "Verdex" motherboards (PXA255/270).
93@item Siemens SX1 smartphone (OMAP310 processor)
4af39611 94@item Syborg SVP base model (ARM Cortex-A8).
48c50a62
EI
95@item AXIS-Devboard88 (CRISv32 ETRAX-FS).
96@item Petalogix Spartan 3aDSP1800 MMU ref design (MicroBlaze).
52c00a5f 97@end itemize
386405f7 98
48c50a62 99For user emulation, x86, PowerPC, ARM, 32-bit MIPS, Sparc32/64, ColdFire(m68k), CRISv32 and MicroBlaze CPUs are supported.
0806e3f6 100
debc7065 101@node Installation
5b9f457a
FB
102@chapter Installation
103
15a34c63
FB
104If you want to compile QEMU yourself, see @ref{compilation}.
105
debc7065
FB
106@menu
107* install_linux:: Linux
108* install_windows:: Windows
109* install_mac:: Macintosh
110@end menu
111
112@node install_linux
1f673135
FB
113@section Linux
114
7c3fc84d
FB
115If a precompiled package is available for your distribution - you just
116have to install it. Otherwise, see @ref{compilation}.
5b9f457a 117
debc7065 118@node install_windows
1f673135 119@section Windows
8cd0ac2f 120
15a34c63 121Download the experimental binary installer at
debc7065 122@url{http://www.free.oszoo.org/@/download.html}.
d691f669 123
debc7065 124@node install_mac
1f673135 125@section Mac OS X
d691f669 126
15a34c63 127Download the experimental binary installer at
debc7065 128@url{http://www.free.oszoo.org/@/download.html}.
df0f11a0 129
debc7065 130@node QEMU PC System emulator
3f9f3aa1 131@chapter QEMU PC System emulator
1eb20527 132
debc7065
FB
133@menu
134* pcsys_introduction:: Introduction
135* pcsys_quickstart:: Quick Start
136* sec_invocation:: Invocation
137* pcsys_keys:: Keys
138* pcsys_monitor:: QEMU Monitor
139* disk_images:: Disk Images
140* pcsys_network:: Network emulation
141* direct_linux_boot:: Direct Linux Boot
142* pcsys_usb:: USB emulation
f858dcae 143* vnc_security:: VNC security
debc7065
FB
144* gdb_usage:: GDB usage
145* pcsys_os_specific:: Target OS specific information
146@end menu
147
148@node pcsys_introduction
0806e3f6
FB
149@section Introduction
150
151@c man begin DESCRIPTION
152
3f9f3aa1
FB
153The QEMU PC System emulator simulates the
154following peripherals:
0806e3f6
FB
155
156@itemize @minus
5fafdf24 157@item
15a34c63 158i440FX host PCI bridge and PIIX3 PCI to ISA bridge
0806e3f6 159@item
15a34c63
FB
160Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
161extensions (hardware level, including all non standard modes).
0806e3f6
FB
162@item
163PS/2 mouse and keyboard
5fafdf24 164@item
15a34c63 1652 PCI IDE interfaces with hard disk and CD-ROM support
1f673135
FB
166@item
167Floppy disk
5fafdf24 168@item
3a2eeac0 169PCI and ISA network adapters
0806e3f6 170@item
05d5818c
FB
171Serial ports
172@item
c0fe3827
FB
173Creative SoundBlaster 16 sound card
174@item
175ENSONIQ AudioPCI ES1370 sound card
176@item
e5c9a13e
AZ
177Intel 82801AA AC97 Audio compatible sound card
178@item
c0fe3827 179Adlib(OPL2) - Yamaha YM3812 compatible chip
b389dbfb 180@item
26463dbc
AZ
181Gravis Ultrasound GF1 sound card
182@item
cc53d26d 183CS4231A compatible sound card
184@item
b389dbfb 185PCI UHCI USB controller and a virtual USB hub.
0806e3f6
FB
186@end itemize
187
3f9f3aa1
FB
188SMP is supported with up to 255 CPUs.
189
1d1f8c33 190Note that adlib, gus and cs4231a are only available when QEMU was
191configured with --audio-card-list option containing the name(s) of
e5178e8d 192required card(s).
c0fe3827 193
15a34c63
FB
194QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
195VGA BIOS.
196
c0fe3827
FB
197QEMU uses YM3812 emulation by Tatsuyuki Satoh.
198
26463dbc
AZ
199QEMU uses GUS emulation(GUSEMU32 @url{http://www.deinmeister.de/gusemu/})
200by Tibor "TS" Schütz.
423d65f4 201
cc53d26d 202CS4231A is the chip used in Windows Sound System and GUSMAX products
203
0806e3f6
FB
204@c man end
205
debc7065 206@node pcsys_quickstart
1eb20527
FB
207@section Quick Start
208
285dc330 209Download and uncompress the linux image (@file{linux.img}) and type:
0806e3f6
FB
210
211@example
285dc330 212qemu linux.img
0806e3f6
FB
213@end example
214
215Linux should boot and give you a prompt.
216
6cc721cf 217@node sec_invocation
ec410fc9
FB
218@section Invocation
219
220@example
0806e3f6 221@c man begin SYNOPSIS
89dfe898 222usage: qemu [options] [@var{disk_image}]
0806e3f6 223@c man end
ec410fc9
FB
224@end example
225
0806e3f6 226@c man begin OPTIONS
d2c639d6
BS
227@var{disk_image} is a raw hard disk image for IDE hard disk 0. Some
228targets do not need a disk image.
ec410fc9 229
5824d651 230@include qemu-options.texi
ec410fc9 231
3e11db9a
FB
232@c man end
233
debc7065 234@node pcsys_keys
3e11db9a
FB
235@section Keys
236
237@c man begin OPTIONS
238
a1b74fe8
FB
239During the graphical emulation, you can use the following keys:
240@table @key
f9859310 241@item Ctrl-Alt-f
a1b74fe8 242Toggle full screen
a0a821a4 243
f9859310 244@item Ctrl-Alt-n
a0a821a4
FB
245Switch to virtual console 'n'. Standard console mappings are:
246@table @emph
247@item 1
248Target system display
249@item 2
250Monitor
251@item 3
252Serial port
a1b74fe8
FB
253@end table
254
f9859310 255@item Ctrl-Alt
a0a821a4
FB
256Toggle mouse and keyboard grab.
257@end table
258
3e11db9a
FB
259In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
260@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
261
a0a821a4
FB
262During emulation, if you are using the @option{-nographic} option, use
263@key{Ctrl-a h} to get terminal commands:
ec410fc9
FB
264
265@table @key
a1b74fe8 266@item Ctrl-a h
d2c639d6 267@item Ctrl-a ?
ec410fc9 268Print this help
3b46e624 269@item Ctrl-a x
366dfc52 270Exit emulator
3b46e624 271@item Ctrl-a s
1f47a922 272Save disk data back to file (if -snapshot)
20d8a3ed 273@item Ctrl-a t
d2c639d6 274Toggle console timestamps
a1b74fe8 275@item Ctrl-a b
1f673135 276Send break (magic sysrq in Linux)
a1b74fe8 277@item Ctrl-a c
1f673135 278Switch between console and monitor
a1b74fe8
FB
279@item Ctrl-a Ctrl-a
280Send Ctrl-a
ec410fc9 281@end table
0806e3f6
FB
282@c man end
283
284@ignore
285
1f673135
FB
286@c man begin SEEALSO
287The HTML documentation of QEMU for more precise information and Linux
288user mode emulator invocation.
289@c man end
290
291@c man begin AUTHOR
292Fabrice Bellard
293@c man end
294
295@end ignore
296
debc7065 297@node pcsys_monitor
1f673135
FB
298@section QEMU Monitor
299
300The QEMU monitor is used to give complex commands to the QEMU
301emulator. You can use it to:
302
303@itemize @minus
304
305@item
e598752a 306Remove or insert removable media images
89dfe898 307(such as CD-ROM or floppies).
1f673135 308
5fafdf24 309@item
1f673135
FB
310Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
311from a disk file.
312
313@item Inspect the VM state without an external debugger.
314
315@end itemize
316
317@subsection Commands
318
319The following commands are available:
320
2313086a 321@include qemu-monitor.texi
0806e3f6 322
1f673135
FB
323@subsection Integer expressions
324
325The monitor understands integers expressions for every integer
326argument. You can use register names to get the value of specifics
327CPU registers by prefixing them with @emph{$}.
ec410fc9 328
1f47a922
FB
329@node disk_images
330@section Disk Images
331
acd935ef
FB
332Since version 0.6.1, QEMU supports many disk image formats, including
333growable disk images (their size increase as non empty sectors are
13a2e80f
FB
334written), compressed and encrypted disk images. Version 0.8.3 added
335the new qcow2 disk image format which is essential to support VM
336snapshots.
1f47a922 337
debc7065
FB
338@menu
339* disk_images_quickstart:: Quick start for disk image creation
340* disk_images_snapshot_mode:: Snapshot mode
13a2e80f 341* vm_snapshots:: VM snapshots
debc7065 342* qemu_img_invocation:: qemu-img Invocation
975b092b 343* qemu_nbd_invocation:: qemu-nbd Invocation
19cb3738 344* host_drives:: Using host drives
debc7065 345* disk_images_fat_images:: Virtual FAT disk images
75818250 346* disk_images_nbd:: NBD access
debc7065
FB
347@end menu
348
349@node disk_images_quickstart
acd935ef
FB
350@subsection Quick start for disk image creation
351
352You can create a disk image with the command:
1f47a922 353@example
acd935ef 354qemu-img create myimage.img mysize
1f47a922 355@end example
acd935ef
FB
356where @var{myimage.img} is the disk image filename and @var{mysize} is its
357size in kilobytes. You can add an @code{M} suffix to give the size in
358megabytes and a @code{G} suffix for gigabytes.
359
debc7065 360See @ref{qemu_img_invocation} for more information.
1f47a922 361
debc7065 362@node disk_images_snapshot_mode
1f47a922
FB
363@subsection Snapshot mode
364
365If you use the option @option{-snapshot}, all disk images are
366considered as read only. When sectors in written, they are written in
367a temporary file created in @file{/tmp}. You can however force the
acd935ef
FB
368write back to the raw disk images by using the @code{commit} monitor
369command (or @key{C-a s} in the serial console).
1f47a922 370
13a2e80f
FB
371@node vm_snapshots
372@subsection VM snapshots
373
374VM snapshots are snapshots of the complete virtual machine including
375CPU state, RAM, device state and the content of all the writable
376disks. In order to use VM snapshots, you must have at least one non
377removable and writable block device using the @code{qcow2} disk image
378format. Normally this device is the first virtual hard drive.
379
380Use the monitor command @code{savevm} to create a new VM snapshot or
381replace an existing one. A human readable name can be assigned to each
19d36792 382snapshot in addition to its numerical ID.
13a2e80f
FB
383
384Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
385a VM snapshot. @code{info snapshots} lists the available snapshots
386with their associated information:
387
388@example
389(qemu) info snapshots
390Snapshot devices: hda
391Snapshot list (from hda):
392ID TAG VM SIZE DATE VM CLOCK
3931 start 41M 2006-08-06 12:38:02 00:00:14.954
3942 40M 2006-08-06 12:43:29 00:00:18.633
3953 msys 40M 2006-08-06 12:44:04 00:00:23.514
396@end example
397
398A VM snapshot is made of a VM state info (its size is shown in
399@code{info snapshots}) and a snapshot of every writable disk image.
400The VM state info is stored in the first @code{qcow2} non removable
401and writable block device. The disk image snapshots are stored in
402every disk image. The size of a snapshot in a disk image is difficult
403to evaluate and is not shown by @code{info snapshots} because the
404associated disk sectors are shared among all the snapshots to save
19d36792
FB
405disk space (otherwise each snapshot would need a full copy of all the
406disk images).
13a2e80f
FB
407
408When using the (unrelated) @code{-snapshot} option
409(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
410but they are deleted as soon as you exit QEMU.
411
412VM snapshots currently have the following known limitations:
413@itemize
5fafdf24 414@item
13a2e80f
FB
415They cannot cope with removable devices if they are removed or
416inserted after a snapshot is done.
5fafdf24 417@item
13a2e80f
FB
418A few device drivers still have incomplete snapshot support so their
419state is not saved or restored properly (in particular USB).
420@end itemize
421
acd935ef
FB
422@node qemu_img_invocation
423@subsection @code{qemu-img} Invocation
1f47a922 424
acd935ef 425@include qemu-img.texi
05efe46e 426
975b092b
TS
427@node qemu_nbd_invocation
428@subsection @code{qemu-nbd} Invocation
429
430@include qemu-nbd.texi
431
19cb3738
FB
432@node host_drives
433@subsection Using host drives
434
435In addition to disk image files, QEMU can directly access host
436devices. We describe here the usage for QEMU version >= 0.8.3.
437
438@subsubsection Linux
439
440On Linux, you can directly use the host device filename instead of a
4be456f1 441disk image filename provided you have enough privileges to access
19cb3738
FB
442it. For example, use @file{/dev/cdrom} to access to the CDROM or
443@file{/dev/fd0} for the floppy.
444
f542086d 445@table @code
19cb3738
FB
446@item CD
447You can specify a CDROM device even if no CDROM is loaded. QEMU has
448specific code to detect CDROM insertion or removal. CDROM ejection by
449the guest OS is supported. Currently only data CDs are supported.
450@item Floppy
451You can specify a floppy device even if no floppy is loaded. Floppy
452removal is currently not detected accurately (if you change floppy
453without doing floppy access while the floppy is not loaded, the guest
454OS will think that the same floppy is loaded).
455@item Hard disks
456Hard disks can be used. Normally you must specify the whole disk
457(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
458see it as a partitioned disk. WARNING: unless you know what you do, it
459is better to only make READ-ONLY accesses to the hard disk otherwise
460you may corrupt your host data (use the @option{-snapshot} command
461line option or modify the device permissions accordingly).
462@end table
463
464@subsubsection Windows
465
01781963
FB
466@table @code
467@item CD
4be456f1 468The preferred syntax is the drive letter (e.g. @file{d:}). The
01781963
FB
469alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
470supported as an alias to the first CDROM drive.
19cb3738 471
e598752a 472Currently there is no specific code to handle removable media, so it
19cb3738
FB
473is better to use the @code{change} or @code{eject} monitor commands to
474change or eject media.
01781963 475@item Hard disks
89dfe898 476Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
01781963
FB
477where @var{N} is the drive number (0 is the first hard disk).
478
479WARNING: unless you know what you do, it is better to only make
480READ-ONLY accesses to the hard disk otherwise you may corrupt your
481host data (use the @option{-snapshot} command line so that the
482modifications are written in a temporary file).
483@end table
484
19cb3738
FB
485
486@subsubsection Mac OS X
487
5fafdf24 488@file{/dev/cdrom} is an alias to the first CDROM.
19cb3738 489
e598752a 490Currently there is no specific code to handle removable media, so it
19cb3738
FB
491is better to use the @code{change} or @code{eject} monitor commands to
492change or eject media.
493
debc7065 494@node disk_images_fat_images
2c6cadd4
FB
495@subsection Virtual FAT disk images
496
497QEMU can automatically create a virtual FAT disk image from a
498directory tree. In order to use it, just type:
499
5fafdf24 500@example
2c6cadd4
FB
501qemu linux.img -hdb fat:/my_directory
502@end example
503
504Then you access access to all the files in the @file{/my_directory}
505directory without having to copy them in a disk image or to export
506them via SAMBA or NFS. The default access is @emph{read-only}.
507
508Floppies can be emulated with the @code{:floppy:} option:
509
5fafdf24 510@example
2c6cadd4
FB
511qemu linux.img -fda fat:floppy:/my_directory
512@end example
513
514A read/write support is available for testing (beta stage) with the
515@code{:rw:} option:
516
5fafdf24 517@example
2c6cadd4
FB
518qemu linux.img -fda fat:floppy:rw:/my_directory
519@end example
520
521What you should @emph{never} do:
522@itemize
523@item use non-ASCII filenames ;
524@item use "-snapshot" together with ":rw:" ;
85b2c688
FB
525@item expect it to work when loadvm'ing ;
526@item write to the FAT directory on the host system while accessing it with the guest system.
2c6cadd4
FB
527@end itemize
528
75818250
TS
529@node disk_images_nbd
530@subsection NBD access
531
532QEMU can access directly to block device exported using the Network Block Device
533protocol.
534
535@example
536qemu linux.img -hdb nbd:my_nbd_server.mydomain.org:1024
537@end example
538
539If the NBD server is located on the same host, you can use an unix socket instead
540of an inet socket:
541
542@example
543qemu linux.img -hdb nbd:unix:/tmp/my_socket
544@end example
545
546In this case, the block device must be exported using qemu-nbd:
547
548@example
549qemu-nbd --socket=/tmp/my_socket my_disk.qcow2
550@end example
551
552The use of qemu-nbd allows to share a disk between several guests:
553@example
554qemu-nbd --socket=/tmp/my_socket --share=2 my_disk.qcow2
555@end example
556
557and then you can use it with two guests:
558@example
559qemu linux1.img -hdb nbd:unix:/tmp/my_socket
560qemu linux2.img -hdb nbd:unix:/tmp/my_socket
561@end example
562
debc7065 563@node pcsys_network
9d4fb82e
FB
564@section Network emulation
565
4be456f1 566QEMU can simulate several network cards (PCI or ISA cards on the PC
41d03949
FB
567target) and can connect them to an arbitrary number of Virtual Local
568Area Networks (VLANs). Host TAP devices can be connected to any QEMU
569VLAN. VLAN can be connected between separate instances of QEMU to
4be456f1 570simulate large networks. For simpler usage, a non privileged user mode
41d03949
FB
571network stack can replace the TAP device to have a basic network
572connection.
573
574@subsection VLANs
9d4fb82e 575
41d03949
FB
576QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
577connection between several network devices. These devices can be for
578example QEMU virtual Ethernet cards or virtual Host ethernet devices
579(TAP devices).
9d4fb82e 580
41d03949
FB
581@subsection Using TAP network interfaces
582
583This is the standard way to connect QEMU to a real network. QEMU adds
584a virtual network device on your host (called @code{tapN}), and you
585can then configure it as if it was a real ethernet card.
9d4fb82e 586
8f40c388
FB
587@subsubsection Linux host
588
9d4fb82e
FB
589As an example, you can download the @file{linux-test-xxx.tar.gz}
590archive and copy the script @file{qemu-ifup} in @file{/etc} and
591configure properly @code{sudo} so that the command @code{ifconfig}
592contained in @file{qemu-ifup} can be executed as root. You must verify
41d03949 593that your host kernel supports the TAP network interfaces: the
9d4fb82e
FB
594device @file{/dev/net/tun} must be present.
595
ee0f4751
FB
596See @ref{sec_invocation} to have examples of command lines using the
597TAP network interfaces.
9d4fb82e 598
8f40c388
FB
599@subsubsection Windows host
600
601There is a virtual ethernet driver for Windows 2000/XP systems, called
602TAP-Win32. But it is not included in standard QEMU for Windows,
603so you will need to get it separately. It is part of OpenVPN package,
604so download OpenVPN from : @url{http://openvpn.net/}.
605
9d4fb82e
FB
606@subsection Using the user mode network stack
607
41d03949
FB
608By using the option @option{-net user} (default configuration if no
609@option{-net} option is specified), QEMU uses a completely user mode
4be456f1 610network stack (you don't need root privilege to use the virtual
41d03949 611network). The virtual network configuration is the following:
9d4fb82e
FB
612
613@example
614
41d03949
FB
615 QEMU VLAN <------> Firewall/DHCP server <-----> Internet
616 | (10.0.2.2)
9d4fb82e 617 |
2518bd0d 618 ----> DNS server (10.0.2.3)
3b46e624 619 |
2518bd0d 620 ----> SMB server (10.0.2.4)
9d4fb82e
FB
621@end example
622
623The QEMU VM behaves as if it was behind a firewall which blocks all
624incoming connections. You can use a DHCP client to automatically
41d03949
FB
625configure the network in the QEMU VM. The DHCP server assign addresses
626to the hosts starting from 10.0.2.15.
9d4fb82e
FB
627
628In order to check that the user mode network is working, you can ping
629the address 10.0.2.2 and verify that you got an address in the range
63010.0.2.x from the QEMU virtual DHCP server.
631
b415a407 632Note that @code{ping} is not supported reliably to the internet as it
4be456f1 633would require root privileges. It means you can only ping the local
b415a407
FB
634router (10.0.2.2).
635
9bf05444
FB
636When using the built-in TFTP server, the router is also the TFTP
637server.
638
639When using the @option{-redir} option, TCP or UDP connections can be
640redirected from the host to the guest. It allows for example to
641redirect X11, telnet or SSH connections.
443f1376 642
41d03949
FB
643@subsection Connecting VLANs between QEMU instances
644
645Using the @option{-net socket} option, it is possible to make VLANs
646that span several QEMU instances. See @ref{sec_invocation} to have a
647basic example.
648
9d4fb82e
FB
649@node direct_linux_boot
650@section Direct Linux Boot
1f673135
FB
651
652This section explains how to launch a Linux kernel inside QEMU without
653having to make a full bootable image. It is very useful for fast Linux
ee0f4751 654kernel testing.
1f673135 655
ee0f4751 656The syntax is:
1f673135 657@example
ee0f4751 658qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1f673135
FB
659@end example
660
ee0f4751
FB
661Use @option{-kernel} to provide the Linux kernel image and
662@option{-append} to give the kernel command line arguments. The
663@option{-initrd} option can be used to provide an INITRD image.
1f673135 664
ee0f4751
FB
665When using the direct Linux boot, a disk image for the first hard disk
666@file{hda} is required because its boot sector is used to launch the
667Linux kernel.
1f673135 668
ee0f4751
FB
669If you do not need graphical output, you can disable it and redirect
670the virtual serial port and the QEMU monitor to the console with the
671@option{-nographic} option. The typical command line is:
1f673135 672@example
ee0f4751
FB
673qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
674 -append "root=/dev/hda console=ttyS0" -nographic
1f673135
FB
675@end example
676
ee0f4751
FB
677Use @key{Ctrl-a c} to switch between the serial console and the
678monitor (@pxref{pcsys_keys}).
1f673135 679
debc7065 680@node pcsys_usb
b389dbfb
FB
681@section USB emulation
682
0aff66b5
PB
683QEMU emulates a PCI UHCI USB controller. You can virtually plug
684virtual USB devices or real host USB devices (experimental, works only
685on Linux hosts). Qemu will automatically create and connect virtual USB hubs
f542086d 686as necessary to connect multiple USB devices.
b389dbfb 687
0aff66b5
PB
688@menu
689* usb_devices::
690* host_usb_devices::
691@end menu
692@node usb_devices
693@subsection Connecting USB devices
b389dbfb 694
0aff66b5
PB
695USB devices can be connected with the @option{-usbdevice} commandline option
696or the @code{usb_add} monitor command. Available devices are:
b389dbfb 697
db380c06
AZ
698@table @code
699@item mouse
0aff66b5 700Virtual Mouse. This will override the PS/2 mouse emulation when activated.
db380c06 701@item tablet
c6d46c20 702Pointer device that uses absolute coordinates (like a touchscreen).
0aff66b5
PB
703This means qemu is able to report the mouse position without having
704to grab the mouse. Also overrides the PS/2 mouse emulation when activated.
db380c06 705@item disk:@var{file}
0aff66b5 706Mass storage device based on @var{file} (@pxref{disk_images})
db380c06 707@item host:@var{bus.addr}
0aff66b5
PB
708Pass through the host device identified by @var{bus.addr}
709(Linux only)
db380c06 710@item host:@var{vendor_id:product_id}
0aff66b5
PB
711Pass through the host device identified by @var{vendor_id:product_id}
712(Linux only)
db380c06 713@item wacom-tablet
f6d2a316
AZ
714Virtual Wacom PenPartner tablet. This device is similar to the @code{tablet}
715above but it can be used with the tslib library because in addition to touch
716coordinates it reports touch pressure.
db380c06 717@item keyboard
47b2d338 718Standard USB keyboard. Will override the PS/2 keyboard (if present).
db380c06
AZ
719@item serial:[vendorid=@var{vendor_id}][,product_id=@var{product_id}]:@var{dev}
720Serial converter. This emulates an FTDI FT232BM chip connected to host character
721device @var{dev}. The available character devices are the same as for the
722@code{-serial} option. The @code{vendorid} and @code{productid} options can be
a11d070e 723used to override the default 0403:6001. For instance,
db380c06
AZ
724@example
725usb_add serial:productid=FA00:tcp:192.168.0.2:4444
726@end example
727will connect to tcp port 4444 of ip 192.168.0.2, and plug that to the virtual
728serial converter, faking a Matrix Orbital LCD Display (USB ID 0403:FA00).
2e4d9fb1
AJ
729@item braille
730Braille device. This will use BrlAPI to display the braille output on a real
731or fake device.
9ad97e65
AZ
732@item net:@var{options}
733Network adapter that supports CDC ethernet and RNDIS protocols. @var{options}
734specifies NIC options as with @code{-net nic,}@var{options} (see description).
735For instance, user-mode networking can be used with
6c9f886c 736@example
9ad97e65 737qemu [...OPTIONS...] -net user,vlan=0 -usbdevice net:vlan=0
6c9f886c
AZ
738@end example
739Currently this cannot be used in machines that support PCI NICs.
2d564691
AZ
740@item bt[:@var{hci-type}]
741Bluetooth dongle whose type is specified in the same format as with
742the @option{-bt hci} option, @pxref{bt-hcis,,allowed HCI types}. If
743no type is given, the HCI logic corresponds to @code{-bt hci,vlan=0}.
744This USB device implements the USB Transport Layer of HCI. Example
745usage:
746@example
747qemu [...OPTIONS...] -usbdevice bt:hci,vlan=3 -bt device:keyboard,vlan=3
748@end example
0aff66b5 749@end table
b389dbfb 750
0aff66b5 751@node host_usb_devices
b389dbfb
FB
752@subsection Using host USB devices on a Linux host
753
754WARNING: this is an experimental feature. QEMU will slow down when
755using it. USB devices requiring real time streaming (i.e. USB Video
756Cameras) are not supported yet.
757
758@enumerate
5fafdf24 759@item If you use an early Linux 2.4 kernel, verify that no Linux driver
b389dbfb
FB
760is actually using the USB device. A simple way to do that is simply to
761disable the corresponding kernel module by renaming it from @file{mydriver.o}
762to @file{mydriver.o.disabled}.
763
764@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
765@example
766ls /proc/bus/usb
767001 devices drivers
768@end example
769
770@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:
771@example
772chown -R myuid /proc/bus/usb
773@end example
774
775@item Launch QEMU and do in the monitor:
5fafdf24 776@example
b389dbfb
FB
777info usbhost
778 Device 1.2, speed 480 Mb/s
779 Class 00: USB device 1234:5678, USB DISK
780@end example
781You should see the list of the devices you can use (Never try to use
782hubs, it won't work).
783
784@item Add the device in QEMU by using:
5fafdf24 785@example
b389dbfb
FB
786usb_add host:1234:5678
787@end example
788
789Normally the guest OS should report that a new USB device is
790plugged. You can use the option @option{-usbdevice} to do the same.
791
792@item Now you can try to use the host USB device in QEMU.
793
794@end enumerate
795
796When relaunching QEMU, you may have to unplug and plug again the USB
797device to make it work again (this is a bug).
798
f858dcae
TS
799@node vnc_security
800@section VNC security
801
802The VNC server capability provides access to the graphical console
803of the guest VM across the network. This has a number of security
804considerations depending on the deployment scenarios.
805
806@menu
807* vnc_sec_none::
808* vnc_sec_password::
809* vnc_sec_certificate::
810* vnc_sec_certificate_verify::
811* vnc_sec_certificate_pw::
2f9606b3
AL
812* vnc_sec_sasl::
813* vnc_sec_certificate_sasl::
f858dcae 814* vnc_generate_cert::
2f9606b3 815* vnc_setup_sasl::
f858dcae
TS
816@end menu
817@node vnc_sec_none
818@subsection Without passwords
819
820The simplest VNC server setup does not include any form of authentication.
821For this setup it is recommended to restrict it to listen on a UNIX domain
822socket only. For example
823
824@example
825qemu [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
826@end example
827
828This ensures that only users on local box with read/write access to that
829path can access the VNC server. To securely access the VNC server from a
830remote machine, a combination of netcat+ssh can be used to provide a secure
831tunnel.
832
833@node vnc_sec_password
834@subsection With passwords
835
836The VNC protocol has limited support for password based authentication. Since
837the protocol limits passwords to 8 characters it should not be considered
838to provide high security. The password can be fairly easily brute-forced by
839a client making repeat connections. For this reason, a VNC server using password
840authentication should be restricted to only listen on the loopback interface
34a3d239 841or UNIX domain sockets. Password authentication is requested with the @code{password}
f858dcae
TS
842option, and then once QEMU is running the password is set with the monitor. Until
843the monitor is used to set the password all clients will be rejected.
844
845@example
846qemu [...OPTIONS...] -vnc :1,password -monitor stdio
847(qemu) change vnc password
848Password: ********
849(qemu)
850@end example
851
852@node vnc_sec_certificate
853@subsection With x509 certificates
854
855The QEMU VNC server also implements the VeNCrypt extension allowing use of
856TLS for encryption of the session, and x509 certificates for authentication.
857The use of x509 certificates is strongly recommended, because TLS on its
858own is susceptible to man-in-the-middle attacks. Basic x509 certificate
859support provides a secure session, but no authentication. This allows any
860client to connect, and provides an encrypted session.
861
862@example
863qemu [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
864@end example
865
866In the above example @code{/etc/pki/qemu} should contain at least three files,
867@code{ca-cert.pem}, @code{server-cert.pem} and @code{server-key.pem}. Unprivileged
868users will want to use a private directory, for example @code{$HOME/.pki/qemu}.
869NB the @code{server-key.pem} file should be protected with file mode 0600 to
870only be readable by the user owning it.
871
872@node vnc_sec_certificate_verify
873@subsection With x509 certificates and client verification
874
875Certificates can also provide a means to authenticate the client connecting.
876The server will request that the client provide a certificate, which it will
877then validate against the CA certificate. This is a good choice if deploying
878in an environment with a private internal certificate authority.
879
880@example
881qemu [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
882@end example
883
884
885@node vnc_sec_certificate_pw
886@subsection With x509 certificates, client verification and passwords
887
888Finally, the previous method can be combined with VNC password authentication
889to provide two layers of authentication for clients.
890
891@example
892qemu [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
893(qemu) change vnc password
894Password: ********
895(qemu)
896@end example
897
2f9606b3
AL
898
899@node vnc_sec_sasl
900@subsection With SASL authentication
901
902The SASL authentication method is a VNC extension, that provides an
903easily extendable, pluggable authentication method. This allows for
904integration with a wide range of authentication mechanisms, such as
905PAM, GSSAPI/Kerberos, LDAP, SQL databases, one-time keys and more.
906The strength of the authentication depends on the exact mechanism
907configured. If the chosen mechanism also provides a SSF layer, then
908it will encrypt the datastream as well.
909
910Refer to the later docs on how to choose the exact SASL mechanism
911used for authentication, but assuming use of one supporting SSF,
912then QEMU can be launched with:
913
914@example
915qemu [...OPTIONS...] -vnc :1,sasl -monitor stdio
916@end example
917
918@node vnc_sec_certificate_sasl
919@subsection With x509 certificates and SASL authentication
920
921If the desired SASL authentication mechanism does not supported
922SSF layers, then it is strongly advised to run it in combination
923with TLS and x509 certificates. This provides securely encrypted
924data stream, avoiding risk of compromising of the security
925credentials. This can be enabled, by combining the 'sasl' option
926with the aforementioned TLS + x509 options:
927
928@example
929qemu [...OPTIONS...] -vnc :1,tls,x509,sasl -monitor stdio
930@end example
931
932
f858dcae
TS
933@node vnc_generate_cert
934@subsection Generating certificates for VNC
935
936The GNU TLS packages provides a command called @code{certtool} which can
937be used to generate certificates and keys in PEM format. At a minimum it
938is neccessary to setup a certificate authority, and issue certificates to
939each server. If using certificates for authentication, then each client
940will also need to be issued a certificate. The recommendation is for the
941server to keep its certificates in either @code{/etc/pki/qemu} or for
942unprivileged users in @code{$HOME/.pki/qemu}.
943
944@menu
945* vnc_generate_ca::
946* vnc_generate_server::
947* vnc_generate_client::
948@end menu
949@node vnc_generate_ca
950@subsubsection Setup the Certificate Authority
951
952This step only needs to be performed once per organization / organizational
953unit. First the CA needs a private key. This key must be kept VERY secret
954and secure. If this key is compromised the entire trust chain of the certificates
955issued with it is lost.
956
957@example
958# certtool --generate-privkey > ca-key.pem
959@end example
960
961A CA needs to have a public certificate. For simplicity it can be a self-signed
962certificate, or one issue by a commercial certificate issuing authority. To
963generate a self-signed certificate requires one core piece of information, the
964name of the organization.
965
966@example
967# cat > ca.info <<EOF
968cn = Name of your organization
969ca
970cert_signing_key
971EOF
972# certtool --generate-self-signed \
973 --load-privkey ca-key.pem
974 --template ca.info \
975 --outfile ca-cert.pem
976@end example
977
978The @code{ca-cert.pem} file should be copied to all servers and clients wishing to utilize
979TLS support in the VNC server. The @code{ca-key.pem} must not be disclosed/copied at all.
980
981@node vnc_generate_server
982@subsubsection Issuing server certificates
983
984Each server (or host) needs to be issued with a key and certificate. When connecting
985the certificate is sent to the client which validates it against the CA certificate.
986The core piece of information for a server certificate is the hostname. This should
987be the fully qualified hostname that the client will connect with, since the client
988will typically also verify the hostname in the certificate. On the host holding the
989secure CA private key:
990
991@example
992# cat > server.info <<EOF
993organization = Name of your organization
994cn = server.foo.example.com
995tls_www_server
996encryption_key
997signing_key
998EOF
999# certtool --generate-privkey > server-key.pem
1000# certtool --generate-certificate \
1001 --load-ca-certificate ca-cert.pem \
1002 --load-ca-privkey ca-key.pem \
1003 --load-privkey server server-key.pem \
1004 --template server.info \
1005 --outfile server-cert.pem
1006@end example
1007
1008The @code{server-key.pem} and @code{server-cert.pem} files should now be securely copied
1009to the server for which they were generated. The @code{server-key.pem} is security
1010sensitive and should be kept protected with file mode 0600 to prevent disclosure.
1011
1012@node vnc_generate_client
1013@subsubsection Issuing client certificates
1014
1015If the QEMU VNC server is to use the @code{x509verify} option to validate client
1016certificates as its authentication mechanism, each client also needs to be issued
1017a certificate. The client certificate contains enough metadata to uniquely identify
1018the client, typically organization, state, city, building, etc. On the host holding
1019the secure CA private key:
1020
1021@example
1022# cat > client.info <<EOF
1023country = GB
1024state = London
1025locality = London
1026organiazation = Name of your organization
1027cn = client.foo.example.com
1028tls_www_client
1029encryption_key
1030signing_key
1031EOF
1032# certtool --generate-privkey > client-key.pem
1033# certtool --generate-certificate \
1034 --load-ca-certificate ca-cert.pem \
1035 --load-ca-privkey ca-key.pem \
1036 --load-privkey client-key.pem \
1037 --template client.info \
1038 --outfile client-cert.pem
1039@end example
1040
1041The @code{client-key.pem} and @code{client-cert.pem} files should now be securely
1042copied to the client for which they were generated.
1043
2f9606b3
AL
1044
1045@node vnc_setup_sasl
1046
1047@subsection Configuring SASL mechanisms
1048
1049The following documentation assumes use of the Cyrus SASL implementation on a
1050Linux host, but the principals should apply to any other SASL impl. When SASL
1051is enabled, the mechanism configuration will be loaded from system default
1052SASL service config /etc/sasl2/qemu.conf. If running QEMU as an
1053unprivileged user, an environment variable SASL_CONF_PATH can be used
1054to make it search alternate locations for the service config.
1055
1056The default configuration might contain
1057
1058@example
1059mech_list: digest-md5
1060sasldb_path: /etc/qemu/passwd.db
1061@end example
1062
1063This says to use the 'Digest MD5' mechanism, which is similar to the HTTP
1064Digest-MD5 mechanism. The list of valid usernames & passwords is maintained
1065in the /etc/qemu/passwd.db file, and can be updated using the saslpasswd2
1066command. While this mechanism is easy to configure and use, it is not
1067considered secure by modern standards, so only suitable for developers /
1068ad-hoc testing.
1069
1070A more serious deployment might use Kerberos, which is done with the 'gssapi'
1071mechanism
1072
1073@example
1074mech_list: gssapi
1075keytab: /etc/qemu/krb5.tab
1076@end example
1077
1078For this to work the administrator of your KDC must generate a Kerberos
1079principal for the server, with a name of 'qemu/somehost.example.com@@EXAMPLE.COM'
1080replacing 'somehost.example.com' with the fully qualified host name of the
1081machine running QEMU, and 'EXAMPLE.COM' with the Keberos Realm.
1082
1083Other configurations will be left as an exercise for the reader. It should
1084be noted that only Digest-MD5 and GSSAPI provides a SSF layer for data
1085encryption. For all other mechanisms, VNC should always be configured to
1086use TLS and x509 certificates to protect security credentials from snooping.
1087
0806e3f6 1088@node gdb_usage
da415d54
FB
1089@section GDB usage
1090
1091QEMU has a primitive support to work with gdb, so that you can do
0806e3f6 1092'Ctrl-C' while the virtual machine is running and inspect its state.
da415d54 1093
9d4520d0 1094In order to use gdb, launch qemu with the '-s' option. It will wait for a
da415d54
FB
1095gdb connection:
1096@example
debc7065
FB
1097> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1098 -append "root=/dev/hda"
da415d54
FB
1099Connected to host network interface: tun0
1100Waiting gdb connection on port 1234
1101@end example
1102
1103Then launch gdb on the 'vmlinux' executable:
1104@example
1105> gdb vmlinux
1106@end example
1107
1108In gdb, connect to QEMU:
1109@example
6c9bf893 1110(gdb) target remote localhost:1234
da415d54
FB
1111@end example
1112
1113Then you can use gdb normally. For example, type 'c' to launch the kernel:
1114@example
1115(gdb) c
1116@end example
1117
0806e3f6
FB
1118Here are some useful tips in order to use gdb on system code:
1119
1120@enumerate
1121@item
1122Use @code{info reg} to display all the CPU registers.
1123@item
1124Use @code{x/10i $eip} to display the code at the PC position.
1125@item
1126Use @code{set architecture i8086} to dump 16 bit code. Then use
294e8637 1127@code{x/10i $cs*16+$eip} to dump the code at the PC position.
0806e3f6
FB
1128@end enumerate
1129
60897d36
EI
1130Advanced debugging options:
1131
1132The default single stepping behavior is step with the IRQs and timer service routines off. It is set this way because when gdb executes a single step it expects to advance beyond the current instruction. With the IRQs and and timer service routines on, a single step might jump into the one of the interrupt or exception vectors instead of executing the current instruction. This means you may hit the same breakpoint a number of times before executing the instruction gdb wants to have executed. Because there are rare circumstances where you want to single step into an interrupt vector the behavior can be controlled from GDB. There are three commands you can query and set the single step behavior:
94d45e44 1133@table @code
60897d36
EI
1134@item maintenance packet qqemu.sstepbits
1135
1136This will display the MASK bits used to control the single stepping IE:
1137@example
1138(gdb) maintenance packet qqemu.sstepbits
1139sending: "qqemu.sstepbits"
1140received: "ENABLE=1,NOIRQ=2,NOTIMER=4"
1141@end example
1142@item maintenance packet qqemu.sstep
1143
1144This will display the current value of the mask used when single stepping IE:
1145@example
1146(gdb) maintenance packet qqemu.sstep
1147sending: "qqemu.sstep"
1148received: "0x7"
1149@end example
1150@item maintenance packet Qqemu.sstep=HEX_VALUE
1151
1152This will change the single step mask, so if wanted to enable IRQs on the single step, but not timers, you would use:
1153@example
1154(gdb) maintenance packet Qqemu.sstep=0x5
1155sending: "qemu.sstep=0x5"
1156received: "OK"
1157@end example
94d45e44 1158@end table
60897d36 1159
debc7065 1160@node pcsys_os_specific
1a084f3d
FB
1161@section Target OS specific information
1162
1163@subsection Linux
1164
15a34c63
FB
1165To have access to SVGA graphic modes under X11, use the @code{vesa} or
1166the @code{cirrus} X11 driver. For optimal performances, use 16 bit
1167color depth in the guest and the host OS.
1a084f3d 1168
e3371e62
FB
1169When using a 2.6 guest Linux kernel, you should add the option
1170@code{clock=pit} on the kernel command line because the 2.6 Linux
1171kernels make very strict real time clock checks by default that QEMU
1172cannot simulate exactly.
1173
7c3fc84d
FB
1174When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1175not activated because QEMU is slower with this patch. The QEMU
1176Accelerator Module is also much slower in this case. Earlier Fedora
4be456f1 1177Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporate this
7c3fc84d
FB
1178patch by default. Newer kernels don't have it.
1179
1a084f3d
FB
1180@subsection Windows
1181
1182If you have a slow host, using Windows 95 is better as it gives the
1183best speed. Windows 2000 is also a good choice.
1184
e3371e62
FB
1185@subsubsection SVGA graphic modes support
1186
1187QEMU emulates a Cirrus Logic GD5446 Video
15a34c63
FB
1188card. All Windows versions starting from Windows 95 should recognize
1189and use this graphic card. For optimal performances, use 16 bit color
1190depth in the guest and the host OS.
1a084f3d 1191
3cb0853a
FB
1192If you are using Windows XP as guest OS and if you want to use high
1193resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
11941280x1024x16), then you should use the VESA VBE virtual graphic card
1195(option @option{-std-vga}).
1196
e3371e62
FB
1197@subsubsection CPU usage reduction
1198
1199Windows 9x does not correctly use the CPU HLT
15a34c63
FB
1200instruction. The result is that it takes host CPU cycles even when
1201idle. You can install the utility from
1202@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
1203problem. Note that no such tool is needed for NT, 2000 or XP.
1a084f3d 1204
9d0a8e6f 1205@subsubsection Windows 2000 disk full problem
e3371e62 1206
9d0a8e6f
FB
1207Windows 2000 has a bug which gives a disk full problem during its
1208installation. When installing it, use the @option{-win2k-hack} QEMU
1209option to enable a specific workaround. After Windows 2000 is
1210installed, you no longer need this option (this option slows down the
1211IDE transfers).
e3371e62 1212
6cc721cf
FB
1213@subsubsection Windows 2000 shutdown
1214
1215Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1216can. It comes from the fact that Windows 2000 does not automatically
1217use the APM driver provided by the BIOS.
1218
1219In order to correct that, do the following (thanks to Struan
1220Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
1221Add/Troubleshoot a device => Add a new device & Next => No, select the
1222hardware from a list & Next => NT Apm/Legacy Support & Next => Next
1223(again) a few times. Now the driver is installed and Windows 2000 now
5fafdf24 1224correctly instructs QEMU to shutdown at the appropriate moment.
6cc721cf
FB
1225
1226@subsubsection Share a directory between Unix and Windows
1227
1228See @ref{sec_invocation} about the help of the option @option{-smb}.
1229
2192c332 1230@subsubsection Windows XP security problem
e3371e62
FB
1231
1232Some releases of Windows XP install correctly but give a security
1233error when booting:
1234@example
1235A problem is preventing Windows from accurately checking the
1236license for this computer. Error code: 0x800703e6.
1237@end example
e3371e62 1238
2192c332
FB
1239The workaround is to install a service pack for XP after a boot in safe
1240mode. Then reboot, and the problem should go away. Since there is no
1241network while in safe mode, its recommended to download the full
1242installation of SP1 or SP2 and transfer that via an ISO or using the
1243vvfat block device ("-hdb fat:directory_which_holds_the_SP").
e3371e62 1244
a0a821a4
FB
1245@subsection MS-DOS and FreeDOS
1246
1247@subsubsection CPU usage reduction
1248
1249DOS does not correctly use the CPU HLT instruction. The result is that
1250it takes host CPU cycles even when idle. You can install the utility
1251from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
1252problem.
1253
debc7065 1254@node QEMU System emulator for non PC targets
3f9f3aa1
FB
1255@chapter QEMU System emulator for non PC targets
1256
1257QEMU is a generic emulator and it emulates many non PC
1258machines. Most of the options are similar to the PC emulator. The
4be456f1 1259differences are mentioned in the following sections.
3f9f3aa1 1260
debc7065
FB
1261@menu
1262* QEMU PowerPC System emulator::
24d4de45
TS
1263* Sparc32 System emulator::
1264* Sparc64 System emulator::
1265* MIPS System emulator::
1266* ARM System emulator::
1267* ColdFire System emulator::
debc7065
FB
1268@end menu
1269
1270@node QEMU PowerPC System emulator
3f9f3aa1 1271@section QEMU PowerPC System emulator
1a084f3d 1272
15a34c63
FB
1273Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1274or PowerMac PowerPC system.
1a084f3d 1275
b671f9ed 1276QEMU emulates the following PowerMac peripherals:
1a084f3d 1277
15a34c63 1278@itemize @minus
5fafdf24 1279@item
006f3a48 1280UniNorth or Grackle PCI Bridge
15a34c63
FB
1281@item
1282PCI VGA compatible card with VESA Bochs Extensions
5fafdf24 1283@item
15a34c63 12842 PMAC IDE interfaces with hard disk and CD-ROM support
5fafdf24 1285@item
15a34c63
FB
1286NE2000 PCI adapters
1287@item
1288Non Volatile RAM
1289@item
1290VIA-CUDA with ADB keyboard and mouse.
1a084f3d
FB
1291@end itemize
1292
b671f9ed 1293QEMU emulates the following PREP peripherals:
52c00a5f
FB
1294
1295@itemize @minus
5fafdf24 1296@item
15a34c63
FB
1297PCI Bridge
1298@item
1299PCI VGA compatible card with VESA Bochs Extensions
5fafdf24 1300@item
52c00a5f
FB
13012 IDE interfaces with hard disk and CD-ROM support
1302@item
1303Floppy disk
5fafdf24 1304@item
15a34c63 1305NE2000 network adapters
52c00a5f
FB
1306@item
1307Serial port
1308@item
1309PREP Non Volatile RAM
15a34c63
FB
1310@item
1311PC compatible keyboard and mouse.
52c00a5f
FB
1312@end itemize
1313
15a34c63 1314QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
3f9f3aa1 1315@url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
52c00a5f 1316
992e5acd 1317Since version 0.9.1, QEMU uses OpenBIOS @url{http://www.openbios.org/}
006f3a48
BS
1318for the g3beige and mac99 PowerMac machines. OpenBIOS is a free (GPL
1319v2) portable firmware implementation. The goal is to implement a 100%
1320IEEE 1275-1994 (referred to as Open Firmware) compliant firmware.
992e5acd 1321
15a34c63
FB
1322@c man begin OPTIONS
1323
1324The following options are specific to the PowerPC emulation:
1325
1326@table @option
1327
3b46e624 1328@item -g WxH[xDEPTH]
15a34c63
FB
1329
1330Set the initial VGA graphic mode. The default is 800x600x15.
1331
95efd11c
BS
1332@item -prom-env string
1333
1334Set OpenBIOS variables in NVRAM, for example:
1335
1336@example
1337qemu-system-ppc -prom-env 'auto-boot?=false' \
1338 -prom-env 'boot-device=hd:2,\yaboot' \
1339 -prom-env 'boot-args=conf=hd:2,\yaboot.conf'
1340@end example
1341
1342These variables are not used by Open Hack'Ware.
1343
15a34c63
FB
1344@end table
1345
5fafdf24 1346@c man end
15a34c63
FB
1347
1348
52c00a5f 1349More information is available at
3f9f3aa1 1350@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
52c00a5f 1351
24d4de45
TS
1352@node Sparc32 System emulator
1353@section Sparc32 System emulator
e80cfcfc 1354
34a3d239
BS
1355Use the executable @file{qemu-system-sparc} to simulate the following
1356Sun4m architecture machines:
1357@itemize @minus
1358@item
1359SPARCstation 4
1360@item
1361SPARCstation 5
1362@item
1363SPARCstation 10
1364@item
1365SPARCstation 20
1366@item
1367SPARCserver 600MP
1368@item
1369SPARCstation LX
1370@item
1371SPARCstation Voyager
1372@item
1373SPARCclassic
1374@item
1375SPARCbook
1376@end itemize
1377
1378The emulation is somewhat complete. SMP up to 16 CPUs is supported,
1379but Linux limits the number of usable CPUs to 4.
e80cfcfc 1380
34a3d239
BS
1381It's also possible to simulate a SPARCstation 2 (sun4c architecture),
1382SPARCserver 1000, or SPARCcenter 2000 (sun4d architecture), but these
1383emulators are not usable yet.
1384
1385QEMU emulates the following sun4m/sun4c/sun4d peripherals:
e80cfcfc
FB
1386
1387@itemize @minus
3475187d 1388@item
7d85892b 1389IOMMU or IO-UNITs
e80cfcfc
FB
1390@item
1391TCX Frame buffer
5fafdf24 1392@item
e80cfcfc
FB
1393Lance (Am7990) Ethernet
1394@item
34a3d239 1395Non Volatile RAM M48T02/M48T08
e80cfcfc 1396@item
3475187d
FB
1397Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1398and power/reset logic
1399@item
1400ESP SCSI controller with hard disk and CD-ROM support
1401@item
6a3b9cc9 1402Floppy drive (not on SS-600MP)
a2502b58
BS
1403@item
1404CS4231 sound device (only on SS-5, not working yet)
e80cfcfc
FB
1405@end itemize
1406
6a3b9cc9
BS
1407The number of peripherals is fixed in the architecture. Maximum
1408memory size depends on the machine type, for SS-5 it is 256MB and for
7d85892b 1409others 2047MB.
3475187d 1410
30a604f3 1411Since version 0.8.2, QEMU uses OpenBIOS
0986ac3b
FB
1412@url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
1413firmware implementation. The goal is to implement a 100% IEEE
14141275-1994 (referred to as Open Firmware) compliant firmware.
3475187d
FB
1415
1416A sample Linux 2.6 series kernel and ram disk image are available on
34a3d239
BS
1417the QEMU web site. There are still issues with NetBSD and OpenBSD, but
1418some kernel versions work. Please note that currently Solaris kernels
1419don't work probably due to interface issues between OpenBIOS and
1420Solaris.
3475187d
FB
1421
1422@c man begin OPTIONS
1423
a2502b58 1424The following options are specific to the Sparc32 emulation:
3475187d
FB
1425
1426@table @option
1427
a2502b58 1428@item -g WxHx[xDEPTH]
3475187d 1429
a2502b58
BS
1430Set the initial TCX graphic mode. The default is 1024x768x8, currently
1431the only other possible mode is 1024x768x24.
3475187d 1432
66508601
BS
1433@item -prom-env string
1434
1435Set OpenBIOS variables in NVRAM, for example:
1436
1437@example
1438qemu-system-sparc -prom-env 'auto-boot?=false' \
1439 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
1440@end example
1441
34a3d239 1442@item -M [SS-4|SS-5|SS-10|SS-20|SS-600MP|LX|Voyager|SPARCClassic|SPARCbook|SS-2|SS-1000|SS-2000]
a2502b58
BS
1443
1444Set the emulated machine type. Default is SS-5.
1445
3475187d
FB
1446@end table
1447
5fafdf24 1448@c man end
3475187d 1449
24d4de45
TS
1450@node Sparc64 System emulator
1451@section Sparc64 System emulator
e80cfcfc 1452
34a3d239
BS
1453Use the executable @file{qemu-system-sparc64} to simulate a Sun4u
1454(UltraSPARC PC-like machine), Sun4v (T1 PC-like machine), or generic
1455Niagara (T1) machine. The emulator is not usable for anything yet, but
1456it can launch some kernels.
b756921a 1457
c7ba218d 1458QEMU emulates the following peripherals:
83469015
FB
1459
1460@itemize @minus
1461@item
5fafdf24 1462UltraSparc IIi APB PCI Bridge
83469015
FB
1463@item
1464PCI VGA compatible card with VESA Bochs Extensions
1465@item
34a3d239
BS
1466PS/2 mouse and keyboard
1467@item
83469015
FB
1468Non Volatile RAM M48T59
1469@item
1470PC-compatible serial ports
c7ba218d
BS
1471@item
14722 PCI IDE interfaces with hard disk and CD-ROM support
34a3d239
BS
1473@item
1474Floppy disk
83469015
FB
1475@end itemize
1476
c7ba218d
BS
1477@c man begin OPTIONS
1478
1479The following options are specific to the Sparc64 emulation:
1480
1481@table @option
1482
34a3d239
BS
1483@item -prom-env string
1484
1485Set OpenBIOS variables in NVRAM, for example:
1486
1487@example
1488qemu-system-sparc64 -prom-env 'auto-boot?=false'
1489@end example
1490
1491@item -M [sun4u|sun4v|Niagara]
c7ba218d
BS
1492
1493Set the emulated machine type. The default is sun4u.
1494
1495@end table
1496
1497@c man end
1498
24d4de45
TS
1499@node MIPS System emulator
1500@section MIPS System emulator
9d0a8e6f 1501
d9aedc32
TS
1502Four executables cover simulation of 32 and 64-bit MIPS systems in
1503both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
1504@file{qemu-system-mips64} and @file{qemu-system-mips64el}.
88cb0a02 1505Five different machine types are emulated:
24d4de45
TS
1506
1507@itemize @minus
1508@item
1509A generic ISA PC-like machine "mips"
1510@item
1511The MIPS Malta prototype board "malta"
1512@item
d9aedc32 1513An ACER Pica "pica61". This machine needs the 64-bit emulator.
6bf5b4e8 1514@item
f0fc6f8f 1515MIPS emulator pseudo board "mipssim"
88cb0a02
AJ
1516@item
1517A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
24d4de45
TS
1518@end itemize
1519
1520The generic emulation is supported by Debian 'Etch' and is able to
1521install Debian into a virtual disk image. The following devices are
1522emulated:
3f9f3aa1
FB
1523
1524@itemize @minus
5fafdf24 1525@item
6bf5b4e8 1526A range of MIPS CPUs, default is the 24Kf
3f9f3aa1
FB
1527@item
1528PC style serial port
1529@item
24d4de45
TS
1530PC style IDE disk
1531@item
3f9f3aa1
FB
1532NE2000 network card
1533@end itemize
1534
24d4de45
TS
1535The Malta emulation supports the following devices:
1536
1537@itemize @minus
1538@item
0b64d008 1539Core board with MIPS 24Kf CPU and Galileo system controller
24d4de45
TS
1540@item
1541PIIX4 PCI/USB/SMbus controller
1542@item
1543The Multi-I/O chip's serial device
1544@item
3a2eeac0 1545PCI network cards (PCnet32 and others)
24d4de45
TS
1546@item
1547Malta FPGA serial device
1548@item
1f605a76 1549Cirrus (default) or any other PCI VGA graphics card
24d4de45
TS
1550@end itemize
1551
1552The ACER Pica emulation supports:
1553
1554@itemize @minus
1555@item
1556MIPS R4000 CPU
1557@item
1558PC-style IRQ and DMA controllers
1559@item
1560PC Keyboard
1561@item
1562IDE controller
1563@end itemize
3f9f3aa1 1564
f0fc6f8f
TS
1565The mipssim pseudo board emulation provides an environment similiar
1566to what the proprietary MIPS emulator uses for running Linux.
1567It supports:
6bf5b4e8
TS
1568
1569@itemize @minus
1570@item
1571A range of MIPS CPUs, default is the 24Kf
1572@item
1573PC style serial port
1574@item
1575MIPSnet network emulation
1576@end itemize
1577
88cb0a02
AJ
1578The MIPS Magnum R4000 emulation supports:
1579
1580@itemize @minus
1581@item
1582MIPS R4000 CPU
1583@item
1584PC-style IRQ controller
1585@item
1586PC Keyboard
1587@item
1588SCSI controller
1589@item
1590G364 framebuffer
1591@end itemize
1592
1593
24d4de45
TS
1594@node ARM System emulator
1595@section ARM System emulator
3f9f3aa1
FB
1596
1597Use the executable @file{qemu-system-arm} to simulate a ARM
1598machine. The ARM Integrator/CP board is emulated with the following
1599devices:
1600
1601@itemize @minus
1602@item
9ee6e8bb 1603ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
3f9f3aa1
FB
1604@item
1605Two PL011 UARTs
5fafdf24 1606@item
3f9f3aa1 1607SMC 91c111 Ethernet adapter
00a9bf19
PB
1608@item
1609PL110 LCD controller
1610@item
1611PL050 KMI with PS/2 keyboard and mouse.
a1bb27b1
PB
1612@item
1613PL181 MultiMedia Card Interface with SD card.
00a9bf19
PB
1614@end itemize
1615
1616The ARM Versatile baseboard is emulated with the following devices:
1617
1618@itemize @minus
1619@item
9ee6e8bb 1620ARM926E, ARM1136 or Cortex-A8 CPU
00a9bf19
PB
1621@item
1622PL190 Vectored Interrupt Controller
1623@item
1624Four PL011 UARTs
5fafdf24 1625@item
00a9bf19
PB
1626SMC 91c111 Ethernet adapter
1627@item
1628PL110 LCD controller
1629@item
1630PL050 KMI with PS/2 keyboard and mouse.
1631@item
1632PCI host bridge. Note the emulated PCI bridge only provides access to
1633PCI memory space. It does not provide access to PCI IO space.
4be456f1
TS
1634This means some devices (eg. ne2k_pci NIC) are not usable, and others
1635(eg. rtl8139 NIC) are only usable when the guest drivers use the memory
00a9bf19 1636mapped control registers.
e6de1bad
PB
1637@item
1638PCI OHCI USB controller.
1639@item
1640LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
a1bb27b1
PB
1641@item
1642PL181 MultiMedia Card Interface with SD card.
3f9f3aa1
FB
1643@end itemize
1644
d7739d75
PB
1645The ARM RealView Emulation baseboard is emulated with the following devices:
1646
1647@itemize @minus
1648@item
9ee6e8bb 1649ARM926E, ARM1136, ARM11MPCORE(x4) or Cortex-A8 CPU
d7739d75
PB
1650@item
1651ARM AMBA Generic/Distributed Interrupt Controller
1652@item
1653Four PL011 UARTs
5fafdf24 1654@item
d7739d75
PB
1655SMC 91c111 Ethernet adapter
1656@item
1657PL110 LCD controller
1658@item
1659PL050 KMI with PS/2 keyboard and mouse
1660@item
1661PCI host bridge
1662@item
1663PCI OHCI USB controller
1664@item
1665LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
a1bb27b1
PB
1666@item
1667PL181 MultiMedia Card Interface with SD card.
d7739d75
PB
1668@end itemize
1669
b00052e4
AZ
1670The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
1671and "Terrier") emulation includes the following peripherals:
1672
1673@itemize @minus
1674@item
1675Intel PXA270 System-on-chip (ARM V5TE core)
1676@item
1677NAND Flash memory
1678@item
1679IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
1680@item
1681On-chip OHCI USB controller
1682@item
1683On-chip LCD controller
1684@item
1685On-chip Real Time Clock
1686@item
1687TI ADS7846 touchscreen controller on SSP bus
1688@item
1689Maxim MAX1111 analog-digital converter on I@math{^2}C bus
1690@item
1691GPIO-connected keyboard controller and LEDs
1692@item
549444e1 1693Secure Digital card connected to PXA MMC/SD host
b00052e4
AZ
1694@item
1695Three on-chip UARTs
1696@item
1697WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
1698@end itemize
1699
02645926
AZ
1700The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
1701following elements:
1702
1703@itemize @minus
1704@item
1705Texas Instruments OMAP310 System-on-chip (ARM 925T core)
1706@item
1707ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
1708@item
1709On-chip LCD controller
1710@item
1711On-chip Real Time Clock
1712@item
1713TI TSC2102i touchscreen controller / analog-digital converter / Audio
1714CODEC, connected through MicroWire and I@math{^2}S busses
1715@item
1716GPIO-connected matrix keypad
1717@item
1718Secure Digital card connected to OMAP MMC/SD host
1719@item
1720Three on-chip UARTs
1721@end itemize
1722
c30bb264
AZ
1723Nokia N800 and N810 internet tablets (known also as RX-34 and RX-44 / 48)
1724emulation supports the following elements:
1725
1726@itemize @minus
1727@item
1728Texas Instruments OMAP2420 System-on-chip (ARM 1136 core)
1729@item
1730RAM and non-volatile OneNAND Flash memories
1731@item
1732Display connected to EPSON remote framebuffer chip and OMAP on-chip
1733display controller and a LS041y3 MIPI DBI-C controller
1734@item
1735TI TSC2301 (in N800) and TI TSC2005 (in N810) touchscreen controllers
1736driven through SPI bus
1737@item
1738National Semiconductor LM8323-controlled qwerty keyboard driven
1739through I@math{^2}C bus
1740@item
1741Secure Digital card connected to OMAP MMC/SD host
1742@item
1743Three OMAP on-chip UARTs and on-chip STI debugging console
1744@item
2d564691
AZ
1745A Bluetooth(R) transciever and HCI connected to an UART
1746@item
c30bb264
AZ
1747Mentor Graphics "Inventra" dual-role USB controller embedded in a TI
1748TUSB6010 chip - only USB host mode is supported
1749@item
1750TI TMP105 temperature sensor driven through I@math{^2}C bus
1751@item
1752TI TWL92230C power management companion with an RTC on I@math{^2}C bus
1753@item
1754Nokia RETU and TAHVO multi-purpose chips with an RTC, connected
1755through CBUS
1756@end itemize
1757
9ee6e8bb
PB
1758The Luminary Micro Stellaris LM3S811EVB emulation includes the following
1759devices:
1760
1761@itemize @minus
1762@item
1763Cortex-M3 CPU core.
1764@item
176564k Flash and 8k SRAM.
1766@item
1767Timers, UARTs, ADC and I@math{^2}C interface.
1768@item
1769OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
1770@end itemize
1771
1772The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
1773devices:
1774
1775@itemize @minus
1776@item
1777Cortex-M3 CPU core.
1778@item
1779256k Flash and 64k SRAM.
1780@item
1781Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
1782@item
1783OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
1784@end itemize
1785
57cd6e97
AZ
1786The Freecom MusicPal internet radio emulation includes the following
1787elements:
1788
1789@itemize @minus
1790@item
1791Marvell MV88W8618 ARM core.
1792@item
179332 MB RAM, 256 KB SRAM, 8 MB flash.
1794@item
1795Up to 2 16550 UARTs
1796@item
1797MV88W8xx8 Ethernet controller
1798@item
1799MV88W8618 audio controller, WM8750 CODEC and mixer
1800@item
1801