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