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