]> Git Repo - qemu.git/blame - qemu-doc.texi
Prepare for changing audio_pcm_ops dynamically (partially revert r5422)
[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)
9d0a8e6f
FB
75@item G3 BW PowerMac (PowerPC processor)
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)
b00052e4 84@item Spitz, Akita, Borzoi and Terrier 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)
52c00a5f 92@end itemize
386405f7 93
d9aedc32 94For user emulation, x86, PowerPC, ARM, 32-bit MIPS, Sparc32/64 and ColdFire(m68k) CPUs are supported.
0806e3f6 95
debc7065 96@node Installation
5b9f457a
FB
97@chapter Installation
98
15a34c63
FB
99If you want to compile QEMU yourself, see @ref{compilation}.
100
debc7065
FB
101@menu
102* install_linux:: Linux
103* install_windows:: Windows
104* install_mac:: Macintosh
105@end menu
106
107@node install_linux
1f673135
FB
108@section Linux
109
7c3fc84d
FB
110If a precompiled package is available for your distribution - you just
111have to install it. Otherwise, see @ref{compilation}.
5b9f457a 112
debc7065 113@node install_windows
1f673135 114@section Windows
8cd0ac2f 115
15a34c63 116Download the experimental binary installer at
debc7065 117@url{http://www.free.oszoo.org/@/download.html}.
d691f669 118
debc7065 119@node install_mac
1f673135 120@section Mac OS X
d691f669 121
15a34c63 122Download the experimental binary installer at
debc7065 123@url{http://www.free.oszoo.org/@/download.html}.
df0f11a0 124
debc7065 125@node QEMU PC System emulator
3f9f3aa1 126@chapter QEMU PC System emulator
1eb20527 127
debc7065
FB
128@menu
129* pcsys_introduction:: Introduction
130* pcsys_quickstart:: Quick Start
131* sec_invocation:: Invocation
132* pcsys_keys:: Keys
133* pcsys_monitor:: QEMU Monitor
134* disk_images:: Disk Images
135* pcsys_network:: Network emulation
136* direct_linux_boot:: Direct Linux Boot
137* pcsys_usb:: USB emulation
f858dcae 138* vnc_security:: VNC security
debc7065
FB
139* gdb_usage:: GDB usage
140* pcsys_os_specific:: Target OS specific information
141@end menu
142
143@node pcsys_introduction
0806e3f6
FB
144@section Introduction
145
146@c man begin DESCRIPTION
147
3f9f3aa1
FB
148The QEMU PC System emulator simulates the
149following peripherals:
0806e3f6
FB
150
151@itemize @minus
5fafdf24 152@item
15a34c63 153i440FX host PCI bridge and PIIX3 PCI to ISA bridge
0806e3f6 154@item
15a34c63
FB
155Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
156extensions (hardware level, including all non standard modes).
0806e3f6
FB
157@item
158PS/2 mouse and keyboard
5fafdf24 159@item
15a34c63 1602 PCI IDE interfaces with hard disk and CD-ROM support
1f673135
FB
161@item
162Floppy disk
5fafdf24 163@item
c4a7060c 164PCI/ISA PCI network adapters
0806e3f6 165@item
05d5818c
FB
166Serial ports
167@item
c0fe3827
FB
168Creative SoundBlaster 16 sound card
169@item
170ENSONIQ AudioPCI ES1370 sound card
171@item
e5c9a13e
AZ
172Intel 82801AA AC97 Audio compatible sound card
173@item
c0fe3827 174Adlib(OPL2) - Yamaha YM3812 compatible chip
b389dbfb 175@item
26463dbc
AZ
176Gravis Ultrasound GF1 sound card
177@item
cc53d26d 178CS4231A compatible sound card
179@item
b389dbfb 180PCI UHCI USB controller and a virtual USB hub.
0806e3f6
FB
181@end itemize
182
3f9f3aa1
FB
183SMP is supported with up to 255 CPUs.
184
cc53d26d 185Note that adlib, ac97, gus and cs4231a are only available when QEMU
0c58ac1c 186was configured with --audio-card-list option containing the name(s) of
e5178e8d 187required card(s).
c0fe3827 188
15a34c63
FB
189QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
190VGA BIOS.
191
c0fe3827
FB
192QEMU uses YM3812 emulation by Tatsuyuki Satoh.
193
26463dbc
AZ
194QEMU uses GUS emulation(GUSEMU32 @url{http://www.deinmeister.de/gusemu/})
195by Tibor "TS" Schütz.
423d65f4 196
cc53d26d 197CS4231A is the chip used in Windows Sound System and GUSMAX products
198
0806e3f6
FB
199@c man end
200
debc7065 201@node pcsys_quickstart
1eb20527
FB
202@section Quick Start
203
285dc330 204Download and uncompress the linux image (@file{linux.img}) and type:
0806e3f6
FB
205
206@example
285dc330 207qemu linux.img
0806e3f6
FB
208@end example
209
210Linux should boot and give you a prompt.
211
6cc721cf 212@node sec_invocation
ec410fc9
FB
213@section Invocation
214
215@example
0806e3f6 216@c man begin SYNOPSIS
89dfe898 217usage: qemu [options] [@var{disk_image}]
0806e3f6 218@c man end
ec410fc9
FB
219@end example
220
0806e3f6 221@c man begin OPTIONS
9d4520d0 222@var{disk_image} is a raw hard disk image for IDE hard disk 0.
ec410fc9
FB
223
224General options:
225@table @option
89dfe898
TS
226@item -M @var{machine}
227Select the emulated @var{machine} (@code{-M ?} for list)
3dbbdc25 228
89dfe898
TS
229@item -fda @var{file}
230@item -fdb @var{file}
debc7065 231Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can
19cb3738 232use the host floppy by using @file{/dev/fd0} as filename (@pxref{host_drives}).
2be3bc02 233
89dfe898
TS
234@item -hda @var{file}
235@item -hdb @var{file}
236@item -hdc @var{file}
237@item -hdd @var{file}
debc7065 238Use @var{file} as hard disk 0, 1, 2 or 3 image (@pxref{disk_images}).
1f47a922 239
89dfe898
TS
240@item -cdrom @var{file}
241Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and
be3edd95 242@option{-cdrom} at the same time). You can use the host CD-ROM by
19cb3738 243using @file{/dev/cdrom} as filename (@pxref{host_drives}).
181f1558 244
e0e7ada1
AZ
245@item -drive @var{option}[,@var{option}[,@var{option}[,...]]]
246
247Define a new drive. Valid options are:
248
249@table @code
250@item file=@var{file}
251This option defines which disk image (@pxref{disk_images}) to use with
609497ab
AZ
252this drive. If the filename contains comma, you must double it
253(for instance, "file=my,,file" to use file "my,file").
e0e7ada1
AZ
254@item if=@var{interface}
255This option defines on which type on interface the drive is connected.
256Available types are: ide, scsi, sd, mtd, floppy, pflash.
257@item bus=@var{bus},unit=@var{unit}
258These options define where is connected the drive by defining the bus number and
259the unit id.
260@item index=@var{index}
261This option defines where is connected the drive by using an index in the list
262of available connectors of a given interface type.
263@item media=@var{media}
264This option defines the type of the media: disk or cdrom.
265@item cyls=@var{c},heads=@var{h},secs=@var{s}[,trans=@var{t}]
266These options have the same definition as they have in @option{-hdachs}.
267@item snapshot=@var{snapshot}
268@var{snapshot} is "on" or "off" and allows to enable snapshot for given drive (see @option{-snapshot}).
33f00271
AZ
269@item cache=@var{cache}
270@var{cache} is "on" or "off" and allows to disable host cache to access data.
1e72d3b7
AJ
271@item format=@var{format}
272Specify which disk @var{format} will be used rather than detecting
273the format. Can be used to specifiy format=raw to avoid interpreting
274an untrusted format header.
e0e7ada1
AZ
275@end table
276
277Instead of @option{-cdrom} you can use:
278@example
279qemu -drive file=file,index=2,media=cdrom
280@end example
281
282Instead of @option{-hda}, @option{-hdb}, @option{-hdc}, @option{-hdd}, you can
283use:
284@example
285qemu -drive file=file,index=0,media=disk
286qemu -drive file=file,index=1,media=disk
287qemu -drive file=file,index=2,media=disk
288qemu -drive file=file,index=3,media=disk
289@end example
290
291You can connect a CDROM to the slave of ide0:
292@example
293qemu -drive file=file,if=ide,index=1,media=cdrom
294@end example
295
296If you don't specify the "file=" argument, you define an empty drive:
297@example
298qemu -drive if=ide,index=1,media=cdrom
299@end example
300
301You can connect a SCSI disk with unit ID 6 on the bus #0:
302@example
303qemu -drive file=file,if=scsi,bus=0,unit=6
304@end example
305
306Instead of @option{-fda}, @option{-fdb}, you can use:
307@example
308qemu -drive file=file,index=0,if=floppy
309qemu -drive file=file,index=1,if=floppy
310@end example
311
312By default, @var{interface} is "ide" and @var{index} is automatically
313incremented:
314@example
315qemu -drive file=a -drive file=b"
316@end example
317is interpreted like:
318@example
319qemu -hda a -hdb b
320@end example
321
eec85c2a
TS
322@item -boot [a|c|d|n]
323Boot on floppy (a), hard disk (c), CD-ROM (d), or Etherboot (n). Hard disk boot
324is the default.
1f47a922 325
181f1558 326@item -snapshot
1f47a922
FB
327Write to temporary files instead of disk image files. In this case,
328the raw disk image you use is not written back. You can however force
42550fde 329the write back by pressing @key{C-a s} (@pxref{disk_images}).
ec410fc9 330
52ca8d6a
FB
331@item -no-fd-bootchk
332Disable boot signature checking for floppy disks in Bochs BIOS. It may
333be needed to boot from old floppy disks.
334
89dfe898 335@item -m @var{megs}
00f82b8a
AJ
336Set virtual RAM size to @var{megs} megabytes. Default is 128 MiB. Optionally,
337a suffix of ``M'' or ``G'' can be used to signify a value in megabytes or
338gigabytes respectively.
ec410fc9 339
34a3d239
BS
340@item -cpu @var{model}
341Select CPU model (-cpu ? for list and additional feature selection)
342
89dfe898 343@item -smp @var{n}
3f9f3aa1 344Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
a785e42e
BS
345CPUs are supported. On Sparc32 target, Linux limits the number of usable CPUs
346to 4.
3f9f3aa1 347
1d14ffa9
FB
348@item -audio-help
349
350Will show the audio subsystem help: list of drivers, tunable
351parameters.
352
89dfe898 353@item -soundhw @var{card1}[,@var{card2},...] or -soundhw all
1d14ffa9
FB
354
355Enable audio and selected sound hardware. Use ? to print all
356available sound hardware.
357
358@example
359qemu -soundhw sb16,adlib hda
360qemu -soundhw es1370 hda
e5c9a13e 361qemu -soundhw ac97 hda
6a36d84e 362qemu -soundhw all hda
1d14ffa9
FB
363qemu -soundhw ?
364@end example
a8c490cd 365
e5c9a13e
AZ
366Note that Linux's i810_audio OSS kernel (for AC97) module might
367require manually specifying clocking.
368
369@example
370modprobe i810_audio clocking=48000
371@end example
372
15a34c63
FB
373@item -localtime
374Set the real time clock to local time (the default is to UTC
375time). This option is needed to have correct date in MS-DOS or
376Windows.
377
89dfe898 378@item -startdate @var{date}
7e0af5d0
FB
379Set the initial date of the real time clock. Valid format for
380@var{date} are: @code{now} or @code{2006-06-17T16:01:21} or
381@code{2006-06-17}. The default value is @code{now}.
382
89dfe898 383@item -pidfile @var{file}
f7cce898
FB
384Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
385from a script.
386
71e3ceb8
TS
387@item -daemonize
388Daemonize the QEMU process after initialization. QEMU will not detach from
389standard IO until it is ready to receive connections on any of its devices.
390This option is a useful way for external programs to launch QEMU without having
391to cope with initialization race conditions.
392
9d0a8e6f
FB
393@item -win2k-hack
394Use it when installing Windows 2000 to avoid a disk full bug. After
395Windows 2000 is installed, you no longer need this option (this option
396slows down the IDE transfers).
397
89dfe898
TS
398@item -option-rom @var{file}
399Load the contents of @var{file} as an option ROM.
400This option is useful to load things like EtherBoot.
9ae02555 401
89dfe898
TS
402@item -name @var{name}
403Sets the @var{name} of the guest.
404This name will be display in the SDL window caption.
405The @var{name} will also be used for the VNC server.
c35734b2 406
0806e3f6
FB
407@end table
408
f858dcae
TS
409Display options:
410@table @option
411
412@item -nographic
413
414Normally, QEMU uses SDL to display the VGA output. With this option,
415you can totally disable graphical output so that QEMU is a simple
416command line application. The emulated serial port is redirected on
417the console. Therefore, you can still use QEMU to debug a Linux kernel
418with a serial console.
419
052caf70
AJ
420@item -curses
421
422Normally, QEMU uses SDL to display the VGA output. With this option,
423QEMU can display the VGA output when in text mode using a
424curses/ncurses interface. Nothing is displayed in graphical mode.
425
f858dcae
TS
426@item -no-frame
427
428Do not use decorations for SDL windows and start them using the whole
429available screen space. This makes the using QEMU in a dedicated desktop
430workspace more convenient.
431
99aa9e4c
AJ
432@item -no-quit
433
434Disable SDL window close capability.
435
f858dcae
TS
436@item -full-screen
437Start in full screen.
438
89dfe898 439@item -vnc @var{display}[,@var{option}[,@var{option}[,...]]]
f858dcae
TS
440
441Normally, QEMU uses SDL to display the VGA output. With this option,
442you can have QEMU listen on VNC display @var{display} and redirect the VGA
443display over the VNC session. It is very useful to enable the usb
444tablet device when using this option (option @option{-usbdevice
445tablet}). When using the VNC display, you must use the @option{-k}
446parameter to set the keyboard layout if you are not using en-us. Valid
447syntax for the @var{display} is
448
449@table @code
450
3aa3eea3 451@item @var{host}:@var{d}
f858dcae 452
3aa3eea3
AZ
453TCP connections will only be allowed from @var{host} on display @var{d}.
454By convention the TCP port is 5900+@var{d}. Optionally, @var{host} can
455be omitted in which case the server will accept connections from any host.
f858dcae 456
3aa3eea3 457@item @code{unix}:@var{path}
f858dcae
TS
458
459Connections will be allowed over UNIX domain sockets where @var{path} is the
460location of a unix socket to listen for connections on.
461
89dfe898 462@item none
f858dcae 463
3aa3eea3
AZ
464VNC is initialized but not started. The monitor @code{change} command
465can be used to later start the VNC server.
f858dcae
TS
466
467@end table
468
469Following the @var{display} value there may be one or more @var{option} flags
470separated by commas. Valid options are
471
472@table @code
473
3aa3eea3
AZ
474@item reverse
475
476Connect to a listening VNC client via a ``reverse'' connection. The
477client is specified by the @var{display}. For reverse network
478connections (@var{host}:@var{d},@code{reverse}), the @var{d} argument
479is a TCP port number, not a display number.
480
89dfe898 481@item password
f858dcae
TS
482
483Require that password based authentication is used for client connections.
484The password must be set separately using the @code{change} command in the
485@ref{pcsys_monitor}
486
89dfe898 487@item tls
f858dcae
TS
488
489Require that client use TLS when communicating with the VNC server. This
490uses anonymous TLS credentials so is susceptible to a man-in-the-middle
491attack. It is recommended that this option be combined with either the
492@var{x509} or @var{x509verify} options.
493
89dfe898 494@item x509=@var{/path/to/certificate/dir}
f858dcae 495
89dfe898 496Valid if @option{tls} is specified. Require that x509 credentials are used
f858dcae
TS
497for negotiating the TLS session. The server will send its x509 certificate
498to the client. It is recommended that a password be set on the VNC server
499to provide authentication of the client when this is used. The path following
500this option specifies where the x509 certificates are to be loaded from.
501See the @ref{vnc_security} section for details on generating certificates.
502
89dfe898 503@item x509verify=@var{/path/to/certificate/dir}
f858dcae 504
89dfe898 505Valid if @option{tls} is specified. Require that x509 credentials are used
f858dcae
TS
506for negotiating the TLS session. The server will send its x509 certificate
507to the client, and request that the client send its own x509 certificate.
508The server will validate the client's certificate against the CA certificate,
509and reject clients when validation fails. If the certificate authority is
510trusted, this is a sufficient authentication mechanism. You may still wish
511to set a password on the VNC server as a second authentication layer. The
512path following this option specifies where the x509 certificates are to
513be loaded from. See the @ref{vnc_security} section for details on generating
514certificates.
515
516@end table
517
89dfe898 518@item -k @var{language}
f858dcae
TS
519
520Use keyboard layout @var{language} (for example @code{fr} for
521French). This option is only needed where it is not easy to get raw PC
522keycodes (e.g. on Macs, with some X11 servers or with a VNC
523display). You don't normally need to use it on PC/Linux or PC/Windows
524hosts.
525
526The available layouts are:
527@example
528ar de-ch es fo fr-ca hu ja mk no pt-br sv
529da en-gb et fr fr-ch is lt nl pl ru th
530de en-us fi fr-be hr it lv nl-be pt sl tr
531@end example
532
533The default is @code{en-us}.
534
535@end table
536
b389dbfb
FB
537USB options:
538@table @option
539
540@item -usb
541Enable the USB driver (will be the default soon)
542
89dfe898 543@item -usbdevice @var{devname}
0aff66b5 544Add the USB device @var{devname}. @xref{usb_devices}.
8fccda83
TS
545
546@table @code
547
548@item mouse
549Virtual Mouse. This will override the PS/2 mouse emulation when activated.
550
551@item tablet
552Pointer device that uses absolute coordinates (like a touchscreen). This
553means qemu is able to report the mouse position without having to grab the
554mouse. Also overrides the PS/2 mouse emulation when activated.
555
334c0241
AJ
556@item disk:[format=@var{format}]:file
557Mass storage device based on file. The optional @var{format} argument
558will be used rather than detecting the format. Can be used to specifiy
559format=raw to avoid interpreting an untrusted format header.
8fccda83
TS
560
561@item host:bus.addr
562Pass through the host device identified by bus.addr (Linux only).
563
564@item host:vendor_id:product_id
565Pass through the host device identified by vendor_id:product_id (Linux only).
566
db380c06
AZ
567@item serial:[vendorid=@var{vendor_id}][,productid=@var{product_id}]:@var{dev}
568Serial converter to host character device @var{dev}, see @code{-serial} for the
569available devices.
570
2e4d9fb1
AJ
571@item braille
572Braille device. This will use BrlAPI to display the braille output on a real
573or fake device.
574
9ad97e65 575@item net:options
6c9f886c
AZ
576Network adapter that supports CDC ethernet and RNDIS protocols.
577
8fccda83
TS
578@end table
579
b389dbfb
FB
580@end table
581
1f673135
FB
582Network options:
583
584@table @option
585
89dfe898 586@item -net nic[,vlan=@var{n}][,macaddr=@var{addr}][,model=@var{type}]
41d03949 587Create a new Network Interface Card and connect it to VLAN @var{n} (@var{n}
c4a7060c 588= 0 is the default). The NIC is an ne2k_pci by default on the PC
41d03949
FB
589target. Optionally, the MAC address can be changed. If no
590@option{-net} option is specified, a single NIC is created.
549444e1
AZ
591Qemu can emulate several different models of network card.
592Valid values for @var{type} are
593@code{i82551}, @code{i82557b}, @code{i82559er},
594@code{ne2k_pci}, @code{ne2k_isa}, @code{pcnet}, @code{rtl8139},
9ad97e65 595@code{e1000}, @code{smc91c111}, @code{lance} and @code{mcf_fec}.
c4a7060c
BS
596Not all devices are supported on all targets. Use -net nic,model=?
597for a list of available devices for your target.
41d03949 598
89dfe898 599@item -net user[,vlan=@var{n}][,hostname=@var{name}]
7e89463d 600Use the user mode network stack which requires no administrator
4be456f1 601privilege to run. @option{hostname=name} can be used to specify the client
115defd1 602hostname reported by the builtin DHCP server.
41d03949 603
89dfe898 604@item -net tap[,vlan=@var{n}][,fd=@var{h}][,ifname=@var{name}][,script=@var{file}]
41d03949
FB
605Connect the host TAP network interface @var{name} to VLAN @var{n} and
606use the network script @var{file} to configure it. The default
6a1cbf68
TS
607network script is @file{/etc/qemu-ifup}. Use @option{script=no} to
608disable script execution. If @var{name} is not
89dfe898 609provided, the OS automatically provides one. @option{fd}=@var{h} can be
41d03949 610used to specify the handle of an already opened host TAP interface. Example:
1f673135 611
41d03949
FB
612@example
613qemu linux.img -net nic -net tap
614@end example
615
616More complicated example (two NICs, each one connected to a TAP device)
617@example
618qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
619 -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
620@end example
3f1a88f4 621
3f1a88f4 622
89dfe898 623@item -net socket[,vlan=@var{n}][,fd=@var{h}][,listen=[@var{host}]:@var{port}][,connect=@var{host}:@var{port}]
1f673135 624
41d03949
FB
625Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual
626machine using a TCP socket connection. If @option{listen} is
627specified, QEMU waits for incoming connections on @var{port}
628(@var{host} is optional). @option{connect} is used to connect to
89dfe898 629another QEMU instance using the @option{listen} option. @option{fd}=@var{h}
3d830459 630specifies an already opened TCP socket.
1f673135 631
41d03949
FB
632Example:
633@example
634# launch a first QEMU instance
debc7065
FB
635qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
636 -net socket,listen=:1234
637# connect the VLAN 0 of this instance to the VLAN 0
638# of the first instance
639qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
640 -net socket,connect=127.0.0.1:1234
41d03949 641@end example
52c00a5f 642
89dfe898 643@item -net socket[,vlan=@var{n}][,fd=@var{h}][,mcast=@var{maddr}:@var{port}]
3d830459
FB
644
645Create a VLAN @var{n} shared with another QEMU virtual
5fafdf24 646machines using a UDP multicast socket, effectively making a bus for
3d830459
FB
647every QEMU with same multicast address @var{maddr} and @var{port}.
648NOTES:
649@enumerate
5fafdf24
TS
650@item
651Several QEMU can be running on different hosts and share same bus (assuming
3d830459
FB
652correct multicast setup for these hosts).
653@item
654mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see
655@url{http://user-mode-linux.sf.net}.
4be456f1
TS
656@item
657Use @option{fd=h} to specify an already opened UDP multicast socket.
3d830459
FB
658@end enumerate
659
660Example:
661@example
662# launch one QEMU instance
debc7065
FB
663qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
664 -net socket,mcast=230.0.0.1:1234
3d830459 665# launch another QEMU instance on same "bus"
debc7065
FB
666qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
667 -net socket,mcast=230.0.0.1:1234
3d830459 668# launch yet another QEMU instance on same "bus"
debc7065
FB
669qemu linux.img -net nic,macaddr=52:54:00:12:34:58 \
670 -net socket,mcast=230.0.0.1:1234
3d830459
FB
671@end example
672
673Example (User Mode Linux compat.):
674@example
debc7065
FB
675# launch QEMU instance (note mcast address selected
676# is UML's default)
677qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
678 -net socket,mcast=239.192.168.1:1102
3d830459
FB
679# launch UML
680/path/to/linux ubd0=/path/to/root_fs eth0=mcast
681@end example
8a16d273
TS
682
683@item -net vde[,vlan=@var{n}][,sock=@var{socketpath}][,port=@var{n}][,group=@var{groupname}][,mode=@var{octalmode}]
684Connect VLAN @var{n} to PORT @var{n} of a vde switch running on host and
685listening for incoming connections on @var{socketpath}. Use GROUP @var{groupname}
686and MODE @var{octalmode} to change default ownership and permissions for
687communication port. This option is available only if QEMU has been compiled
688with vde support enabled.
689
690Example:
691@example
692# launch vde switch
693vde_switch -F -sock /tmp/myswitch
694# launch QEMU instance
695qemu linux.img -net nic -net vde,sock=/tmp/myswitch
696@end example
3d830459 697
41d03949
FB
698@item -net none
699Indicate that no network devices should be configured. It is used to
039af320
FB
700override the default configuration (@option{-net nic -net user}) which
701is activated if no @option{-net} options are provided.
52c00a5f 702
89dfe898 703@item -tftp @var{dir}
9bf05444 704When using the user mode network stack, activate a built-in TFTP
0db1137d
TS
705server. The files in @var{dir} will be exposed as the root of a TFTP server.
706The TFTP client on the guest must be configured in binary mode (use the command
707@code{bin} of the Unix TFTP client). The host IP address on the guest is as
708usual 10.0.2.2.
9bf05444 709
89dfe898 710@item -bootp @var{file}
47d5d01a
TS
711When using the user mode network stack, broadcast @var{file} as the BOOTP
712filename. In conjunction with @option{-tftp}, this can be used to network boot
713a guest from a local directory.
714
715Example (using pxelinux):
716@example
717qemu -hda linux.img -boot n -tftp /path/to/tftp/files -bootp /pxelinux.0
718@end example
719
89dfe898 720@item -smb @var{dir}
2518bd0d 721When using the user mode network stack, activate a built-in SMB
89dfe898 722server so that Windows OSes can access to the host files in @file{@var{dir}}
2518bd0d
FB
723transparently.
724
725In the guest Windows OS, the line:
726@example
72710.0.2.4 smbserver
728@end example
729must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
730or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
731
89dfe898 732Then @file{@var{dir}} can be accessed in @file{\\smbserver\qemu}.
2518bd0d
FB
733
734Note that a SAMBA server must be installed on the host OS in
366dfc52 735@file{/usr/sbin/smbd}. QEMU was tested successfully with smbd version
6cc721cf 7362.2.7a from the Red Hat 9 and version 3.0.10-1.fc3 from Fedora Core 3.
2518bd0d 737
89dfe898 738@item -redir [tcp|udp]:@var{host-port}:[@var{guest-host}]:@var{guest-port}
9bf05444
FB
739
740When using the user mode network stack, redirect incoming TCP or UDP
741connections to the host port @var{host-port} to the guest
742@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
743is not specified, its value is 10.0.2.15 (default address given by the
744built-in DHCP server).
745
746For example, to redirect host X11 connection from screen 1 to guest
747screen 0, use the following:
748
749@example
750# on the host
751qemu -redir tcp:6001::6000 [...]
752# this host xterm should open in the guest X11 server
753xterm -display :1
754@end example
755
756To redirect telnet connections from host port 5555 to telnet port on
757the guest, use the following:
758
759@example
760# on the host
761qemu -redir tcp:5555::23 [...]
762telnet localhost 5555
763@end example
764
765Then when you use on the host @code{telnet localhost 5555}, you
766connect to the guest telnet server.
767
1f673135
FB
768@end table
769
41d03949 770Linux boot specific: When using these options, you can use a given
1f673135
FB
771Linux kernel without installing it in the disk image. It can be useful
772for easier testing of various kernels.
773
0806e3f6
FB
774@table @option
775
89dfe898 776@item -kernel @var{bzImage}
0806e3f6
FB
777Use @var{bzImage} as kernel image.
778
89dfe898 779@item -append @var{cmdline}
0806e3f6
FB
780Use @var{cmdline} as kernel command line
781
89dfe898 782@item -initrd @var{file}
0806e3f6
FB
783Use @var{file} as initial ram disk.
784
ec410fc9
FB
785@end table
786
15a34c63 787Debug/Expert options:
ec410fc9 788@table @option
a0a821a4 789
89dfe898 790@item -serial @var{dev}
0bab00f3
FB
791Redirect the virtual serial port to host character device
792@var{dev}. The default device is @code{vc} in graphical mode and
793@code{stdio} in non graphical mode.
794
795This option can be used several times to simulate up to 4 serials
796ports.
797
c03b0f0f
FB
798Use @code{-serial none} to disable all serial ports.
799
0bab00f3 800Available character devices are:
a0a821a4 801@table @code
af3a9031
TS
802@item vc[:WxH]
803Virtual console. Optionally, a width and height can be given in pixel with
804@example
805vc:800x600
806@end example
807It is also possible to specify width or height in characters:
808@example
809vc:80Cx24C
810@end example
a0a821a4
FB
811@item pty
812[Linux only] Pseudo TTY (a new PTY is automatically allocated)
c03b0f0f
FB
813@item none
814No device is allocated.
a0a821a4
FB
815@item null
816void device
f8d179e3 817@item /dev/XXX
e57a8c0e 818[Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
f8d179e3 819parameters are set according to the emulated ones.
89dfe898 820@item /dev/parport@var{N}
e57a8c0e 821[Linux only, parallel port only] Use host parallel port
5867c88a 822@var{N}. Currently SPP and EPP parallel port features can be used.
89dfe898
TS
823@item file:@var{filename}
824Write output to @var{filename}. No character can be read.
a0a821a4
FB
825@item stdio
826[Unix only] standard input/output
89dfe898 827@item pipe:@var{filename}
0bab00f3 828name pipe @var{filename}
89dfe898 829@item COM@var{n}
0bab00f3 830[Windows only] Use host serial port @var{n}
89dfe898
TS
831@item udp:[@var{remote_host}]:@var{remote_port}[@@[@var{src_ip}]:@var{src_port}]
832This implements UDP Net Console.
833When @var{remote_host} or @var{src_ip} are not specified
834they default to @code{0.0.0.0}.
835When not using a specified @var{src_port} a random port is automatically chosen.
951f1351
FB
836
837If you just want a simple readonly console you can use @code{netcat} or
838@code{nc}, by starting qemu with: @code{-serial udp::4555} and nc as:
839@code{nc -u -l -p 4555}. Any time qemu writes something to that port it
840will appear in the netconsole session.
0bab00f3
FB
841
842If you plan to send characters back via netconsole or you want to stop
843and start qemu a lot of times, you should have qemu use the same
844source port each time by using something like @code{-serial
951f1351 845udp::4555@@:4556} to qemu. Another approach is to use a patched
0bab00f3
FB
846version of netcat which can listen to a TCP port and send and receive
847characters via udp. If you have a patched version of netcat which
848activates telnet remote echo and single char transfer, then you can
849use the following options to step up a netcat redirector to allow
850telnet on port 5555 to access the qemu port.
851@table @code
951f1351
FB
852@item Qemu Options:
853-serial udp::4555@@:4556
854@item netcat options:
855-u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
856@item telnet options:
857localhost 5555
858@end table
859
860
89dfe898 861@item tcp:[@var{host}]:@var{port}[,@var{server}][,nowait][,nodelay]
951f1351
FB
862The TCP Net Console has two modes of operation. It can send the serial
863I/O to a location or wait for a connection from a location. By default
864the TCP Net Console is sent to @var{host} at the @var{port}. If you use
f542086d
FB
865the @var{server} option QEMU will wait for a client socket application
866to connect to the port before continuing, unless the @code{nowait}
f7499989 867option was specified. The @code{nodelay} option disables the Nagle buffering
4be456f1 868algorithm. If @var{host} is omitted, 0.0.0.0 is assumed. Only
951f1351
FB
869one TCP connection at a time is accepted. You can use @code{telnet} to
870connect to the corresponding character device.
871@table @code
872@item Example to send tcp console to 192.168.0.2 port 4444
873-serial tcp:192.168.0.2:4444
874@item Example to listen and wait on port 4444 for connection
875-serial tcp::4444,server
876@item Example to not wait and listen on ip 192.168.0.100 port 4444
877-serial tcp:192.168.0.100:4444,server,nowait
a0a821a4 878@end table
a0a821a4 879
89dfe898 880@item telnet:@var{host}:@var{port}[,server][,nowait][,nodelay]
951f1351
FB
881The telnet protocol is used instead of raw tcp sockets. The options
882work the same as if you had specified @code{-serial tcp}. The
883difference is that the port acts like a telnet server or client using
884telnet option negotiation. This will also allow you to send the
885MAGIC_SYSRQ sequence if you use a telnet that supports sending the break
886sequence. Typically in unix telnet you do it with Control-] and then
887type "send break" followed by pressing the enter key.
0bab00f3 888
89dfe898 889@item unix:@var{path}[,server][,nowait]
ffd843bc
TS
890A unix domain socket is used instead of a tcp socket. The option works the
891same as if you had specified @code{-serial tcp} except the unix domain socket
892@var{path} is used for connections.
893
89dfe898 894@item mon:@var{dev_string}
20d8a3ed
TS
895This is a special option to allow the monitor to be multiplexed onto
896another serial port. The monitor is accessed with key sequence of
897@key{Control-a} and then pressing @key{c}. See monitor access
898@ref{pcsys_keys} in the -nographic section for more keys.
899@var{dev_string} should be any one of the serial devices specified
900above. An example to multiplex the monitor onto a telnet server
901listening on port 4444 would be:
902@table @code
903@item -serial mon:telnet::4444,server,nowait
904@end table
905
2e4d9fb1
AJ
906@item braille
907Braille device. This will use BrlAPI to display the braille output on a real
908or fake device.
909
0bab00f3 910@end table
05d5818c 911
89dfe898 912@item -parallel @var{dev}
e57a8c0e
FB
913Redirect the virtual parallel port to host device @var{dev} (same
914devices as the serial port). On Linux hosts, @file{/dev/parportN} can
915be used to use hardware devices connected on the corresponding host
916parallel port.
917
918This option can be used several times to simulate up to 3 parallel
919ports.
920
c03b0f0f
FB
921Use @code{-parallel none} to disable all parallel ports.
922
89dfe898 923@item -monitor @var{dev}
a0a821a4
FB
924Redirect the monitor to host device @var{dev} (same devices as the
925serial port).
926The default device is @code{vc} in graphical mode and @code{stdio} in
927non graphical mode.
928
20d8a3ed
TS
929@item -echr numeric_ascii_value
930Change the escape character used for switching to the monitor when using
931monitor and serial sharing. The default is @code{0x01} when using the
932@code{-nographic} option. @code{0x01} is equal to pressing
933@code{Control-a}. You can select a different character from the ascii
934control keys where 1 through 26 map to Control-a through Control-z. For
935instance you could use the either of the following to change the escape
936character to Control-t.
937@table @code
938@item -echr 0x14
939@item -echr 20
940@end table
941
ec410fc9 942@item -s
5fafdf24 943Wait gdb connection to port 1234 (@pxref{gdb_usage}).
89dfe898 944@item -p @var{port}
4046d913
PB
945Change gdb connection port. @var{port} can be either a decimal number
946to specify a TCP port, or a host device (same devices as the serial port).
52c00a5f
FB
947@item -S
948Do not start CPU at startup (you must type 'c' in the monitor).
3b46e624 949@item -d
9d4520d0 950Output log in /tmp/qemu.log
89dfe898 951@item -hdachs @var{c},@var{h},@var{s},[,@var{t}]
46d4767d
FB
952Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
953@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
954translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
4be456f1 955all those parameters. This option is useful for old MS-DOS disk
46d4767d 956images.
7c3fc84d 957
87b47350
FB
958@item -L path
959Set the directory for the BIOS, VGA BIOS and keymaps.
960
3893c124 961@item -vga @var{type}
962Select type of VGA card to emulate. Valid values for @var{type} are
963@table @code
964@item cirrus
965Cirrus Logic GD5446 Video card. All Windows versions starting from
966Windows 95 should recognize and use this graphic card. For optimal
967performances, use 16 bit color depth in the guest and the host OS.
968(This one is the default)
969@item std
970Standard VGA card with Bochs VBE extensions. If your guest OS
971supports the VESA 2.0 VBE extensions (e.g. Windows XP) and if you want
972to use high resolution modes (>= 1280x1024x16) then you should use
973this option.
974@item vmware
975VMWare SVGA-II compatible adapter. Use it if you have sufficiently
976recent XFree86/XOrg server or Windows guest with a driver for this
977card.
978@end table
3cb0853a 979
3c656346
FB
980@item -no-acpi
981Disable ACPI (Advanced Configuration and Power Interface) support. Use
982it if your guest OS complains about ACPI problems (PC target machine
983only).
984
d1beab82
FB
985@item -no-reboot
986Exit instead of rebooting.
987
99aa9e4c
AJ
988@item -no-shutdown
989Don't exit QEMU on guest shutdown, but instead only stop the emulation.
990This allows for instance switching to monitor to commit changes to the
991disk image.
992
d63d307f
FB
993@item -loadvm file
994Start right away with a saved state (@code{loadvm} in monitor)
8e71621f
PB
995
996@item -semihosting
a87295e8
PB
997Enable semihosting syscall emulation (ARM and M68K target machines only).
998
999On ARM this implements the "Angel" interface.
1000On M68K this implements the "ColdFire GDB" interface used by libgloss.
1001
8e71621f
PB
1002Note that this allows guest direct access to the host filesystem,
1003so should only be used with trusted guest OS.
2e70f6ef
PB
1004
1005@item -icount [N|auto]
1006Enable virtual instruction counter. The virtual cpu will execute one
1007instruction every 2^N ns of virtual time. If @code{auto} is specified
1008then the virtual cpu speed will be automatically adjusted to keep virtual
1009time within a few seconds of real time.
1010
1011Note that while this option can give deterministic behavior, it does not
1012provide cycle accurate emulation. Modern CPUs contain superscalar out of
dd5d6fe9 1013order cores with complex cache hierarchies. The number of instructions
2e70f6ef 1014executed often has little or no correlation with actual performance.
ec410fc9
FB
1015@end table
1016
3e11db9a
FB
1017@c man end
1018
debc7065 1019@node pcsys_keys
3e11db9a
FB
1020@section Keys
1021
1022@c man begin OPTIONS
1023
a1b74fe8
FB
1024During the graphical emulation, you can use the following keys:
1025@table @key
f9859310 1026@item Ctrl-Alt-f
a1b74fe8 1027Toggle full screen
a0a821a4 1028
f9859310 1029@item Ctrl-Alt-n
a0a821a4
FB
1030Switch to virtual console 'n'. Standard console mappings are:
1031@table @emph
1032@item 1
1033Target system display
1034@item 2
1035Monitor
1036@item 3
1037Serial port
a1b74fe8
FB
1038@end table
1039
f9859310 1040@item Ctrl-Alt
a0a821a4
FB
1041Toggle mouse and keyboard grab.
1042@end table
1043
3e11db9a
FB
1044In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
1045@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
1046
a0a821a4
FB
1047During emulation, if you are using the @option{-nographic} option, use
1048@key{Ctrl-a h} to get terminal commands:
ec410fc9
FB
1049
1050@table @key
a1b74fe8 1051@item Ctrl-a h
ec410fc9 1052Print this help
3b46e624 1053@item Ctrl-a x
366dfc52 1054Exit emulator
3b46e624 1055@item Ctrl-a s
1f47a922 1056Save disk data back to file (if -snapshot)
20d8a3ed
TS
1057@item Ctrl-a t
1058toggle console timestamps
a1b74fe8 1059@item Ctrl-a b
1f673135 1060Send break (magic sysrq in Linux)
a1b74fe8 1061@item Ctrl-a c
1f673135 1062Switch between console and monitor
a1b74fe8
FB
1063@item Ctrl-a Ctrl-a
1064Send Ctrl-a
ec410fc9 1065@end table
0806e3f6
FB
1066@c man end
1067
1068@ignore
1069
1f673135
FB
1070@c man begin SEEALSO
1071The HTML documentation of QEMU for more precise information and Linux
1072user mode emulator invocation.
1073@c man end
1074
1075@c man begin AUTHOR
1076Fabrice Bellard
1077@c man end
1078
1079@end ignore
1080
debc7065 1081@node pcsys_monitor
1f673135
FB
1082@section QEMU Monitor
1083
1084The QEMU monitor is used to give complex commands to the QEMU
1085emulator. You can use it to:
1086
1087@itemize @minus
1088
1089@item
e598752a 1090Remove or insert removable media images
89dfe898 1091(such as CD-ROM or floppies).
1f673135 1092
5fafdf24 1093@item
1f673135
FB
1094Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
1095from a disk file.
1096
1097@item Inspect the VM state without an external debugger.
1098
1099@end itemize
1100
1101@subsection Commands
1102
1103The following commands are available:
1104
1105@table @option
1106
89dfe898 1107@item help or ? [@var{cmd}]
1f673135
FB
1108Show the help for all commands or just for command @var{cmd}.
1109
3b46e624 1110@item commit
89dfe898 1111Commit changes to the disk images (if -snapshot is used).
1f673135 1112
89dfe898
TS
1113@item info @var{subcommand}
1114Show various information about the system state.
1f673135
FB
1115
1116@table @option
1117@item info network
41d03949 1118show the various VLANs and the associated devices
1f673135
FB
1119@item info block
1120show the block devices
1121@item info registers
1122show the cpu registers
1123@item info history
1124show the command line history
b389dbfb
FB
1125@item info pci
1126show emulated PCI device
1127@item info usb
1128show USB devices plugged on the virtual USB hub
1129@item info usbhost
1130show all USB host devices
a3c25997
FB
1131@item info capture
1132show information about active capturing
13a2e80f
FB
1133@item info snapshots
1134show list of VM snapshots
455204eb
TS
1135@item info mice
1136show which guest mouse is receiving events
1f673135
FB
1137@end table
1138
1139@item q or quit
1140Quit the emulator.
1141
89dfe898 1142@item eject [-f] @var{device}
e598752a 1143Eject a removable medium (use -f to force it).
1f673135 1144
89dfe898 1145@item change @var{device} @var{setting}
f858dcae 1146
89dfe898 1147Change the configuration of a device.
f858dcae
TS
1148
1149@table @option
1150@item change @var{diskdevice} @var{filename}
1151Change the medium for a removable disk device to point to @var{filename}. eg
1152
1153@example
4bf27c24 1154(qemu) change ide1-cd0 /path/to/some.iso
f858dcae
TS
1155@end example
1156
89dfe898 1157@item change vnc @var{display},@var{options}
f858dcae
TS
1158Change the configuration of the VNC server. The valid syntax for @var{display}
1159and @var{options} are described at @ref{sec_invocation}. eg
1160
1161@example
1162(qemu) change vnc localhost:1
1163@end example
1164
1165@item change vnc password
1166
1167Change the password associated with the VNC server. The monitor will prompt for
1168the new password to be entered. VNC passwords are only significant upto 8 letters.
1169eg.
1170
1171@example
1172(qemu) change vnc password
1173Password: ********
1174@end example
1175
1176@end table
1f673135 1177
89dfe898 1178@item screendump @var{filename}
1f673135
FB
1179Save screen into PPM image @var{filename}.
1180
89dfe898 1181@item mouse_move @var{dx} @var{dy} [@var{dz}]
455204eb
TS
1182Move the active mouse to the specified coordinates @var{dx} @var{dy}
1183with optional scroll axis @var{dz}.
1184
89dfe898 1185@item mouse_button @var{val}
455204eb
TS
1186Change the active mouse button state @var{val} (1=L, 2=M, 4=R).
1187
89dfe898 1188@item mouse_set @var{index}
455204eb
TS
1189Set which mouse device receives events at given @var{index}, index
1190can be obtained with
1191@example
1192info mice
1193@end example
1194
89dfe898 1195@item wavcapture @var{filename} [@var{frequency} [@var{bits} [@var{channels}]]]
a3c25997
FB
1196Capture audio into @var{filename}. Using sample rate @var{frequency}
1197bits per sample @var{bits} and number of channels @var{channels}.
1198
1199Defaults:
1200@itemize @minus
1201@item Sample rate = 44100 Hz - CD quality
1202@item Bits = 16
1203@item Number of channels = 2 - Stereo
1204@end itemize
1205
89dfe898 1206@item stopcapture @var{index}
a3c25997
FB
1207Stop capture with a given @var{index}, index can be obtained with
1208@example
1209info capture
1210@end example
1211
89dfe898 1212@item log @var{item1}[,...]
1f673135
FB
1213Activate logging of the specified items to @file{/tmp/qemu.log}.
1214
89dfe898 1215@item savevm [@var{tag}|@var{id}]
13a2e80f
FB
1216Create a snapshot of the whole virtual machine. If @var{tag} is
1217provided, it is used as human readable identifier. If there is already
1218a snapshot with the same tag or ID, it is replaced. More info at
1219@ref{vm_snapshots}.
1f673135 1220
89dfe898 1221@item loadvm @var{tag}|@var{id}
13a2e80f
FB
1222Set the whole virtual machine to the snapshot identified by the tag
1223@var{tag} or the unique snapshot ID @var{id}.
1224
89dfe898 1225@item delvm @var{tag}|@var{id}
13a2e80f 1226Delete the snapshot identified by @var{tag} or @var{id}.
1f673135
FB
1227
1228@item stop
1229Stop emulation.
1230
1231@item c or cont
1232Resume emulation.
1233
89dfe898
TS
1234@item gdbserver [@var{port}]
1235Start gdbserver session (default @var{port}=1234)
1f673135 1236
89dfe898 1237@item x/fmt @var{addr}
1f673135
FB
1238Virtual memory dump starting at @var{addr}.
1239
89dfe898 1240@item xp /@var{fmt} @var{addr}
1f673135
FB
1241Physical memory dump starting at @var{addr}.
1242
1243@var{fmt} is a format which tells the command how to format the
1244data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
1245
1246@table @var
5fafdf24 1247@item count
1f673135
FB
1248is the number of items to be dumped.
1249
1250@item format
4be456f1 1251can be x (hex), d (signed decimal), u (unsigned decimal), o (octal),
1f673135
FB
1252c (char) or i (asm instruction).
1253
1254@item size
52c00a5f
FB
1255can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
1256@code{h} or @code{w} can be specified with the @code{i} format to
1257respectively select 16 or 32 bit code instruction size.
1f673135
FB
1258
1259@end table
1260
5fafdf24 1261Examples:
1f673135
FB
1262@itemize
1263@item
1264Dump 10 instructions at the current instruction pointer:
5fafdf24 1265@example
1f673135
FB
1266(qemu) x/10i $eip
12670x90107063: ret
12680x90107064: sti
12690x90107065: lea 0x0(%esi,1),%esi
12700x90107069: lea 0x0(%edi,1),%edi
12710x90107070: ret
12720x90107071: jmp 0x90107080
12730x90107073: nop
12740x90107074: nop
12750x90107075: nop
12760x90107076: nop
1277@end example
1278
1279@item
1280Dump 80 16 bit values at the start of the video memory.
5fafdf24 1281@smallexample
1f673135
FB
1282(qemu) xp/80hx 0xb8000
12830x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
12840x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
12850x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
12860x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
12870x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
12880x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
12890x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
12900x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
12910x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
12920x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
debc7065 1293@end smallexample
1f673135
FB
1294@end itemize
1295
89dfe898 1296@item p or print/@var{fmt} @var{expr}
1f673135
FB
1297
1298Print expression value. Only the @var{format} part of @var{fmt} is
1299used.
0806e3f6 1300
89dfe898 1301@item sendkey @var{keys}
a3a91a35 1302
54ae1fbd
AJ
1303Send @var{keys} to the emulator. @var{keys} could be the name of the
1304key or @code{#} followed by the raw value in either decimal or hexadecimal
1305format. Use @code{-} to press several keys simultaneously. Example:
a3a91a35
FB
1306@example
1307sendkey ctrl-alt-f1
1308@end example
1309
1310This command is useful to send keys that your graphical user interface
1311intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
1312
15a34c63
FB
1313@item system_reset
1314
1315Reset the system.
1316
0ecdffbb
AJ
1317@item boot_set @var{bootdevicelist}
1318
1319Define new values for the boot device list. Those values will override
1320the values specified on the command line through the @code{-boot} option.
1321
1322The values that can be specified here depend on the machine type, but are
1323the same that can be specified in the @code{-boot} command line option.
1324
89dfe898 1325@item usb_add @var{devname}
b389dbfb 1326
0aff66b5
PB
1327Add the USB device @var{devname}. For details of available devices see
1328@ref{usb_devices}
b389dbfb 1329
89dfe898 1330@item usb_del @var{devname}
b389dbfb
FB
1331
1332Remove the USB device @var{devname} from the QEMU virtual USB
1333hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
1334command @code{info usb} to see the devices you can remove.
1335
1f673135 1336@end table
0806e3f6 1337
1f673135
FB
1338@subsection Integer expressions
1339
1340The monitor understands integers expressions for every integer
1341argument. You can use register names to get the value of specifics
1342CPU registers by prefixing them with @emph{$}.
ec410fc9 1343
1f47a922
FB
1344@node disk_images
1345@section Disk Images
1346
acd935ef
FB
1347Since version 0.6.1, QEMU supports many disk image formats, including
1348growable disk images (their size increase as non empty sectors are
13a2e80f
FB
1349written), compressed and encrypted disk images. Version 0.8.3 added
1350the new qcow2 disk image format which is essential to support VM
1351snapshots.
1f47a922 1352
debc7065
FB
1353@menu
1354* disk_images_quickstart:: Quick start for disk image creation
1355* disk_images_snapshot_mode:: Snapshot mode
13a2e80f 1356* vm_snapshots:: VM snapshots
debc7065 1357* qemu_img_invocation:: qemu-img Invocation
975b092b 1358* qemu_nbd_invocation:: qemu-nbd Invocation
19cb3738 1359* host_drives:: Using host drives
debc7065 1360* disk_images_fat_images:: Virtual FAT disk images
75818250 1361* disk_images_nbd:: NBD access
debc7065
FB
1362@end menu
1363
1364@node disk_images_quickstart
acd935ef
FB
1365@subsection Quick start for disk image creation
1366
1367You can create a disk image with the command:
1f47a922 1368@example
acd935ef 1369qemu-img create myimage.img mysize
1f47a922 1370@end example
acd935ef
FB
1371where @var{myimage.img} is the disk image filename and @var{mysize} is its
1372size in kilobytes. You can add an @code{M} suffix to give the size in
1373megabytes and a @code{G} suffix for gigabytes.
1374
debc7065 1375See @ref{qemu_img_invocation} for more information.
1f47a922 1376
debc7065 1377@node disk_images_snapshot_mode
1f47a922
FB
1378@subsection Snapshot mode
1379
1380If you use the option @option{-snapshot}, all disk images are
1381considered as read only. When sectors in written, they are written in
1382a temporary file created in @file{/tmp}. You can however force the
acd935ef
FB
1383write back to the raw disk images by using the @code{commit} monitor
1384command (or @key{C-a s} in the serial console).
1f47a922 1385
13a2e80f
FB
1386@node vm_snapshots
1387@subsection VM snapshots
1388
1389VM snapshots are snapshots of the complete virtual machine including
1390CPU state, RAM, device state and the content of all the writable
1391disks. In order to use VM snapshots, you must have at least one non
1392removable and writable block device using the @code{qcow2} disk image
1393format. Normally this device is the first virtual hard drive.
1394
1395Use the monitor command @code{savevm} to create a new VM snapshot or
1396replace an existing one. A human readable name can be assigned to each
19d36792 1397snapshot in addition to its numerical ID.
13a2e80f
FB
1398
1399Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
1400a VM snapshot. @code{info snapshots} lists the available snapshots
1401with their associated information:
1402
1403@example
1404(qemu) info snapshots
1405Snapshot devices: hda
1406Snapshot list (from hda):
1407ID TAG VM SIZE DATE VM CLOCK
14081 start 41M 2006-08-06 12:38:02 00:00:14.954
14092 40M 2006-08-06 12:43:29 00:00:18.633
14103 msys 40M 2006-08-06 12:44:04 00:00:23.514
1411@end example
1412
1413A VM snapshot is made of a VM state info (its size is shown in
1414@code{info snapshots}) and a snapshot of every writable disk image.
1415The VM state info is stored in the first @code{qcow2} non removable
1416and writable block device. The disk image snapshots are stored in
1417every disk image. The size of a snapshot in a disk image is difficult
1418to evaluate and is not shown by @code{info snapshots} because the
1419associated disk sectors are shared among all the snapshots to save
19d36792
FB
1420disk space (otherwise each snapshot would need a full copy of all the
1421disk images).
13a2e80f
FB
1422
1423When using the (unrelated) @code{-snapshot} option
1424(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
1425but they are deleted as soon as you exit QEMU.
1426
1427VM snapshots currently have the following known limitations:
1428@itemize
5fafdf24 1429@item
13a2e80f
FB
1430They cannot cope with removable devices if they are removed or
1431inserted after a snapshot is done.
5fafdf24 1432@item
13a2e80f
FB
1433A few device drivers still have incomplete snapshot support so their
1434state is not saved or restored properly (in particular USB).
1435@end itemize
1436
acd935ef
FB
1437@node qemu_img_invocation
1438@subsection @code{qemu-img} Invocation
1f47a922 1439
acd935ef 1440@include qemu-img.texi
05efe46e 1441
975b092b
TS
1442@node qemu_nbd_invocation
1443@subsection @code{qemu-nbd} Invocation
1444
1445@include qemu-nbd.texi
1446
19cb3738
FB
1447@node host_drives
1448@subsection Using host drives
1449
1450In addition to disk image files, QEMU can directly access host
1451devices. We describe here the usage for QEMU version >= 0.8.3.
1452
1453@subsubsection Linux
1454
1455On Linux, you can directly use the host device filename instead of a
4be456f1 1456disk image filename provided you have enough privileges to access
19cb3738
FB
1457it. For example, use @file{/dev/cdrom} to access to the CDROM or
1458@file{/dev/fd0} for the floppy.
1459
f542086d 1460@table @code
19cb3738
FB
1461@item CD
1462You can specify a CDROM device even if no CDROM is loaded. QEMU has
1463specific code to detect CDROM insertion or removal. CDROM ejection by
1464the guest OS is supported. Currently only data CDs are supported.
1465@item Floppy
1466You can specify a floppy device even if no floppy is loaded. Floppy
1467removal is currently not detected accurately (if you change floppy
1468without doing floppy access while the floppy is not loaded, the guest
1469OS will think that the same floppy is loaded).
1470@item Hard disks
1471Hard disks can be used. Normally you must specify the whole disk
1472(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
1473see it as a partitioned disk. WARNING: unless you know what you do, it
1474is better to only make READ-ONLY accesses to the hard disk otherwise
1475you may corrupt your host data (use the @option{-snapshot} command
1476line option or modify the device permissions accordingly).
1477@end table
1478
1479@subsubsection Windows
1480
01781963
FB
1481@table @code
1482@item CD
4be456f1 1483The preferred syntax is the drive letter (e.g. @file{d:}). The
01781963
FB
1484alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
1485supported as an alias to the first CDROM drive.
19cb3738 1486
e598752a 1487Currently there is no specific code to handle removable media, so it
19cb3738
FB
1488is better to use the @code{change} or @code{eject} monitor commands to
1489change or eject media.
01781963 1490@item Hard disks
89dfe898 1491Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
01781963
FB
1492where @var{N} is the drive number (0 is the first hard disk).
1493
1494WARNING: unless you know what you do, it is better to only make
1495READ-ONLY accesses to the hard disk otherwise you may corrupt your
1496host data (use the @option{-snapshot} command line so that the
1497modifications are written in a temporary file).
1498@end table
1499
19cb3738
FB
1500
1501@subsubsection Mac OS X
1502
5fafdf24 1503@file{/dev/cdrom} is an alias to the first CDROM.
19cb3738 1504
e598752a 1505Currently there is no specific code to handle removable media, so it
19cb3738
FB
1506is better to use the @code{change} or @code{eject} monitor commands to
1507change or eject media.
1508
debc7065 1509@node disk_images_fat_images
2c6cadd4
FB
1510@subsection Virtual FAT disk images
1511
1512QEMU can automatically create a virtual FAT disk image from a
1513directory tree. In order to use it, just type:
1514
5fafdf24 1515@example
2c6cadd4
FB
1516qemu linux.img -hdb fat:/my_directory
1517@end example
1518
1519Then you access access to all the files in the @file{/my_directory}
1520directory without having to copy them in a disk image or to export
1521them via SAMBA or NFS. The default access is @emph{read-only}.
1522
1523Floppies can be emulated with the @code{:floppy:} option:
1524
5fafdf24 1525@example
2c6cadd4
FB
1526qemu linux.img -fda fat:floppy:/my_directory
1527@end example
1528
1529A read/write support is available for testing (beta stage) with the
1530@code{:rw:} option:
1531
5fafdf24 1532@example
2c6cadd4
FB
1533qemu linux.img -fda fat:floppy:rw:/my_directory
1534@end example
1535
1536What you should @emph{never} do:
1537@itemize
1538@item use non-ASCII filenames ;
1539@item use "-snapshot" together with ":rw:" ;
85b2c688
FB
1540@item expect it to work when loadvm'ing ;
1541@item write to the FAT directory on the host system while accessing it with the guest system.
2c6cadd4
FB
1542@end itemize
1543
75818250
TS
1544@node disk_images_nbd
1545@subsection NBD access
1546
1547QEMU can access directly to block device exported using the Network Block Device
1548protocol.
1549
1550@example
1551qemu linux.img -hdb nbd:my_nbd_server.mydomain.org:1024
1552@end example
1553
1554If the NBD server is located on the same host, you can use an unix socket instead
1555of an inet socket:
1556
1557@example
1558qemu linux.img -hdb nbd:unix:/tmp/my_socket
1559@end example
1560
1561In this case, the block device must be exported using qemu-nbd:
1562
1563@example
1564qemu-nbd --socket=/tmp/my_socket my_disk.qcow2
1565@end example
1566
1567The use of qemu-nbd allows to share a disk between several guests:
1568@example
1569qemu-nbd --socket=/tmp/my_socket --share=2 my_disk.qcow2
1570@end example
1571
1572and then you can use it with two guests:
1573@example
1574qemu linux1.img -hdb nbd:unix:/tmp/my_socket
1575qemu linux2.img -hdb nbd:unix:/tmp/my_socket
1576@end example
1577
debc7065 1578@node pcsys_network
9d4fb82e
FB
1579@section Network emulation
1580
4be456f1 1581QEMU can simulate several network cards (PCI or ISA cards on the PC
41d03949
FB
1582target) and can connect them to an arbitrary number of Virtual Local
1583Area Networks (VLANs). Host TAP devices can be connected to any QEMU
1584VLAN. VLAN can be connected between separate instances of QEMU to
4be456f1 1585simulate large networks. For simpler usage, a non privileged user mode
41d03949
FB
1586network stack can replace the TAP device to have a basic network
1587connection.
1588
1589@subsection VLANs
9d4fb82e 1590
41d03949
FB
1591QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
1592connection between several network devices. These devices can be for
1593example QEMU virtual Ethernet cards or virtual Host ethernet devices
1594(TAP devices).
9d4fb82e 1595
41d03949
FB
1596@subsection Using TAP network interfaces
1597
1598This is the standard way to connect QEMU to a real network. QEMU adds
1599a virtual network device on your host (called @code{tapN}), and you
1600can then configure it as if it was a real ethernet card.
9d4fb82e 1601
8f40c388
FB
1602@subsubsection Linux host
1603
9d4fb82e
FB
1604As an example, you can download the @file{linux-test-xxx.tar.gz}
1605archive and copy the script @file{qemu-ifup} in @file{/etc} and
1606configure properly @code{sudo} so that the command @code{ifconfig}
1607contained in @file{qemu-ifup} can be executed as root. You must verify
41d03949 1608that your host kernel supports the TAP network interfaces: the
9d4fb82e
FB
1609device @file{/dev/net/tun} must be present.
1610
ee0f4751
FB
1611See @ref{sec_invocation} to have examples of command lines using the
1612TAP network interfaces.
9d4fb82e 1613
8f40c388
FB
1614@subsubsection Windows host
1615
1616There is a virtual ethernet driver for Windows 2000/XP systems, called
1617TAP-Win32. But it is not included in standard QEMU for Windows,
1618so you will need to get it separately. It is part of OpenVPN package,
1619so download OpenVPN from : @url{http://openvpn.net/}.
1620
9d4fb82e
FB
1621@subsection Using the user mode network stack
1622
41d03949
FB
1623By using the option @option{-net user} (default configuration if no
1624@option{-net} option is specified), QEMU uses a completely user mode
4be456f1 1625network stack (you don't need root privilege to use the virtual
41d03949 1626network). The virtual network configuration is the following:
9d4fb82e
FB
1627
1628@example
1629
41d03949
FB
1630 QEMU VLAN <------> Firewall/DHCP server <-----> Internet
1631 | (10.0.2.2)
9d4fb82e 1632 |
2518bd0d 1633 ----> DNS server (10.0.2.3)
3b46e624 1634 |
2518bd0d 1635 ----> SMB server (10.0.2.4)
9d4fb82e
FB
1636@end example
1637
1638The QEMU VM behaves as if it was behind a firewall which blocks all
1639incoming connections. You can use a DHCP client to automatically
41d03949
FB
1640configure the network in the QEMU VM. The DHCP server assign addresses
1641to the hosts starting from 10.0.2.15.
9d4fb82e
FB
1642
1643In order to check that the user mode network is working, you can ping
1644the address 10.0.2.2 and verify that you got an address in the range
164510.0.2.x from the QEMU virtual DHCP server.
1646
b415a407 1647Note that @code{ping} is not supported reliably to the internet as it
4be456f1 1648would require root privileges. It means you can only ping the local
b415a407
FB
1649router (10.0.2.2).
1650
9bf05444
FB
1651When using the built-in TFTP server, the router is also the TFTP
1652server.
1653
1654When using the @option{-redir} option, TCP or UDP connections can be
1655redirected from the host to the guest. It allows for example to
1656redirect X11, telnet or SSH connections.
443f1376 1657
41d03949
FB
1658@subsection Connecting VLANs between QEMU instances
1659
1660Using the @option{-net socket} option, it is possible to make VLANs
1661that span several QEMU instances. See @ref{sec_invocation} to have a
1662basic example.
1663
9d4fb82e
FB
1664@node direct_linux_boot
1665@section Direct Linux Boot
1f673135
FB
1666
1667This section explains how to launch a Linux kernel inside QEMU without
1668having to make a full bootable image. It is very useful for fast Linux
ee0f4751 1669kernel testing.
1f673135 1670
ee0f4751 1671The syntax is:
1f673135 1672@example
ee0f4751 1673qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1f673135
FB
1674@end example
1675
ee0f4751
FB
1676Use @option{-kernel} to provide the Linux kernel image and
1677@option{-append} to give the kernel command line arguments. The
1678@option{-initrd} option can be used to provide an INITRD image.
1f673135 1679
ee0f4751
FB
1680When using the direct Linux boot, a disk image for the first hard disk
1681@file{hda} is required because its boot sector is used to launch the
1682Linux kernel.
1f673135 1683
ee0f4751
FB
1684If you do not need graphical output, you can disable it and redirect
1685the virtual serial port and the QEMU monitor to the console with the
1686@option{-nographic} option. The typical command line is:
1f673135 1687@example
ee0f4751
FB
1688qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1689 -append "root=/dev/hda console=ttyS0" -nographic
1f673135
FB
1690@end example
1691
ee0f4751
FB
1692Use @key{Ctrl-a c} to switch between the serial console and the
1693monitor (@pxref{pcsys_keys}).
1f673135 1694
debc7065 1695@node pcsys_usb
b389dbfb
FB
1696@section USB emulation
1697
0aff66b5
PB
1698QEMU emulates a PCI UHCI USB controller. You can virtually plug
1699virtual USB devices or real host USB devices (experimental, works only
1700on Linux hosts). Qemu will automatically create and connect virtual USB hubs
f542086d 1701as necessary to connect multiple USB devices.
b389dbfb 1702
0aff66b5
PB
1703@menu
1704* usb_devices::
1705* host_usb_devices::
1706@end menu
1707@node usb_devices
1708@subsection Connecting USB devices
b389dbfb 1709
0aff66b5
PB
1710USB devices can be connected with the @option{-usbdevice} commandline option
1711or the @code{usb_add} monitor command. Available devices are:
b389dbfb 1712
db380c06
AZ
1713@table @code
1714@item mouse
0aff66b5 1715Virtual Mouse. This will override the PS/2 mouse emulation when activated.
db380c06 1716@item tablet
c6d46c20 1717Pointer device that uses absolute coordinates (like a touchscreen).
0aff66b5
PB
1718This means qemu is able to report the mouse position without having
1719to grab the mouse. Also overrides the PS/2 mouse emulation when activated.
db380c06 1720@item disk:@var{file}
0aff66b5 1721Mass storage device based on @var{file} (@pxref{disk_images})
db380c06 1722@item host:@var{bus.addr}
0aff66b5
PB
1723Pass through the host device identified by @var{bus.addr}
1724(Linux only)
db380c06 1725@item host:@var{vendor_id:product_id}
0aff66b5
PB
1726Pass through the host device identified by @var{vendor_id:product_id}
1727(Linux only)
db380c06 1728@item wacom-tablet
f6d2a316
AZ
1729Virtual Wacom PenPartner tablet. This device is similar to the @code{tablet}
1730above but it can be used with the tslib library because in addition to touch
1731coordinates it reports touch pressure.
db380c06 1732@item keyboard
47b2d338 1733Standard USB keyboard. Will override the PS/2 keyboard (if present).
db380c06
AZ
1734@item serial:[vendorid=@var{vendor_id}][,product_id=@var{product_id}]:@var{dev}
1735Serial converter. This emulates an FTDI FT232BM chip connected to host character
1736device @var{dev}. The available character devices are the same as for the
1737@code{-serial} option. The @code{vendorid} and @code{productid} options can be
a11d070e 1738used to override the default 0403:6001. For instance,
db380c06
AZ
1739@example
1740usb_add serial:productid=FA00:tcp:192.168.0.2:4444
1741@end example
1742will connect to tcp port 4444 of ip 192.168.0.2, and plug that to the virtual
1743serial converter, faking a Matrix Orbital LCD Display (USB ID 0403:FA00).
2e4d9fb1
AJ
1744@item braille
1745Braille device. This will use BrlAPI to display the braille output on a real
1746or fake device.
9ad97e65
AZ
1747@item net:@var{options}
1748Network adapter that supports CDC ethernet and RNDIS protocols. @var{options}
1749specifies NIC options as with @code{-net nic,}@var{options} (see description).
1750For instance, user-mode networking can be used with
6c9f886c 1751@example
9ad97e65 1752qemu [...OPTIONS...] -net user,vlan=0 -usbdevice net:vlan=0
6c9f886c
AZ
1753@end example
1754Currently this cannot be used in machines that support PCI NICs.
0aff66b5 1755@end table
b389dbfb 1756
0aff66b5 1757@node host_usb_devices
b389dbfb
FB
1758@subsection Using host USB devices on a Linux host
1759
1760WARNING: this is an experimental feature. QEMU will slow down when
1761using it. USB devices requiring real time streaming (i.e. USB Video
1762Cameras) are not supported yet.
1763
1764@enumerate
5fafdf24 1765@item If you use an early Linux 2.4 kernel, verify that no Linux driver
b389dbfb
FB
1766is actually using the USB device. A simple way to do that is simply to
1767disable the corresponding kernel module by renaming it from @file{mydriver.o}
1768to @file{mydriver.o.disabled}.
1769
1770@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1771@example
1772ls /proc/bus/usb
1773001 devices drivers
1774@end example
1775
1776@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:
1777@example
1778chown -R myuid /proc/bus/usb
1779@end example
1780
1781@item Launch QEMU and do in the monitor:
5fafdf24 1782@example
b389dbfb
FB
1783info usbhost
1784 Device 1.2, speed 480 Mb/s
1785 Class 00: USB device 1234:5678, USB DISK
1786@end example
1787You should see the list of the devices you can use (Never try to use
1788hubs, it won't work).
1789
1790@item Add the device in QEMU by using:
5fafdf24 1791@example
b389dbfb
FB
1792usb_add host:1234:5678
1793@end example
1794
1795Normally the guest OS should report that a new USB device is
1796plugged. You can use the option @option{-usbdevice} to do the same.
1797
1798@item Now you can try to use the host USB device in QEMU.
1799
1800@end enumerate
1801
1802When relaunching QEMU, you may have to unplug and plug again the USB
1803device to make it work again (this is a bug).
1804
f858dcae
TS
1805@node vnc_security
1806@section VNC security
1807
1808The VNC server capability provides access to the graphical console
1809of the guest VM across the network. This has a number of security
1810considerations depending on the deployment scenarios.
1811
1812@menu
1813* vnc_sec_none::
1814* vnc_sec_password::
1815* vnc_sec_certificate::
1816* vnc_sec_certificate_verify::
1817* vnc_sec_certificate_pw::
1818* vnc_generate_cert::
1819@end menu
1820@node vnc_sec_none
1821@subsection Without passwords
1822
1823The simplest VNC server setup does not include any form of authentication.
1824For this setup it is recommended to restrict it to listen on a UNIX domain
1825socket only. For example
1826
1827@example
1828qemu [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
1829@end example
1830
1831This ensures that only users on local box with read/write access to that
1832path can access the VNC server. To securely access the VNC server from a
1833remote machine, a combination of netcat+ssh can be used to provide a secure
1834tunnel.
1835
1836@node vnc_sec_password
1837@subsection With passwords
1838
1839The VNC protocol has limited support for password based authentication. Since
1840the protocol limits passwords to 8 characters it should not be considered
1841to provide high security. The password can be fairly easily brute-forced by
1842a client making repeat connections. For this reason, a VNC server using password
1843authentication should be restricted to only listen on the loopback interface
34a3d239 1844or UNIX domain sockets. Password authentication is requested with the @code{password}
f858dcae
TS
1845option, and then once QEMU is running the password is set with the monitor. Until
1846the monitor is used to set the password all clients will be rejected.
1847
1848@example
1849qemu [...OPTIONS...] -vnc :1,password -monitor stdio
1850(qemu) change vnc password
1851Password: ********
1852(qemu)
1853@end example
1854
1855@node vnc_sec_certificate
1856@subsection With x509 certificates
1857
1858The QEMU VNC server also implements the VeNCrypt extension allowing use of
1859TLS for encryption of the session, and x509 certificates for authentication.
1860The use of x509 certificates is strongly recommended, because TLS on its
1861own is susceptible to man-in-the-middle attacks. Basic x509 certificate
1862support provides a secure session, but no authentication. This allows any
1863client to connect, and provides an encrypted session.
1864
1865@example
1866qemu [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
1867@end example
1868
1869In the above example @code{/etc/pki/qemu} should contain at least three files,
1870@code{ca-cert.pem}, @code{server-cert.pem} and @code{server-key.pem}. Unprivileged
1871users will want to use a private directory, for example @code{$HOME/.pki/qemu}.
1872NB the @code{server-key.pem} file should be protected with file mode 0600 to
1873only be readable by the user owning it.
1874
1875@node vnc_sec_certificate_verify
1876@subsection With x509 certificates and client verification
1877
1878Certificates can also provide a means to authenticate the client connecting.
1879The server will request that the client provide a certificate, which it will
1880then validate against the CA certificate. This is a good choice if deploying
1881in an environment with a private internal certificate authority.
1882
1883@example
1884qemu [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
1885@end example
1886
1887
1888@node vnc_sec_certificate_pw
1889@subsection With x509 certificates, client verification and passwords
1890
1891Finally, the previous method can be combined with VNC password authentication
1892to provide two layers of authentication for clients.
1893
1894@example
1895qemu [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
1896(qemu) change vnc password
1897Password: ********
1898(qemu)
1899@end example
1900
1901@node vnc_generate_cert
1902@subsection Generating certificates for VNC
1903
1904The GNU TLS packages provides a command called @code{certtool} which can
1905be used to generate certificates and keys in PEM format. At a minimum it
1906is neccessary to setup a certificate authority, and issue certificates to
1907each server. If using certificates for authentication, then each client
1908will also need to be issued a certificate. The recommendation is for the
1909server to keep its certificates in either @code{/etc/pki/qemu} or for
1910unprivileged users in @code{$HOME/.pki/qemu}.
1911
1912@menu
1913* vnc_generate_ca::
1914* vnc_generate_server::
1915* vnc_generate_client::
1916@end menu
1917@node vnc_generate_ca
1918@subsubsection Setup the Certificate Authority
1919
1920This step only needs to be performed once per organization / organizational
1921unit. First the CA needs a private key. This key must be kept VERY secret
1922and secure. If this key is compromised the entire trust chain of the certificates
1923issued with it is lost.
1924
1925@example
1926# certtool --generate-privkey > ca-key.pem
1927@end example
1928
1929A CA needs to have a public certificate. For simplicity it can be a self-signed
1930certificate, or one issue by a commercial certificate issuing authority. To
1931generate a self-signed certificate requires one core piece of information, the
1932name of the organization.
1933
1934@example
1935# cat > ca.info <<EOF
1936cn = Name of your organization
1937ca
1938cert_signing_key
1939EOF
1940# certtool --generate-self-signed \
1941 --load-privkey ca-key.pem
1942 --template ca.info \
1943 --outfile ca-cert.pem
1944@end example
1945
1946The @code{ca-cert.pem} file should be copied to all servers and clients wishing to utilize
1947TLS support in the VNC server. The @code{ca-key.pem} must not be disclosed/copied at all.
1948
1949@node vnc_generate_server
1950@subsubsection Issuing server certificates
1951
1952Each server (or host) needs to be issued with a key and certificate. When connecting
1953the certificate is sent to the client which validates it against the CA certificate.
1954The core piece of information for a server certificate is the hostname. This should
1955be the fully qualified hostname that the client will connect with, since the client
1956will typically also verify the hostname in the certificate. On the host holding the
1957secure CA private key:
1958
1959@example
1960# cat > server.info <<EOF
1961organization = Name of your organization
1962cn = server.foo.example.com
1963tls_www_server
1964encryption_key
1965signing_key
1966EOF
1967# certtool --generate-privkey > server-key.pem
1968# certtool --generate-certificate \
1969 --load-ca-certificate ca-cert.pem \
1970 --load-ca-privkey ca-key.pem \
1971 --load-privkey server server-key.pem \
1972 --template server.info \
1973 --outfile server-cert.pem
1974@end example
1975
1976The @code{server-key.pem} and @code{server-cert.pem} files should now be securely copied
1977to the server for which they were generated. The @code{server-key.pem} is security
1978sensitive and should be kept protected with file mode 0600 to prevent disclosure.
1979
1980@node vnc_generate_client
1981@subsubsection Issuing client certificates
1982
1983If the QEMU VNC server is to use the @code{x509verify} option to validate client
1984certificates as its authentication mechanism, each client also needs to be issued
1985a certificate. The client certificate contains enough metadata to uniquely identify
1986the client, typically organization, state, city, building, etc. On the host holding
1987the secure CA private key:
1988
1989@example
1990# cat > client.info <<EOF
1991country = GB
1992state = London
1993locality = London
1994organiazation = Name of your organization
1995cn = client.foo.example.com
1996tls_www_client
1997encryption_key
1998signing_key
1999EOF
2000# certtool --generate-privkey > client-key.pem
2001# certtool --generate-certificate \
2002 --load-ca-certificate ca-cert.pem \
2003 --load-ca-privkey ca-key.pem \
2004 --load-privkey client-key.pem \
2005 --template client.info \
2006 --outfile client-cert.pem
2007@end example
2008
2009The @code{client-key.pem} and @code{client-cert.pem} files should now be securely
2010copied to the client for which they were generated.
2011
0806e3f6 2012@node gdb_usage
da415d54
FB
2013@section GDB usage
2014
2015QEMU has a primitive support to work with gdb, so that you can do
0806e3f6 2016'Ctrl-C' while the virtual machine is running and inspect its state.
da415d54 2017
9d4520d0 2018In order to use gdb, launch qemu with the '-s' option. It will wait for a
da415d54
FB
2019gdb connection:
2020@example
debc7065
FB
2021> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
2022 -append "root=/dev/hda"
da415d54
FB
2023Connected to host network interface: tun0
2024Waiting gdb connection on port 1234
2025@end example
2026
2027Then launch gdb on the 'vmlinux' executable:
2028@example
2029> gdb vmlinux
2030@end example
2031
2032In gdb, connect to QEMU:
2033@example
6c9bf893 2034(gdb) target remote localhost:1234
da415d54
FB
2035@end example
2036
2037Then you can use gdb normally. For example, type 'c' to launch the kernel:
2038@example
2039(gdb) c
2040@end example
2041
0806e3f6
FB
2042Here are some useful tips in order to use gdb on system code:
2043
2044@enumerate
2045@item
2046Use @code{info reg} to display all the CPU registers.
2047@item
2048Use @code{x/10i $eip} to display the code at the PC position.
2049@item
2050Use @code{set architecture i8086} to dump 16 bit code. Then use
294e8637 2051@code{x/10i $cs*16+$eip} to dump the code at the PC position.
0806e3f6
FB
2052@end enumerate
2053
60897d36
EI
2054Advanced debugging options:
2055
2056The 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 2057@table @code
60897d36
EI
2058@item maintenance packet qqemu.sstepbits
2059
2060This will display the MASK bits used to control the single stepping IE:
2061@example
2062(gdb) maintenance packet qqemu.sstepbits
2063sending: "qqemu.sstepbits"
2064received: "ENABLE=1,NOIRQ=2,NOTIMER=4"
2065@end example
2066@item maintenance packet qqemu.sstep
2067
2068This will display the current value of the mask used when single stepping IE:
2069@example
2070(gdb) maintenance packet qqemu.sstep
2071sending: "qqemu.sstep"
2072received: "0x7"
2073@end example
2074@item maintenance packet Qqemu.sstep=HEX_VALUE
2075
2076This will change the single step mask, so if wanted to enable IRQs on the single step, but not timers, you would use:
2077@example
2078(gdb) maintenance packet Qqemu.sstep=0x5
2079sending: "qemu.sstep=0x5"
2080received: "OK"
2081@end example
94d45e44 2082@end table
60897d36 2083
debc7065 2084@node pcsys_os_specific
1a084f3d
FB
2085@section Target OS specific information
2086
2087@subsection Linux
2088
15a34c63
FB
2089To have access to SVGA graphic modes under X11, use the @code{vesa} or
2090the @code{cirrus} X11 driver. For optimal performances, use 16 bit
2091color depth in the guest and the host OS.
1a084f3d 2092
e3371e62
FB
2093When using a 2.6 guest Linux kernel, you should add the option
2094@code{clock=pit} on the kernel command line because the 2.6 Linux
2095kernels make very strict real time clock checks by default that QEMU
2096cannot simulate exactly.
2097
7c3fc84d
FB
2098When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
2099not activated because QEMU is slower with this patch. The QEMU
2100Accelerator Module is also much slower in this case. Earlier Fedora
4be456f1 2101Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporate this
7c3fc84d
FB
2102patch by default. Newer kernels don't have it.
2103
1a084f3d
FB
2104@subsection Windows
2105
2106If you have a slow host, using Windows 95 is better as it gives the
2107best speed. Windows 2000 is also a good choice.
2108
e3371e62
FB
2109@subsubsection SVGA graphic modes support
2110
2111QEMU emulates a Cirrus Logic GD5446 Video
15a34c63
FB
2112card. All Windows versions starting from Windows 95 should recognize
2113and use this graphic card. For optimal performances, use 16 bit color
2114depth in the guest and the host OS.
1a084f3d 2115
3cb0853a
FB
2116If you are using Windows XP as guest OS and if you want to use high
2117resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
21181280x1024x16), then you should use the VESA VBE virtual graphic card
2119(option @option{-std-vga}).
2120
e3371e62
FB
2121@subsubsection CPU usage reduction
2122
2123Windows 9x does not correctly use the CPU HLT
15a34c63
FB
2124instruction. The result is that it takes host CPU cycles even when
2125idle. You can install the utility from
2126@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
2127problem. Note that no such tool is needed for NT, 2000 or XP.
1a084f3d 2128
9d0a8e6f 2129@subsubsection Windows 2000 disk full problem
e3371e62 2130
9d0a8e6f
FB
2131Windows 2000 has a bug which gives a disk full problem during its
2132installation. When installing it, use the @option{-win2k-hack} QEMU
2133option to enable a specific workaround. After Windows 2000 is
2134installed, you no longer need this option (this option slows down the
2135IDE transfers).
e3371e62 2136
6cc721cf
FB
2137@subsubsection Windows 2000 shutdown
2138
2139Windows 2000 cannot automatically shutdown in QEMU although Windows 98
2140can. It comes from the fact that Windows 2000 does not automatically
2141use the APM driver provided by the BIOS.
2142
2143In order to correct that, do the following (thanks to Struan
2144Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
2145Add/Troubleshoot a device => Add a new device & Next => No, select the
2146hardware from a list & Next => NT Apm/Legacy Support & Next => Next
2147(again) a few times. Now the driver is installed and Windows 2000 now
5fafdf24 2148correctly instructs QEMU to shutdown at the appropriate moment.
6cc721cf
FB
2149
2150@subsubsection Share a directory between Unix and Windows
2151
2152See @ref{sec_invocation} about the help of the option @option{-smb}.
2153
2192c332 2154@subsubsection Windows XP security problem
e3371e62
FB
2155
2156Some releases of Windows XP install correctly but give a security
2157error when booting:
2158@example
2159A problem is preventing Windows from accurately checking the
2160license for this computer. Error code: 0x800703e6.
2161@end example
e3371e62 2162
2192c332
FB
2163The workaround is to install a service pack for XP after a boot in safe
2164mode. Then reboot, and the problem should go away. Since there is no
2165network while in safe mode, its recommended to download the full
2166installation of SP1 or SP2 and transfer that via an ISO or using the
2167vvfat block device ("-hdb fat:directory_which_holds_the_SP").
e3371e62 2168
a0a821a4
FB
2169@subsection MS-DOS and FreeDOS
2170
2171@subsubsection CPU usage reduction
2172
2173DOS does not correctly use the CPU HLT instruction. The result is that
2174it takes host CPU cycles even when idle. You can install the utility
2175from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
2176problem.
2177
debc7065 2178@node QEMU System emulator for non PC targets
3f9f3aa1
FB
2179@chapter QEMU System emulator for non PC targets
2180
2181QEMU is a generic emulator and it emulates many non PC
2182machines. Most of the options are similar to the PC emulator. The
4be456f1 2183differences are mentioned in the following sections.
3f9f3aa1 2184
debc7065
FB
2185@menu
2186* QEMU PowerPC System emulator::
24d4de45
TS
2187* Sparc32 System emulator::
2188* Sparc64 System emulator::
2189* MIPS System emulator::
2190* ARM System emulator::
2191* ColdFire System emulator::
debc7065
FB
2192@end menu
2193
2194@node QEMU PowerPC System emulator
3f9f3aa1 2195@section QEMU PowerPC System emulator
1a084f3d 2196
15a34c63
FB
2197Use the executable @file{qemu-system-ppc} to simulate a complete PREP
2198or PowerMac PowerPC system.
1a084f3d 2199
b671f9ed 2200QEMU emulates the following PowerMac peripherals:
1a084f3d 2201
15a34c63 2202@itemize @minus
5fafdf24
TS
2203@item
2204UniNorth PCI Bridge
15a34c63
FB
2205@item
2206PCI VGA compatible card with VESA Bochs Extensions
5fafdf24 2207@item
15a34c63 22082 PMAC IDE interfaces with hard disk and CD-ROM support
5fafdf24 2209@item
15a34c63
FB
2210NE2000 PCI adapters
2211@item
2212Non Volatile RAM
2213@item
2214VIA-CUDA with ADB keyboard and mouse.
1a084f3d
FB
2215@end itemize
2216
b671f9ed 2217QEMU emulates the following PREP peripherals:
52c00a5f
FB
2218
2219@itemize @minus
5fafdf24 2220@item
15a34c63
FB
2221PCI Bridge
2222@item
2223PCI VGA compatible card with VESA Bochs Extensions
5fafdf24 2224@item
52c00a5f
FB
22252 IDE interfaces with hard disk and CD-ROM support
2226@item
2227Floppy disk
5fafdf24 2228@item
15a34c63 2229NE2000 network adapters
52c00a5f
FB
2230@item
2231Serial port
2232@item
2233PREP Non Volatile RAM
15a34c63
FB
2234@item
2235PC compatible keyboard and mouse.
52c00a5f
FB
2236@end itemize
2237
15a34c63 2238QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
3f9f3aa1 2239@url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
52c00a5f 2240
15a34c63
FB
2241@c man begin OPTIONS
2242
2243The following options are specific to the PowerPC emulation:
2244
2245@table @option
2246
3b46e624 2247@item -g WxH[xDEPTH]
15a34c63
FB
2248
2249Set the initial VGA graphic mode. The default is 800x600x15.
2250
2251@end table
2252
5fafdf24 2253@c man end
15a34c63
FB
2254
2255
52c00a5f 2256More information is available at
3f9f3aa1 2257@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
52c00a5f 2258
24d4de45
TS
2259@node Sparc32 System emulator
2260@section Sparc32 System emulator
e80cfcfc 2261
34a3d239
BS
2262Use the executable @file{qemu-system-sparc} to simulate the following
2263Sun4m architecture machines:
2264@itemize @minus
2265@item
2266SPARCstation 4
2267@item
2268SPARCstation 5
2269@item
2270SPARCstation 10
2271@item
2272SPARCstation 20
2273@item
2274SPARCserver 600MP
2275@item
2276SPARCstation LX
2277@item
2278SPARCstation Voyager
2279@item
2280SPARCclassic
2281@item
2282SPARCbook
2283@end itemize
2284
2285The emulation is somewhat complete. SMP up to 16 CPUs is supported,
2286but Linux limits the number of usable CPUs to 4.
e80cfcfc 2287
34a3d239
BS
2288It's also possible to simulate a SPARCstation 2 (sun4c architecture),
2289SPARCserver 1000, or SPARCcenter 2000 (sun4d architecture), but these
2290emulators are not usable yet.
2291
2292QEMU emulates the following sun4m/sun4c/sun4d peripherals:
e80cfcfc
FB
2293
2294@itemize @minus
3475187d 2295@item
7d85892b 2296IOMMU or IO-UNITs
e80cfcfc
FB
2297@item
2298TCX Frame buffer
5fafdf24 2299@item
e80cfcfc
FB
2300Lance (Am7990) Ethernet
2301@item
34a3d239 2302Non Volatile RAM M48T02/M48T08
e80cfcfc 2303@item
3475187d
FB
2304Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
2305and power/reset logic
2306@item
2307ESP SCSI controller with hard disk and CD-ROM support
2308@item
6a3b9cc9 2309Floppy drive (not on SS-600MP)
a2502b58
BS
2310@item
2311CS4231 sound device (only on SS-5, not working yet)
e80cfcfc
FB
2312@end itemize
2313
6a3b9cc9
BS
2314The number of peripherals is fixed in the architecture. Maximum
2315memory size depends on the machine type, for SS-5 it is 256MB and for
7d85892b 2316others 2047MB.
3475187d 2317
30a604f3 2318Since version 0.8.2, QEMU uses OpenBIOS
0986ac3b
FB
2319@url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
2320firmware implementation. The goal is to implement a 100% IEEE
23211275-1994 (referred to as Open Firmware) compliant firmware.
3475187d
FB
2322
2323A sample Linux 2.6 series kernel and ram disk image are available on
34a3d239
BS
2324the QEMU web site. There are still issues with NetBSD and OpenBSD, but
2325some kernel versions work. Please note that currently Solaris kernels
2326don't work probably due to interface issues between OpenBIOS and
2327Solaris.
3475187d
FB
2328
2329@c man begin OPTIONS
2330
a2502b58 2331The following options are specific to the Sparc32 emulation:
3475187d
FB
2332
2333@table @option
2334
a2502b58 2335@item -g WxHx[xDEPTH]
3475187d 2336
a2502b58
BS
2337Set the initial TCX graphic mode. The default is 1024x768x8, currently
2338the only other possible mode is 1024x768x24.
3475187d 2339
66508601
BS
2340@item -prom-env string
2341
2342Set OpenBIOS variables in NVRAM, for example:
2343
2344@example
2345qemu-system-sparc -prom-env 'auto-boot?=false' \
2346 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
2347@end example
2348
34a3d239 2349@item -M [SS-4|SS-5|SS-10|SS-20|SS-600MP|LX|Voyager|SPARCClassic|SPARCbook|SS-2|SS-1000|SS-2000]
a2502b58
BS
2350
2351Set the emulated machine type. Default is SS-5.
2352
3475187d
FB
2353@end table
2354
5fafdf24 2355@c man end
3475187d 2356
24d4de45
TS
2357@node Sparc64 System emulator
2358@section Sparc64 System emulator
e80cfcfc 2359
34a3d239
BS
2360Use the executable @file{qemu-system-sparc64} to simulate a Sun4u
2361(UltraSPARC PC-like machine), Sun4v (T1 PC-like machine), or generic
2362Niagara (T1) machine. The emulator is not usable for anything yet, but
2363it can launch some kernels.
b756921a 2364
c7ba218d 2365QEMU emulates the following peripherals:
83469015
FB
2366
2367@itemize @minus
2368@item
5fafdf24 2369UltraSparc IIi APB PCI Bridge
83469015
FB
2370@item
2371PCI VGA compatible card with VESA Bochs Extensions
2372@item
34a3d239
BS
2373PS/2 mouse and keyboard
2374@item
83469015
FB
2375Non Volatile RAM M48T59
2376@item
2377PC-compatible serial ports
c7ba218d
BS
2378@item
23792 PCI IDE interfaces with hard disk and CD-ROM support
34a3d239
BS
2380@item
2381Floppy disk
83469015
FB
2382@end itemize
2383
c7ba218d
BS
2384@c man begin OPTIONS
2385
2386The following options are specific to the Sparc64 emulation:
2387
2388@table @option
2389
34a3d239
BS
2390@item -prom-env string
2391
2392Set OpenBIOS variables in NVRAM, for example:
2393
2394@example
2395qemu-system-sparc64 -prom-env 'auto-boot?=false'
2396@end example
2397
2398@item -M [sun4u|sun4v|Niagara]
c7ba218d
BS
2399
2400Set the emulated machine type. The default is sun4u.
2401
2402@end table
2403
2404@c man end
2405
24d4de45
TS
2406@node MIPS System emulator
2407@section MIPS System emulator
9d0a8e6f 2408
d9aedc32
TS
2409Four executables cover simulation of 32 and 64-bit MIPS systems in
2410both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
2411@file{qemu-system-mips64} and @file{qemu-system-mips64el}.
88cb0a02 2412Five different machine types are emulated:
24d4de45
TS
2413
2414@itemize @minus
2415@item
2416A generic ISA PC-like machine "mips"
2417@item
2418The MIPS Malta prototype board "malta"
2419@item
d9aedc32 2420An ACER Pica "pica61". This machine needs the 64-bit emulator.
6bf5b4e8 2421@item
f0fc6f8f 2422MIPS emulator pseudo board "mipssim"
88cb0a02
AJ
2423@item
2424A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
24d4de45
TS
2425@end itemize
2426
2427The generic emulation is supported by Debian 'Etch' and is able to
2428install Debian into a virtual disk image. The following devices are
2429emulated:
3f9f3aa1
FB
2430
2431@itemize @minus
5fafdf24 2432@item
6bf5b4e8 2433A range of MIPS CPUs, default is the 24Kf
3f9f3aa1
FB
2434@item
2435PC style serial port
2436@item
24d4de45
TS
2437PC style IDE disk
2438@item
3f9f3aa1
FB
2439NE2000 network card
2440@end itemize
2441
24d4de45
TS
2442The Malta emulation supports the following devices:
2443
2444@itemize @minus
2445@item
0b64d008 2446Core board with MIPS 24Kf CPU and Galileo system controller
24d4de45
TS
2447@item
2448PIIX4 PCI/USB/SMbus controller
2449@item
2450The Multi-I/O chip's serial device
2451@item
2452PCnet32 PCI network card
2453@item
2454Malta FPGA serial device
2455@item
2456Cirrus VGA graphics card
2457@end itemize
2458
2459The ACER Pica emulation supports:
2460
2461@itemize @minus
2462@item
2463MIPS R4000 CPU
2464@item
2465PC-style IRQ and DMA controllers
2466@item
2467PC Keyboard
2468@item
2469IDE controller
2470@end itemize
3f9f3aa1 2471
f0fc6f8f
TS
2472The mipssim pseudo board emulation provides an environment similiar
2473to what the proprietary MIPS emulator uses for running Linux.
2474It supports:
6bf5b4e8
TS
2475
2476@itemize @minus
2477@item
2478A range of MIPS CPUs, default is the 24Kf
2479@item
2480PC style serial port
2481@item
2482MIPSnet network emulation
2483@end itemize
2484
88cb0a02
AJ
2485The MIPS Magnum R4000 emulation supports:
2486
2487@itemize @minus
2488@item
2489MIPS R4000 CPU
2490@item
2491PC-style IRQ controller
2492@item
2493PC Keyboard
2494@item
2495SCSI controller
2496@item
2497G364 framebuffer
2498@end itemize
2499
2500
24d4de45
TS
2501@node ARM System emulator
2502@section ARM System emulator
3f9f3aa1
FB
2503
2504Use the executable @file{qemu-system-arm} to simulate a ARM
2505machine. The ARM Integrator/CP board is emulated with the following
2506devices:
2507
2508@itemize @minus
2509@item
9ee6e8bb 2510ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
3f9f3aa1
FB
2511@item
2512Two PL011 UARTs
5fafdf24 2513@item
3f9f3aa1 2514SMC 91c111 Ethernet adapter
00a9bf19
PB
2515@item
2516PL110 LCD controller
2517@item
2518PL050 KMI with PS/2 keyboard and mouse.
a1bb27b1
PB
2519@item
2520PL181 MultiMedia Card Interface with SD card.
00a9bf19
PB
2521@end itemize
2522
2523The ARM Versatile baseboard is emulated with the following devices:
2524
2525@itemize @minus
2526@item
9ee6e8bb 2527ARM926E, ARM1136 or Cortex-A8 CPU
00a9bf19
PB
2528@item
2529PL190 Vectored Interrupt Controller
2530@item
2531Four PL011 UARTs
5fafdf24 2532@item
00a9bf19
PB
2533SMC 91c111 Ethernet adapter
2534@item
2535PL110 LCD controller
2536@item
2537PL050 KMI with PS/2 keyboard and mouse.
2538@item
2539PCI host bridge. Note the emulated PCI bridge only provides access to
2540PCI memory space. It does not provide access to PCI IO space.
4be456f1
TS
2541This means some devices (eg. ne2k_pci NIC) are not usable, and others
2542(eg. rtl8139 NIC) are only usable when the guest drivers use the memory
00a9bf19 2543mapped control registers.
e6de1bad
PB
2544@item
2545PCI OHCI USB controller.
2546@item
2547LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
a1bb27b1
PB
2548@item
2549PL181 MultiMedia Card Interface with SD card.
3f9f3aa1
FB
2550@end itemize
2551
d7739d75
PB
2552The ARM RealView Emulation baseboard is emulated with the following devices:
2553
2554@itemize @minus
2555@item
9ee6e8bb 2556ARM926E, ARM1136, ARM11MPCORE(x4) or Cortex-A8 CPU
d7739d75
PB
2557@item
2558ARM AMBA Generic/Distributed Interrupt Controller
2559@item
2560Four PL011 UARTs
5fafdf24 2561@item
d7739d75
PB
2562SMC 91c111 Ethernet adapter
2563@item
2564PL110 LCD controller
2565@item
2566PL050 KMI with PS/2 keyboard and mouse
2567@item
2568PCI host bridge
2569@item
2570PCI OHCI USB controller
2571@item
2572LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
a1bb27b1
PB
2573@item
2574PL181 MultiMedia Card Interface with SD card.
d7739d75
PB
2575@end itemize
2576
b00052e4
AZ
2577The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
2578and "Terrier") emulation includes the following peripherals:
2579
2580@itemize @minus
2581@item
2582Intel PXA270 System-on-chip (ARM V5TE core)
2583@item
2584NAND Flash memory
2585@item
2586IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
2587@item
2588On-chip OHCI USB controller
2589@item
2590On-chip LCD controller
2591@item
2592On-chip Real Time Clock
2593@item
2594TI ADS7846 touchscreen controller on SSP bus
2595@item
2596Maxim MAX1111 analog-digital converter on I@math{^2}C bus
2597@item
2598GPIO-connected keyboard controller and LEDs
2599@item
549444e1 2600Secure Digital card connected to PXA MMC/SD host
b00052e4
AZ
2601@item
2602Three on-chip UARTs
2603@item
2604WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
2605@end itemize
2606
02645926
AZ
2607The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
2608following elements:
2609
2610@itemize @minus
2611@item
2612Texas Instruments OMAP310 System-on-chip (ARM 925T core)
2613@item
2614ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
2615@item
2616On-chip LCD controller
2617@item
2618On-chip Real Time Clock
2619@item
2620TI TSC2102i touchscreen controller / analog-digital converter / Audio
2621CODEC, connected through MicroWire and I@math{^2}S busses
2622@item
2623GPIO-connected matrix keypad
2624@item
2625Secure Digital card connected to OMAP MMC/SD host
2626@item
2627Three on-chip UARTs
2628@end itemize
2629
c30bb264
AZ
2630Nokia N800 and N810 internet tablets (known also as RX-34 and RX-44 / 48)
2631emulation supports the following elements:
2632
2633@itemize @minus
2634@item
2635Texas Instruments OMAP2420 System-on-chip (ARM 1136 core)
2636@item
2637RAM and non-volatile OneNAND Flash memories
2638@item
2639Display connected to EPSON remote framebuffer chip and OMAP on-chip
2640display controller and a LS041y3 MIPI DBI-C controller
2641@item
2642TI TSC2301 (in N800) and TI TSC2005 (in N810) touchscreen controllers
2643driven through SPI bus
2644@item
2645National Semiconductor LM8323-controlled qwerty keyboard driven
2646through I@math{^2}C bus
2647@item
2648Secure Digital card connected to OMAP MMC/SD host
2649@item
2650Three OMAP on-chip UARTs and on-chip STI debugging console
2651@item
2652Mentor Graphics "Inventra" dual-role USB controller embedded in a TI
2653TUSB6010 chip - only USB host mode is supported
2654@item
2655TI TMP105 temperature sensor driven through I@math{^2}C bus
2656@item
2657TI TWL92230C power management companion with an RTC on I@math{^2}C bus
2658@item
2659Nokia RETU and TAHVO multi-purpose chips with an RTC, connected
2660through CBUS
2661@end itemize
2662
9ee6e8bb
PB
2663The Luminary Micro Stellaris LM3S811EVB emulation includes the following
2664devices:
2665
2666@itemize @minus
2667@item
2668Cortex-M3 CPU core.
2669@item
267064k Flash and 8k SRAM.
2671@item
2672Timers, UARTs, ADC and I@math{^2}C interface.
2673@item
2674OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
2675@end itemize
2676
2677The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
2678devices:
2679
2680@itemize @minus
2681@item
2682Cortex-M3 CPU core.
2683@item
2684256k Flash and 64k SRAM.
2685@item
2686Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
2687@item
2688OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
2689@end itemize
2690
57cd6e97
AZ
2691The Freecom MusicPal internet radio emulation includes the following
2692elements:
2693
2694@itemize @minus
2695@item
2696Marvell MV88W8618 ARM core.
2697@item
269832 MB RAM, 256 KB SRAM, 8 MB flash.
2699@item
2700Up to 2 16550 UARTs
2701@item
2702MV88W8xx8 Ethernet controller
2703@item
2704MV88W8618 audio controller, WM8750 CODEC and mixer
2705@item
2706