Disable the vnc CopyRect encoding
[qemu-kvm/fedora.git] / qemu-doc.texi
blob0cccddd0a65e0c668cf1b59d50c7b449f4fe5184
1 \input texinfo @c -*- texinfo -*-
2 @c %**start of header
3 @setfilename qemu-doc.info
4 @settitle QEMU Emulator User Documentation
5 @exampleindent 0
6 @paragraphindent 0
7 @c %**end of header
9 @iftex
10 @titlepage
11 @sp 7
12 @center @titlefont{QEMU Emulator}
13 @sp 1
14 @center @titlefont{User Documentation}
15 @sp 3
16 @end titlepage
17 @end iftex
19 @ifnottex
20 @node Top
21 @top
23 @menu
24 * Introduction::
25 * Installation::
26 * QEMU PC System emulator::
27 * QEMU System emulator for non PC targets::
28 * QEMU User space emulator::
29 * compilation:: Compilation from the sources
30 * Index::
31 @end menu
32 @end ifnottex
34 @contents
36 @node Introduction
37 @chapter Introduction
39 @menu
40 * intro_features:: Features
41 @end menu
43 @node intro_features
44 @section Features
46 QEMU is a FAST! processor emulator using dynamic translation to
47 achieve good emulation speed.
49 QEMU has two operating modes:
51 @itemize @minus
53 @item
54 Full system emulation. In this mode, QEMU emulates a full system (for
55 example a PC), including one or several processors and various
56 peripherals. It can be used to launch different Operating Systems
57 without rebooting the PC or to debug system code.
59 @item
60 User mode emulation. In this mode, QEMU can launch
61 processes compiled for one CPU on another CPU. It can be used to
62 launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
63 to ease cross-compilation and cross-debugging.
65 @end itemize
67 QEMU can run without an host kernel driver and yet gives acceptable
68 performance.
70 For system emulation, the following hardware targets are supported:
71 @itemize
72 @item PC (x86 or x86_64 processor)
73 @item ISA PC (old style PC without PCI bus)
74 @item PREP (PowerPC processor)
75 @item G3 Beige PowerMac (PowerPC processor)
76 @item Mac99 PowerMac (PowerPC processor, in progress)
77 @item Sun4m/Sun4c/Sun4d (32-bit Sparc processor)
78 @item Sun4u/Sun4v (64-bit Sparc processor, in progress)
79 @item Malta board (32-bit and 64-bit MIPS processors)
80 @item MIPS Magnum (64-bit MIPS processor)
81 @item ARM Integrator/CP (ARM)
82 @item ARM Versatile baseboard (ARM)
83 @item ARM RealView Emulation baseboard (ARM)
84 @item Spitz, Akita, Borzoi, Terrier and Tosa PDAs (PXA270 processor)
85 @item Luminary Micro LM3S811EVB (ARM Cortex-M3)
86 @item Luminary Micro LM3S6965EVB (ARM Cortex-M3)
87 @item Freescale MCF5208EVB (ColdFire V2).
88 @item Arnewsh MCF5206 evaluation board (ColdFire V2).
89 @item Palm Tungsten|E PDA (OMAP310 processor)
90 @item N800 and N810 tablets (OMAP2420 processor)
91 @item MusicPal (MV88W8618 ARM processor)
92 @item Gumstix "Connex" and "Verdex" motherboards (PXA255/270).
93 @item Siemens SX1 smartphone (OMAP310 processor)
94 @end itemize
96 For user emulation, x86, PowerPC, ARM, 32-bit MIPS, Sparc32/64 and ColdFire(m68k) CPUs are supported.
98 @node Installation
99 @chapter Installation
101 If you want to compile QEMU yourself, see @ref{compilation}.
103 @menu
104 * install_linux::   Linux
105 * install_windows:: Windows
106 * install_mac::     Macintosh
107 @end menu
109 @node install_linux
110 @section Linux
112 If a precompiled package is available for your distribution - you just
113 have to install it. Otherwise, see @ref{compilation}.
115 @node install_windows
116 @section Windows
118 Download the experimental binary installer at
119 @url{http://www.free.oszoo.org/@/download.html}.
121 @node install_mac
122 @section Mac OS X
124 Download the experimental binary installer at
125 @url{http://www.free.oszoo.org/@/download.html}.
127 @node QEMU PC System emulator
128 @chapter QEMU PC System emulator
130 @menu
131 * pcsys_introduction:: Introduction
132 * pcsys_quickstart::   Quick Start
133 * sec_invocation::     Invocation
134 * pcsys_keys::         Keys
135 * pcsys_monitor::      QEMU Monitor
136 * disk_images::        Disk Images
137 * pcsys_network::      Network emulation
138 * direct_linux_boot::  Direct Linux Boot
139 * pcsys_usb::          USB emulation
140 * vnc_security::       VNC security
141 * gdb_usage::          GDB usage
142 * pcsys_os_specific::  Target OS specific information
143 @end menu
145 @node pcsys_introduction
146 @section Introduction
148 @c man begin DESCRIPTION
150 The QEMU PC System emulator simulates the
151 following peripherals:
153 @itemize @minus
154 @item
155 i440FX host PCI bridge and PIIX3 PCI to ISA bridge
156 @item
157 Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
158 extensions (hardware level, including all non standard modes).
159 @item
160 PS/2 mouse and keyboard
161 @item
162 2 PCI IDE interfaces with hard disk and CD-ROM support
163 @item
164 Floppy disk
165 @item
166 PCI/ISA PCI network adapters
167 @item
168 Serial ports
169 @item
170 Creative SoundBlaster 16 sound card
171 @item
172 ENSONIQ AudioPCI ES1370 sound card
173 @item
174 Intel 82801AA AC97 Audio compatible sound card
175 @item
176 Adlib(OPL2) - Yamaha YM3812 compatible chip
177 @item
178 Gravis Ultrasound GF1 sound card
179 @item
180 CS4231A compatible sound card
181 @item
182 PCI UHCI USB controller and a virtual USB hub.
183 @end itemize
185 SMP is supported with up to 255 CPUs.
187 Note that adlib, gus and cs4231a are only available when QEMU was
188 configured with --audio-card-list option containing the name(s) of
189 required card(s).
191 QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
192 VGA BIOS.
194 QEMU uses YM3812 emulation by Tatsuyuki Satoh.
196 QEMU uses GUS emulation(GUSEMU32 @url{http://www.deinmeister.de/gusemu/})
197 by Tibor "TS" Schütz.
199 CS4231A is the chip used in Windows Sound System and GUSMAX products
201 @c man end
203 @node pcsys_quickstart
204 @section Quick Start
206 Download and uncompress the linux image (@file{linux.img}) and type:
208 @example
209 qemu linux.img
210 @end example
212 Linux should boot and give you a prompt.
214 @node sec_invocation
215 @section Invocation
217 @example
218 @c man begin SYNOPSIS
219 usage: qemu [options] [@var{disk_image}]
220 @c man end
221 @end example
223 @c man begin OPTIONS
224 @var{disk_image} is a raw hard disk image for IDE hard disk 0. Some
225 targets do not need a disk image.
227 General options:
228 @table @option
229 @item -h
230 Display help and exit
232 @item -M @var{machine}
233 Select the emulated @var{machine} (@code{-M ?} for list)
235 @item -cpu @var{model}
236 Select CPU model (-cpu ? for list and additional feature selection)
238 @item -smp @var{n}
239 Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
240 CPUs are supported. On Sparc32 target, Linux limits the number of usable CPUs
241 to 4.
243 @item -fda @var{file}
244 @item -fdb @var{file}
245 Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can
246 use the host floppy by using @file{/dev/fd0} as filename (@pxref{host_drives}).
248 @item -hda @var{file}
249 @item -hdb @var{file}
250 @item -hdc @var{file}
251 @item -hdd @var{file}
252 Use @var{file} as hard disk 0, 1, 2 or 3 image (@pxref{disk_images}).
254 @item -cdrom @var{file}
255 Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and
256 @option{-cdrom} at the same time). You can use the host CD-ROM by
257 using @file{/dev/cdrom} as filename (@pxref{host_drives}).
259 @item -drive @var{option}[,@var{option}[,@var{option}[,...]]]
261 Define a new drive. Valid options are:
263 @table @code
264 @item file=@var{file}
265 This option defines which disk image (@pxref{disk_images}) to use with
266 this drive. If the filename contains comma, you must double it
267 (for instance, "file=my,,file" to use file "my,file").
268 @item if=@var{interface}
269 This option defines on which type on interface the drive is connected.
270 Available types are: ide, scsi, sd, mtd, floppy, pflash, virtio.
271 @item bus=@var{bus},unit=@var{unit}
272 These options define where is connected the drive by defining the bus number and
273 the unit id.
274 @item index=@var{index}
275 This option defines where is connected the drive by using an index in the list
276 of available connectors of a given interface type.
277 @item media=@var{media}
278 This option defines the type of the media: disk or cdrom.
279 @item cyls=@var{c},heads=@var{h},secs=@var{s}[,trans=@var{t}]
280 These options have the same definition as they have in @option{-hdachs}.
281 @item snapshot=@var{snapshot}
282 @var{snapshot} is "on" or "off" and allows to enable snapshot for given drive (see @option{-snapshot}).
283 @item cache=@var{cache}
284 @var{cache} is "none", "writeback", or "writethrough" and controls how the host cache is used to access block data.
285 @item format=@var{format}
286 Specify which disk @var{format} will be used rather than detecting
287 the format.  Can be used to specifiy format=raw to avoid interpreting
288 an untrusted format header.
289 @item serial=@var{serial}
290 This option specifies the serial number to assign to the device.
291 @item boot=@var{boot}
292 @var{boot} if "on" enables extboot for a given drive so it can be used as a boot drive.
293 @end table
295 By default, writethrough caching is used for all block device.  This means that
296 the host page cache will be used to read and write data but write notification
297 will be sent to the guest only when the data has been reported as written by
298 the storage subsystem.
300 Writeback caching will report data writes as completed as soon as the data is
301 present in the host page cache.  This is safe as long as you trust your host.
302 If your host crashes or loses power, then the guest may experience data
303 corruption.  When using the @option{-snapshot} option, writeback caching is
304 used by default.
306 The host page can be avoided entirely with @option{cache=none}.  This will
307 attempt to do disk IO directly to the guests memory.  QEMU may still perform
308 an internal copy of the data.
310 Some block drivers perform badly with @option{cache=writethrough}, most notably,
311 qcow2.  If performance is more important than correctness,
312 @option{cache=writeback} should be used with qcow2.  By default, if no explicit
313 caching is specified for a qcow2 disk image, @option{cache=writeback} will be
314 used.  For all other disk types, @option{cache=writethrough} is the default.
316 Instead of @option{-cdrom} you can use:
317 @example
318 qemu -drive file=file,index=2,media=cdrom
319 @end example
321 Instead of @option{-hda}, @option{-hdb}, @option{-hdc}, @option{-hdd}, you can
322 use:
323 @example
324 qemu -drive file=file,index=0,media=disk
325 qemu -drive file=file,index=1,media=disk
326 qemu -drive file=file,index=2,media=disk
327 qemu -drive file=file,index=3,media=disk
328 @end example
330 You can connect a CDROM to the slave of ide0:
331 @example
332 qemu -drive file=file,if=ide,index=1,media=cdrom
333 @end example
335 If you don't specify the "file=" argument, you define an empty drive:
336 @example
337 qemu -drive if=ide,index=1,media=cdrom
338 @end example
340 You can connect a SCSI disk with unit ID 6 on the bus #0:
341 @example
342 qemu -drive file=file,if=scsi,bus=0,unit=6
343 @end example
345 To boot from a SCSI disk, one would use:
347 @example
348 qemu -drive file=file,if=scsi,boot=on
349 @end example
351 Instead of @option{-fda}, @option{-fdb}, you can use:
352 @example
353 qemu -drive file=file,index=0,if=floppy
354 qemu -drive file=file,index=1,if=floppy
355 @end example
357 By default, @var{interface} is "ide" and @var{index} is automatically
358 incremented:
359 @example
360 qemu -drive file=a -drive file=b"
361 @end example
362 is interpreted like:
363 @example
364 qemu -hda a -hdb b
365 @end example
367 @item -mtdblock file
368 Use 'file' as on-board Flash memory image.
370 @item -sd file
371 Use 'file' as SecureDigital card image.
373 @item -pflash file
374 Use 'file' as a parallel flash image.
376 @item -boot [a|c|d|n]
377 Boot on floppy (a), hard disk (c), CD-ROM (d), or Etherboot (n). Hard disk boot
378 is the default.
380 @item -snapshot
381 Write to temporary files instead of disk image files. In this case,
382 the raw disk image you use is not written back. You can however force
383 the write back by pressing @key{C-a s} (@pxref{disk_images}).
385 @item -m @var{megs}
386 Set virtual RAM size to @var{megs} megabytes. Default is 128 MiB.  Optionally,
387 a suffix of ``M'' or ``G'' can be used to signify a value in megabytes or
388 gigabytes respectively.
390 @item -k @var{language}
392 Use keyboard layout @var{language} (for example @code{fr} for
393 French). This option is only needed where it is not easy to get raw PC
394 keycodes (e.g. on Macs, with some X11 servers or with a VNC
395 display). You don't normally need to use it on PC/Linux or PC/Windows
396 hosts.
398 The available layouts are:
399 @example
400 ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
401 da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
402 de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
403 @end example
405 The default is @code{en-us}.
407 @item -audio-help
409 Will show the audio subsystem help: list of drivers, tunable
410 parameters.
412 @item -soundhw @var{card1}[,@var{card2},...] or -soundhw all
414 Enable audio and selected sound hardware. Use ? to print all
415 available sound hardware.
417 @example
418 qemu -soundhw sb16,adlib disk.img
419 qemu -soundhw es1370 disk.img
420 qemu -soundhw ac97 disk.img
421 qemu -soundhw all disk.img
422 qemu -soundhw ?
423 @end example
425 Note that Linux's i810_audio OSS kernel (for AC97) module might
426 require manually specifying clocking.
428 @example
429 modprobe i810_audio clocking=48000
430 @end example
432 @end table
434 USB options:
435 @table @option
437 @item -usb
438 Enable the USB driver (will be the default soon)
440 @item -usbdevice @var{devname}
441 Add the USB device @var{devname}. @xref{usb_devices}.
443 @table @code
445 @item mouse
446 Virtual Mouse. This will override the PS/2 mouse emulation when activated.
448 @item tablet
449 Pointer device that uses absolute coordinates (like a touchscreen). This
450 means qemu is able to report the mouse position without having to grab the
451 mouse. Also overrides the PS/2 mouse emulation when activated.
453 @item disk:[format=@var{format}]:file
454 Mass storage device based on file. The optional @var{format} argument
455 will be used rather than detecting the format. Can be used to specifiy
456 format=raw to avoid interpreting an untrusted format header.
458 @item host:bus.addr
459 Pass through the host device identified by bus.addr (Linux only).
461 @item host:vendor_id:product_id
462 Pass through the host device identified by vendor_id:product_id (Linux only).
464 @item serial:[vendorid=@var{vendor_id}][,productid=@var{product_id}]:@var{dev}
465 Serial converter to host character device @var{dev}, see @code{-serial} for the
466 available devices.
468 @item braille
469 Braille device.  This will use BrlAPI to display the braille output on a real
470 or fake device.
472 @item net:options
473 Network adapter that supports CDC ethernet and RNDIS protocols.
475 @end table
477 @item -name @var{name}
478 Sets the @var{name} of the guest.
479 This name will be displayed in the SDL window caption.
480 The @var{name} will also be used for the VNC server.
482 @item -uuid @var{uuid}
483 Set system UUID.
485 @end table
487 Display options:
488 @table @option
490 @item -nographic
492 Normally, QEMU uses SDL to display the VGA output. With this option,
493 you can totally disable graphical output so that QEMU is a simple
494 command line application. The emulated serial port is redirected on
495 the console. Therefore, you can still use QEMU to debug a Linux kernel
496 with a serial console.
498 @item -curses
500 Normally, QEMU uses SDL to display the VGA output.  With this option,
501 QEMU can display the VGA output when in text mode using a 
502 curses/ncurses interface.  Nothing is displayed in graphical mode.
504 @item -no-frame
506 Do not use decorations for SDL windows and start them using the whole
507 available screen space. This makes the using QEMU in a dedicated desktop
508 workspace more convenient.
510 @item -alt-grab
512 Use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt).
514 @item -no-quit
516 Disable SDL window close capability.
518 @item -sdl
520 Enable SDL.
522 @item -portrait
524 Rotate graphical output 90 deg left (only PXA LCD).
526 @item -vga @var{type}
527 Select type of VGA card to emulate. Valid values for @var{type} are
528 @table @code
529 @item cirrus
530 Cirrus Logic GD5446 Video card. All Windows versions starting from
531 Windows 95 should recognize and use this graphic card. For optimal
532 performances, use 16 bit color depth in the guest and the host OS.
533 (This one is the default)
534 @item std
535 Standard VGA card with Bochs VBE extensions.  If your guest OS
536 supports the VESA 2.0 VBE extensions (e.g. Windows XP) and if you want
537 to use high resolution modes (>= 1280x1024x16) then you should use
538 this option.
539 @item vmware
540 VMWare SVGA-II compatible adapter. Use it if you have sufficiently
541 recent XFree86/XOrg server or Windows guest with a driver for this
542 card.
543 @item none
544 Disable VGA card.
545 @end table
547 @item -full-screen
548 Start in full screen.
550 @item -vnc @var{display}[,@var{option}[,@var{option}[,...]]]
552 Normally, QEMU uses SDL to display the VGA output.  With this option,
553 you can have QEMU listen on VNC display @var{display} and redirect the VGA
554 display over the VNC session.  It is very useful to enable the usb
555 tablet device when using this option (option @option{-usbdevice
556 tablet}). When using the VNC display, you must use the @option{-k}
557 parameter to set the keyboard layout if you are not using en-us. Valid
558 syntax for the @var{display} is
560 @table @code
562 @item @var{host}:@var{d}
564 TCP connections will only be allowed from @var{host} on display @var{d}.
565 By convention the TCP port is 5900+@var{d}. Optionally, @var{host} can
566 be omitted in which case the server will accept connections from any host.
568 @item @code{unix}:@var{path}
570 Connections will be allowed over UNIX domain sockets where @var{path} is the
571 location of a unix socket to listen for connections on.
573 @item none
575 VNC is initialized but not started. The monitor @code{change} command
576 can be used to later start the VNC server.
578 @end table
580 Following the @var{display} value there may be one or more @var{option} flags
581 separated by commas. Valid options are
583 @table @code
585 @item reverse
587 Connect to a listening VNC client via a ``reverse'' connection. The
588 client is specified by the @var{display}. For reverse network
589 connections (@var{host}:@var{d},@code{reverse}), the @var{d} argument
590 is a TCP port number, not a display number.
592 @item password
594 Require that password based authentication is used for client connections.
595 The password must be set separately using the @code{change} command in the
596 @ref{pcsys_monitor}
598 @item tls
600 Require that client use TLS when communicating with the VNC server. This
601 uses anonymous TLS credentials so is susceptible to a man-in-the-middle
602 attack. It is recommended that this option be combined with either the
603 @var{x509} or @var{x509verify} options.
605 @item x509=@var{/path/to/certificate/dir}
607 Valid if @option{tls} is specified. Require that x509 credentials are used
608 for negotiating the TLS session. The server will send its x509 certificate
609 to the client. It is recommended that a password be set on the VNC server
610 to provide authentication of the client when this is used. The path following
611 this option specifies where the x509 certificates are to be loaded from.
612 See the @ref{vnc_security} section for details on generating certificates.
614 @item x509verify=@var{/path/to/certificate/dir}
616 Valid if @option{tls} is specified. Require that x509 credentials are used
617 for negotiating the TLS session. The server will send its x509 certificate
618 to the client, and request that the client send its own x509 certificate.
619 The server will validate the client's certificate against the CA certificate,
620 and reject clients when validation fails. If the certificate authority is
621 trusted, this is a sufficient authentication mechanism. You may still wish
622 to set a password on the VNC server as a second authentication layer. The
623 path following this option specifies where the x509 certificates are to
624 be loaded from. See the @ref{vnc_security} section for details on generating
625 certificates.
627 @item sasl
629 Require that the client use SASL to authenticate with the VNC server.
630 The exact choice of authentication method used is controlled from the
631 system / user's SASL configuration file for the 'qemu' service. This
632 is typically found in /etc/sasl2/qemu.conf. If running QEMU as an
633 unprivileged user, an environment variable SASL_CONF_PATH can be used
634 to make it search alternate locations for the service config.
635 While some SASL auth methods can also provide data encryption (eg GSSAPI),
636 it is recommended that SASL always be combined with the 'tls' and
637 'x509' settings to enable use of SSL and server certificates. This
638 ensures a data encryption preventing compromise of authentication
639 credentials. See the @ref{vnc_security} section for details on using
640 SASL authentication.
642 @item acl
644 Turn on access control lists for checking of the x509 client certificate
645 and SASL party. For x509 certs, the ACL check is made against the
646 certificate's distinguished name. This is something that looks like
647 @code{C=GB,O=ACME,L=Boston,CN=bob}. For SASL party, the ACL check is
648 made against the username, which depending on the SASL plugin, may
649 include a realm component, eg @code{bob} or @code{bob\@EXAMPLE.COM}.
650 When the @option{acl} flag is set, the initial access list will be
651 empty, with a @code{deny} policy. Thus no one will be allowed to
652 use the VNC server until the ACLs have been loaded. This can be
653 achieved using the @code{acl} monitor command.
655 @end table
657 @end table
659 Network options:
661 @table @option
663 @item -net nic[,vlan=@var{n}][,macaddr=@var{addr}][,model=@var{type}][,name=@var{name}]
664 Create a new Network Interface Card and connect it to VLAN @var{n} (@var{n}
665 = 0 is the default). The NIC is an rtl8139 by default on the PC
666 target. Optionally, the MAC address can be changed to @var{addr}
667 and a @var{name} can be assigned for use in monitor commands. If no
668 @option{-net} option is specified, a single NIC is created.
669 Qemu can emulate several different models of network card.
670 Valid values for @var{type} are
671 @code{i82551}, @code{i82557b}, @code{i82559er},
672 @code{ne2k_pci}, @code{ne2k_isa}, @code{pcnet}, @code{rtl8139},
673 @code{e1000}, @code{smc91c111}, @code{lance} and @code{mcf_fec}.
674 Not all devices are supported on all targets.  Use -net nic,model=?
675 for a list of available devices for your target.
677 @item -net user[,vlan=@var{n}][,hostname=@var{name}][,name=@var{name}]
678 Use the user mode network stack which requires no administrator
679 privilege to run.  @option{hostname=name} can be used to specify the client
680 hostname reported by the builtin DHCP server.
682 @item -net channel,@var{port}:@var{dev}
683 Forward @option{user} TCP connection to port @var{port} to character device @var{dev}
685 @item -net tap[,vlan=@var{n}][,name=@var{name}][,fd=@var{h}][,ifname=@var{name}][,script=@var{file}][,downscript=@var{dfile}]
686 Connect the host TAP network interface @var{name} to VLAN @var{n}, use
687 the network script @var{file} to configure it and the network script 
688 @var{dfile} to deconfigure it. If @var{name} is not provided, the OS 
689 automatically provides one. @option{fd}=@var{h} can be used to specify
690 the handle of an already opened host TAP interface. The default network 
691 configure script is @file{/etc/qemu-ifup} and the default network 
692 deconfigure script is @file{/etc/qemu-ifdown}. Use @option{script=no} 
693 or @option{downscript=no} to disable script execution. Example:
695 @example
696 qemu linux.img -net nic -net tap
697 @end example
699 More complicated example (two NICs, each one connected to a TAP device)
700 @example
701 qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
702                -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
703 @end example
706 @item -net socket[,vlan=@var{n}][,name=@var{name}][,fd=@var{h}][,listen=[@var{host}]:@var{port}][,connect=@var{host}:@var{port}]
708 Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual
709 machine using a TCP socket connection. If @option{listen} is
710 specified, QEMU waits for incoming connections on @var{port}
711 (@var{host} is optional). @option{connect} is used to connect to
712 another QEMU instance using the @option{listen} option. @option{fd}=@var{h}
713 specifies an already opened TCP socket.
715 Example:
716 @example
717 # launch a first QEMU instance
718 qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
719                -net socket,listen=:1234
720 # connect the VLAN 0 of this instance to the VLAN 0
721 # of the first instance
722 qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
723                -net socket,connect=127.0.0.1:1234
724 @end example
726 @item -net socket[,vlan=@var{n}][,name=@var{name}][,fd=@var{h}][,mcast=@var{maddr}:@var{port}]
728 Create a VLAN @var{n} shared with another QEMU virtual
729 machines using a UDP multicast socket, effectively making a bus for
730 every QEMU with same multicast address @var{maddr} and @var{port}.
731 NOTES:
732 @enumerate
733 @item
734 Several QEMU can be running on different hosts and share same bus (assuming
735 correct multicast setup for these hosts).
736 @item
737 mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see
738 @url{http://user-mode-linux.sf.net}.
739 @item
740 Use @option{fd=h} to specify an already opened UDP multicast socket.
741 @end enumerate
743 Example:
744 @example
745 # launch one QEMU instance
746 qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
747                -net socket,mcast=230.0.0.1:1234
748 # launch another QEMU instance on same "bus"
749 qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
750                -net socket,mcast=230.0.0.1:1234
751 # launch yet another QEMU instance on same "bus"
752 qemu linux.img -net nic,macaddr=52:54:00:12:34:58 \
753                -net socket,mcast=230.0.0.1:1234
754 @end example
756 Example (User Mode Linux compat.):
757 @example
758 # launch QEMU instance (note mcast address selected
759 # is UML's default)
760 qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
761                -net socket,mcast=239.192.168.1:1102
762 # launch UML
763 /path/to/linux ubd0=/path/to/root_fs eth0=mcast
764 @end example
766 @item -net vde[,vlan=@var{n}][,name=@var{name}][,sock=@var{socketpath}][,port=@var{n}][,group=@var{groupname}][,mode=@var{octalmode}]
767 Connect VLAN @var{n} to PORT @var{n} of a vde switch running on host and
768 listening for incoming connections on @var{socketpath}. Use GROUP @var{groupname}
769 and MODE @var{octalmode} to change default ownership and permissions for
770 communication port. This option is available only if QEMU has been compiled
771 with vde support enabled.
773 Example:
774 @example
775 # launch vde switch
776 vde_switch -F -sock /tmp/myswitch
777 # launch QEMU instance
778 qemu linux.img -net nic -net vde,sock=/tmp/myswitch
779 @end example
781 @item -net none
782 Indicate that no network devices should be configured. It is used to
783 override the default configuration (@option{-net nic -net user}) which
784 is activated if no @option{-net} options are provided.
786 @item -tftp @var{dir}
787 When using the user mode network stack, activate a built-in TFTP
788 server. The files in @var{dir} will be exposed as the root of a TFTP server.
789 The TFTP client on the guest must be configured in binary mode (use the command
790 @code{bin} of the Unix TFTP client). The host IP address on the guest is as
791 usual 10.0.2.2.
793 @item -bootp @var{file}
794 When using the user mode network stack, broadcast @var{file} as the BOOTP
795 filename.  In conjunction with @option{-tftp}, this can be used to network boot
796 a guest from a local directory.
798 Example (using pxelinux):
799 @example
800 qemu -hda linux.img -boot n -tftp /path/to/tftp/files -bootp /pxelinux.0
801 @end example
803 @item -smb @var{dir}
804 When using the user mode network stack, activate a built-in SMB
805 server so that Windows OSes can access to the host files in @file{@var{dir}}
806 transparently.
808 In the guest Windows OS, the line:
809 @example
810 10.0.2.4 smbserver
811 @end example
812 must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
813 or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
815 Then @file{@var{dir}} can be accessed in @file{\\smbserver\qemu}.
817 Note that a SAMBA server must be installed on the host OS in
818 @file{/usr/sbin/smbd}. QEMU was tested successfully with smbd version
819 2.2.7a from the Red Hat 9 and version 3.0.10-1.fc3 from Fedora Core 3.
821 @item -redir [tcp|udp]:@var{host-port}:[@var{guest-host}]:@var{guest-port}
823 When using the user mode network stack, redirect incoming TCP or UDP
824 connections to the host port @var{host-port} to the guest
825 @var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
826 is not specified, its value is 10.0.2.15 (default address given by the
827 built-in DHCP server).
829 For example, to redirect host X11 connection from screen 1 to guest
830 screen 0, use the following:
832 @example
833 # on the host
834 qemu -redir tcp:6001::6000 [...]
835 # this host xterm should open in the guest X11 server
836 xterm -display :1
837 @end example
839 To redirect telnet connections from host port 5555 to telnet port on
840 the guest, use the following:
842 @example
843 # on the host
844 qemu -redir tcp:5555::23 [...]
845 telnet localhost 5555
846 @end example
848 Then when you use on the host @code{telnet localhost 5555}, you
849 connect to the guest telnet server.
851 @end table
853 Bluetooth(R) options:
854 @table @option
856 @item -bt hci[...]
857 Defines the function of the corresponding Bluetooth HCI.  -bt options
858 are matched with the HCIs present in the chosen machine type.  For
859 example when emulating a machine with only one HCI built into it, only
860 the first @code{-bt hci[...]} option is valid and defines the HCI's
861 logic.  The Transport Layer is decided by the machine type.  Currently
862 the machines @code{n800} and @code{n810} have one HCI and all other
863 machines have none.
865 @anchor{bt-hcis}
866 The following three types are recognized:
868 @table @code
869 @item -bt hci,null
870 (default) The corresponding Bluetooth HCI assumes no internal logic
871 and will not respond to any HCI commands or emit events.
873 @item -bt hci,host[:@var{id}]
874 (@code{bluez} only) The corresponding HCI passes commands / events
875 to / from the physical HCI identified by the name @var{id} (default:
876 @code{hci0}) on the computer running QEMU.  Only available on @code{bluez}
877 capable systems like Linux.
879 @item -bt hci[,vlan=@var{n}]
880 Add a virtual, standard HCI that will participate in the Bluetooth
881 scatternet @var{n} (default @code{0}).  Similarly to @option{-net}
882 VLANs, devices inside a bluetooth network @var{n} can only communicate
883 with other devices in the same network (scatternet).
884 @end table
886 @item -bt vhci[,vlan=@var{n}]
887 (Linux-host only) Create a HCI in scatternet @var{n} (default 0) attached
888 to the host bluetooth stack instead of to the emulated target.  This
889 allows the host and target machines to participate in a common scatternet
890 and communicate.  Requires the Linux @code{vhci} driver installed.  Can
891 be used as following:
893 @example
894 qemu [...OPTIONS...] -bt hci,vlan=5 -bt vhci,vlan=5
895 @end example
897 @item -bt device:@var{dev}[,vlan=@var{n}]
898 Emulate a bluetooth device @var{dev} and place it in network @var{n}
899 (default @code{0}).  QEMU can only emulate one type of bluetooth devices
900 currently:
902 @table @code
903 @item keyboard
904 Virtual wireless keyboard implementing the HIDP bluetooth profile.
905 @end table
907 @end table
909 i386 target only:
911 @table @option
913 @item -win2k-hack
914 Use it when installing Windows 2000 to avoid a disk full bug. After
915 Windows 2000 is installed, you no longer need this option (this option
916 slows down the IDE transfers).
918 @item -rtc-td-hack
919 Use it if you experience time drift problem in Windows with ACPI HAL.
920 This option will try to figure out how many timer interrupts were not
921 processed by the Windows guest and will re-inject them.
923 @item -no-fd-bootchk
924 Disable boot signature checking for floppy disks in Bochs BIOS. It may
925 be needed to boot from old floppy disks.
927 @item -no-acpi
928 Disable ACPI (Advanced Configuration and Power Interface) support. Use
929 it if your guest OS complains about ACPI problems (PC target machine
930 only).
932 @item -no-hpet
933 Disable HPET support.
935 @item -acpitable [sig=@var{str}][,rev=@var{n}][,oem_id=@var{str}][,oem_table_id=@var{str}][,oem_rev=@var{n}] [,asl_compiler_id=@var{str}][,asl_compiler_rev=@var{n}][,data=@var{file1}[:@var{file2}]...]
936 Add ACPI table with specified header fields and context from specified files.
938 @end table
940 Linux boot specific: When using these options, you can use a given
941 Linux kernel without installing it in the disk image. It can be useful
942 for easier testing of various kernels.
944 @table @option
946 @item -kernel @var{bzImage}
947 Use @var{bzImage} as kernel image.
949 @item -append @var{cmdline}
950 Use @var{cmdline} as kernel command line
952 @item -initrd @var{file}
953 Use @var{file} as initial ram disk.
955 @end table
957 Debug/Expert options:
958 @table @option
960 @item -serial @var{dev}
961 Redirect the virtual serial port to host character device
962 @var{dev}. The default device is @code{vc} in graphical mode and
963 @code{stdio} in non graphical mode.
965 This option can be used several times to simulate up to 4 serial
966 ports.
968 Use @code{-serial none} to disable all serial ports.
970 Available character devices are:
971 @table @code
972 @item vc[:WxH]
973 Virtual console. Optionally, a width and height can be given in pixel with
974 @example
975 vc:800x600
976 @end example
977 It is also possible to specify width or height in characters:
978 @example
979 vc:80Cx24C
980 @end example
981 @item pty
982 [Linux only] Pseudo TTY (a new PTY is automatically allocated)
983 @item none
984 No device is allocated.
985 @item null
986 void device
987 @item /dev/XXX
988 [Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
989 parameters are set according to the emulated ones.
990 @item /dev/parport@var{N}
991 [Linux only, parallel port only] Use host parallel port
992 @var{N}. Currently SPP and EPP parallel port features can be used.
993 @item file:@var{filename}
994 Write output to @var{filename}. No character can be read.
995 @item stdio
996 [Unix only] standard input/output
997 @item pipe:@var{filename}
998 name pipe @var{filename}
999 @item COM@var{n}
1000 [Windows only] Use host serial port @var{n}
1001 @item udp:[@var{remote_host}]:@var{remote_port}[@@[@var{src_ip}]:@var{src_port}]
1002 This implements UDP Net Console.
1003 When @var{remote_host} or @var{src_ip} are not specified
1004 they default to @code{0.0.0.0}.
1005 When not using a specified @var{src_port} a random port is automatically chosen.
1006 @item msmouse
1007 Three button serial mouse. Configure the guest to use Microsoft protocol.
1009 If you just want a simple readonly console you can use @code{netcat} or
1010 @code{nc}, by starting qemu with: @code{-serial udp::4555} and nc as:
1011 @code{nc -u -l -p 4555}. Any time qemu writes something to that port it
1012 will appear in the netconsole session.
1014 If you plan to send characters back via netconsole or you want to stop
1015 and start qemu a lot of times, you should have qemu use the same
1016 source port each time by using something like @code{-serial
1017 udp::4555@@:4556} to qemu. Another approach is to use a patched
1018 version of netcat which can listen to a TCP port and send and receive
1019 characters via udp.  If you have a patched version of netcat which
1020 activates telnet remote echo and single char transfer, then you can
1021 use the following options to step up a netcat redirector to allow
1022 telnet on port 5555 to access the qemu port.
1023 @table @code
1024 @item Qemu Options:
1025 -serial udp::4555@@:4556
1026 @item netcat options:
1027 -u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
1028 @item telnet options:
1029 localhost 5555
1030 @end table
1033 @item tcp:[@var{host}]:@var{port}[,@var{server}][,nowait][,nodelay]
1034 The TCP Net Console has two modes of operation.  It can send the serial
1035 I/O to a location or wait for a connection from a location.  By default
1036 the TCP Net Console is sent to @var{host} at the @var{port}.  If you use
1037 the @var{server} option QEMU will wait for a client socket application
1038 to connect to the port before continuing, unless the @code{nowait}
1039 option was specified.  The @code{nodelay} option disables the Nagle buffering
1040 algorithm.  If @var{host} is omitted, 0.0.0.0 is assumed. Only
1041 one TCP connection at a time is accepted. You can use @code{telnet} to
1042 connect to the corresponding character device.
1043 @table @code
1044 @item Example to send tcp console to 192.168.0.2 port 4444
1045 -serial tcp:192.168.0.2:4444
1046 @item Example to listen and wait on port 4444 for connection
1047 -serial tcp::4444,server
1048 @item Example to not wait and listen on ip 192.168.0.100 port 4444
1049 -serial tcp:192.168.0.100:4444,server,nowait
1050 @end table
1052 @item telnet:@var{host}:@var{port}[,server][,nowait][,nodelay]
1053 The telnet protocol is used instead of raw tcp sockets.  The options
1054 work the same as if you had specified @code{-serial tcp}.  The
1055 difference is that the port acts like a telnet server or client using
1056 telnet option negotiation.  This will also allow you to send the
1057 MAGIC_SYSRQ sequence if you use a telnet that supports sending the break
1058 sequence.  Typically in unix telnet you do it with Control-] and then
1059 type "send break" followed by pressing the enter key.
1061 @item unix:@var{path}[,server][,nowait]
1062 A unix domain socket is used instead of a tcp socket.  The option works the
1063 same as if you had specified @code{-serial tcp} except the unix domain socket
1064 @var{path} is used for connections.
1066 @item mon:@var{dev_string}
1067 This is a special option to allow the monitor to be multiplexed onto
1068 another serial port.  The monitor is accessed with key sequence of
1069 @key{Control-a} and then pressing @key{c}. See monitor access
1070 @ref{pcsys_keys} in the -nographic section for more keys.
1071 @var{dev_string} should be any one of the serial devices specified
1072 above.  An example to multiplex the monitor onto a telnet server
1073 listening on port 4444 would be:
1074 @table @code
1075 @item -serial mon:telnet::4444,server,nowait
1076 @end table
1078 @item braille
1079 Braille device.  This will use BrlAPI to display the braille output on a real
1080 or fake device.
1082 @end table
1084 @item -parallel @var{dev}
1085 Redirect the virtual parallel port to host device @var{dev} (same
1086 devices as the serial port). On Linux hosts, @file{/dev/parportN} can
1087 be used to use hardware devices connected on the corresponding host
1088 parallel port.
1090 This option can be used several times to simulate up to 3 parallel
1091 ports.
1093 Use @code{-parallel none} to disable all parallel ports.
1095 @item -monitor @var{dev}
1096 Redirect the monitor to host device @var{dev} (same devices as the
1097 serial port).
1098 The default device is @code{vc} in graphical mode and @code{stdio} in
1099 non graphical mode.
1101 @item -pidfile @var{file}
1102 Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
1103 from a script.
1105 @item -S
1106 Do not start CPU at startup (you must type 'c' in the monitor).
1108 @item -s
1109 Wait gdb connection to port 1234 (@pxref{gdb_usage}).
1111 @item -p @var{port}
1112 Change gdb connection port.  @var{port} can be either a decimal number
1113 to specify a TCP port, or a host device (same devices as the serial port).
1115 @item -d
1116 Output log in /tmp/qemu.log
1117 @item -hdachs @var{c},@var{h},@var{s},[,@var{t}]
1118 Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
1119 @var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
1120 translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
1121 all those parameters. This option is useful for old MS-DOS disk
1122 images.
1124 @item -L  @var{path}
1125 Set the directory for the BIOS, VGA BIOS and keymaps.
1127 @item -bios @var{file}
1128 Set the filename for the BIOS.
1130 @item -kernel-kqemu
1131 Enable KQEMU full virtualization (default is user mode only).
1133 @item -no-kqemu
1134 Disable KQEMU kernel module usage. KQEMU options are only available if
1135 KQEMU support is enabled when compiling.
1137 @item -enable-kvm
1138 Enable KVM full virtualization support. This option is only available
1139 if KVM support is enabled when compiling.
1141 @item -no-reboot
1142 Exit instead of rebooting.
1144 @item -no-shutdown
1145 Don't exit QEMU on guest shutdown, but instead only stop the emulation.
1146 This allows for instance switching to monitor to commit changes to the
1147 disk image.
1149 @item -loadvm @var{file}
1150 Start right away with a saved state (@code{loadvm} in monitor)
1152 @item -daemonize
1153 Daemonize the QEMU process after initialization.  QEMU will not detach from
1154 standard IO until it is ready to receive connections on any of its devices.
1155 This option is a useful way for external programs to launch QEMU without having
1156 to cope with initialization race conditions.
1158 @item -option-rom @var{file}
1159 Load the contents of @var{file} as an option ROM.
1160 This option is useful to load things like EtherBoot.
1162 @item -clock @var{method}
1163 Force the use of the given methods for timer alarm. To see what timers
1164 are available use -clock ?.
1166 @item -localtime
1167 Set the real time clock to local time (the default is to UTC
1168 time). This option is needed to have correct date in MS-DOS or
1169 Windows.
1171 @item -startdate @var{date}
1172 Set the initial date of the real time clock. Valid formats for
1173 @var{date} are: @code{now} or @code{2006-06-17T16:01:21} or
1174 @code{2006-06-17}. The default value is @code{now}.
1176 @item -icount [N|auto]
1177 Enable virtual instruction counter.  The virtual cpu will execute one
1178 instruction every 2^N ns of virtual time.  If @code{auto} is specified
1179 then the virtual cpu speed will be automatically adjusted to keep virtual
1180 time within a few seconds of real time.
1182 Note that while this option can give deterministic behavior, it does not
1183 provide cycle accurate emulation.  Modern CPUs contain superscalar out of
1184 order cores with complex cache hierarchies.  The number of instructions
1185 executed often has little or no correlation with actual performance.
1187 @item -echr numeric_ascii_value
1188 Change the escape character used for switching to the monitor when using
1189 monitor and serial sharing.  The default is @code{0x01} when using the
1190 @code{-nographic} option.  @code{0x01} is equal to pressing
1191 @code{Control-a}.  You can select a different character from the ascii
1192 control keys where 1 through 26 map to Control-a through Control-z.  For
1193 instance you could use the either of the following to change the escape
1194 character to Control-t.
1195 @table @code
1196 @item -echr 0x14
1197 @item -echr 20
1198 @end table
1200 @item -chroot dir
1201 Immediately before starting guest execution, chroot to the specified
1202 directory.  Especially useful in combination with -runas.
1204 @item -runas user
1205 Immediately before starting guest execution, drop root privileges, switching
1206 to the specified user.
1208 @end table
1210 @c man end
1212 @node pcsys_keys
1213 @section Keys
1215 @c man begin OPTIONS
1217 During the graphical emulation, you can use the following keys:
1218 @table @key
1219 @item Ctrl-Alt-f
1220 Toggle full screen
1222 @item Ctrl-Alt-n
1223 Switch to virtual console 'n'. Standard console mappings are:
1224 @table @emph
1225 @item 1
1226 Target system display
1227 @item 2
1228 Monitor
1229 @item 3
1230 Serial port
1231 @end table
1233 @item Ctrl-Alt
1234 Toggle mouse and keyboard grab.
1235 @end table
1237 In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
1238 @key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
1240 During emulation, if you are using the @option{-nographic} option, use
1241 @key{Ctrl-a h} to get terminal commands:
1243 @table @key
1244 @item Ctrl-a h
1245 @item Ctrl-a ?
1246 Print this help
1247 @item Ctrl-a x
1248 Exit emulator
1249 @item Ctrl-a s
1250 Save disk data back to file (if -snapshot)
1251 @item Ctrl-a t
1252 Toggle console timestamps
1253 @item Ctrl-a b
1254 Send break (magic sysrq in Linux)
1255 @item Ctrl-a c
1256 Switch between console and monitor
1257 @item Ctrl-a Ctrl-a
1258 Send Ctrl-a
1259 @end table
1260 @c man end
1262 @ignore
1264 @c man begin SEEALSO
1265 The HTML documentation of QEMU for more precise information and Linux
1266 user mode emulator invocation.
1267 @c man end
1269 @c man begin AUTHOR
1270 Fabrice Bellard
1271 @c man end
1273 @end ignore
1275 @node pcsys_monitor
1276 @section QEMU Monitor
1278 The QEMU monitor is used to give complex commands to the QEMU
1279 emulator. You can use it to:
1281 @itemize @minus
1283 @item
1284 Remove or insert removable media images
1285 (such as CD-ROM or floppies).
1287 @item
1288 Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
1289 from a disk file.
1291 @item Inspect the VM state without an external debugger.
1293 @end itemize
1295 @subsection Commands
1297 The following commands are available:
1299 @table @option
1301 @item help or ? [@var{cmd}]
1302 Show the help for all commands or just for command @var{cmd}.
1304 @item commit
1305 Commit changes to the disk images (if -snapshot is used).
1307 @item info @var{subcommand}
1308 Show various information about the system state.
1310 @table @option
1311 @item info version
1312 show the version of QEMU
1313 @item info network
1314 show the various VLANs and the associated devices
1315 @item info chardev
1316 show the character devices
1317 @item info block
1318 show the block devices
1319 @item info block
1320 show block device statistics
1321 @item info registers
1322 show the cpu registers
1323 @item info cpus
1324 show infos for each CPU
1325 @item info history
1326 show the command line history
1327 @item info irq
1328 show the interrupts statistics (if available)
1329 @item info pic
1330 show i8259 (PIC) state
1331 @item info pci
1332 show emulated PCI device info
1333 @item info tlb
1334 show virtual to physical memory mappings (i386 only)
1335 @item info mem
1336 show the active virtual memory mappings (i386 only)
1337 @item info hpet
1338 show state of HPET (i386 only)
1339 @item info kqemu
1340 show KQEMU information
1341 @item info kvm
1342 show KVM information
1343 @item info usb
1344 show USB devices plugged on the virtual USB hub
1345 @item info usbhost
1346 show all USB host devices
1347 @item info profile
1348 show profiling information
1349 @item info capture
1350 show information about active capturing
1351 @item info snapshots
1352 show list of VM snapshots
1353 @item info status
1354 show the current VM status (running|paused)
1355 @item info pcmcia
1356 show guest PCMCIA status
1357 @item info mice
1358 show which guest mouse is receiving events
1359 @item info vnc
1360 show the vnc server status
1361 @item info name
1362 show the current VM name
1363 @item info uuid
1364 show the current VM UUID
1365 @item info cpustats
1366 show CPU statistics
1367 @item info slirp
1368 show SLIRP statistics (if available)
1369 @item info migrate
1370 show migration status
1371 @item info balloon
1372 show balloon information
1373 @end table
1375 @item q or quit
1376 Quit the emulator.
1378 @item eject [-f] @var{device}
1379 Eject a removable medium (use -f to force it).
1381 @item change @var{device} @var{setting}
1383 Change the configuration of a device.
1385 @table @option
1386 @item change @var{diskdevice} @var{filename} [@var{format}]
1387 Change the medium for a removable disk device to point to @var{filename}. eg
1389 @example
1390 (qemu) change ide1-cd0 /path/to/some.iso
1391 @end example
1393 @var{format} is optional.
1395 @item change vnc @var{display},@var{options}
1396 Change the configuration of the VNC server. The valid syntax for @var{display}
1397 and @var{options} are described at @ref{sec_invocation}. eg
1399 @example
1400 (qemu) change vnc localhost:1
1401 @end example
1403 @item change vnc password [@var{password}]
1405 Change the password associated with the VNC server. If the new password is not
1406 supplied, the monitor will prompt for it to be entered. VNC passwords are only
1407 significant up to 8 letters. eg
1409 @example
1410 (qemu) change vnc password
1411 Password: ********
1412 @end example
1414 @end table
1416 @item acl @var{subcommand} @var{aclname} @var{match} @var{index}
1418 Manage access control lists for network services. There are currently
1419 two named access control lists, @var{vnc.x509dname} and @var{vnc.username}
1420 matching on the x509 client certificate distinguished name, and SASL
1421 username respectively.
1423 @table @option
1424 @item acl show <aclname>
1425 list all the match rules in the access control list, and the default
1426 policy
1427 @item acl policy <aclname> @code{allow|deny}
1428 set the default access control list policy, used in the event that
1429 none of the explicit rules match. The default policy at startup is
1430 always @code{deny}
1431 @item acl allow <aclname> <match> [<index>]
1432 add a match to the access control list, allowing access. The match will
1433 normally be an exact username or x509 distinguished name, but can
1434 optionally include wildcard globs. eg @code{*\@EXAMPLE.COM} to allow
1435 all users in the @code{EXAMPLE.COM} kerberos realm. The match will
1436 normally be appended to the end of the ACL, but can be inserted
1437 earlier in the list if the optional @code{index} parameter is supplied.
1438 @item acl deny <aclname> <match> [<index>]
1439 add a match to the access control list, denying access. The match will
1440 normally be an exact username or x509 distinguished name, but can
1441 optionally include wildcard globs. eg @code{*\@EXAMPLE.COM} to allow
1442 all users in the @code{EXAMPLE.COM} kerberos realm. The match will
1443 normally be appended to the end of the ACL, but can be inserted
1444 earlier in the list if the optional @code{index} parameter is supplied.
1445 @item acl remove <aclname> <match>
1446 remove the specified match rule from the access control list.
1447 @item acl reset <aclname>
1448 remove all matches from the access control list, and set the default
1449 policy back to @code{deny}.
1450 @end table
1452 @item screendump @var{filename}
1453 Save screen into PPM image @var{filename}.
1455 @item logfile @var{filename}
1456 Output logs to @var{filename}.
1458 @item log @var{item1}[,...]
1459 Activate logging of the specified items to @file{/tmp/qemu.log}.
1461 @item savevm [@var{tag}|@var{id}]
1462 Create a snapshot of the whole virtual machine. If @var{tag} is
1463 provided, it is used as human readable identifier. If there is already
1464 a snapshot with the same tag or ID, it is replaced. More info at
1465 @ref{vm_snapshots}.
1467 @item loadvm @var{tag}|@var{id}
1468 Set the whole virtual machine to the snapshot identified by the tag
1469 @var{tag} or the unique snapshot ID @var{id}.
1471 @item delvm @var{tag}|@var{id}
1472 Delete the snapshot identified by @var{tag} or @var{id}.
1474 @item stop
1475 Stop emulation.
1477 @item c or cont
1478 Resume emulation.
1480 @item gdbserver [@var{port}]
1481 Start gdbserver session (default @var{port}=1234)
1483 @item x/fmt @var{addr}
1484 Virtual memory dump starting at @var{addr}.
1486 @item xp /@var{fmt} @var{addr}
1487 Physical memory dump starting at @var{addr}.
1489 @var{fmt} is a format which tells the command how to format the
1490 data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
1492 @table @var
1493 @item count
1494 is the number of items to be dumped.
1496 @item format
1497 can be x (hex), d (signed decimal), u (unsigned decimal), o (octal),
1498 c (char) or i (asm instruction).
1500 @item size
1501 can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
1502 @code{h} or @code{w} can be specified with the @code{i} format to
1503 respectively select 16 or 32 bit code instruction size.
1505 @end table
1507 Examples:
1508 @itemize
1509 @item
1510 Dump 10 instructions at the current instruction pointer:
1511 @example
1512 (qemu) x/10i $eip
1513 0x90107063:  ret
1514 0x90107064:  sti
1515 0x90107065:  lea    0x0(%esi,1),%esi
1516 0x90107069:  lea    0x0(%edi,1),%edi
1517 0x90107070:  ret
1518 0x90107071:  jmp    0x90107080
1519 0x90107073:  nop
1520 0x90107074:  nop
1521 0x90107075:  nop
1522 0x90107076:  nop
1523 @end example
1525 @item
1526 Dump 80 16 bit values at the start of the video memory.
1527 @smallexample
1528 (qemu) xp/80hx 0xb8000
1529 0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
1530 0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
1531 0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
1532 0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
1533 0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
1534 0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
1535 0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
1536 0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
1537 0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
1538 0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
1539 @end smallexample
1540 @end itemize
1542 @item p or print/@var{fmt} @var{expr}
1544 Print expression value. Only the @var{format} part of @var{fmt} is
1545 used.
1547 @item sendkey @var{keys}
1549 Send @var{keys} to the emulator. @var{keys} could be the name of the
1550 key or @code{#} followed by the raw value in either decimal or hexadecimal
1551 format. Use @code{-} to press several keys simultaneously. Example:
1552 @example
1553 sendkey ctrl-alt-f1
1554 @end example
1556 This command is useful to send keys that your graphical user interface
1557 intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
1559 @item system_reset
1561 Reset the system.
1563 @item system_powerdown
1565 Power down the system (if supported).
1567 @item sum @var{addr} @var{size}
1569 Compute the checksum of a memory region.
1571 @item usb_add @var{devname}
1573 Add the USB device @var{devname}.  For details of available devices see
1574 @ref{usb_devices}
1576 @item usb_del @var{devname}
1578 Remove the USB device @var{devname} from the QEMU virtual USB
1579 hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
1580 command @code{info usb} to see the devices you can remove.
1582 @item mouse_move @var{dx} @var{dy} [@var{dz}]
1583 Move the active mouse to the specified coordinates @var{dx} @var{dy}
1584 with optional scroll axis @var{dz}.
1586 @item mouse_button @var{val}
1587 Change the active mouse button state @var{val} (1=L, 2=M, 4=R).
1589 @item mouse_set @var{index}
1590 Set which mouse device receives events at given @var{index}, index
1591 can be obtained with
1592 @example
1593 info mice
1594 @end example
1596 @item wavcapture @var{filename} [@var{frequency} [@var{bits} [@var{channels}]]]
1597 Capture audio into @var{filename}. Using sample rate @var{frequency}
1598 bits per sample @var{bits} and number of channels @var{channels}.
1600 Defaults:
1601 @itemize @minus
1602 @item Sample rate = 44100 Hz - CD quality
1603 @item Bits = 16
1604 @item Number of channels = 2 - Stereo
1605 @end itemize
1607 @item stopcapture @var{index}
1608 Stop capture with a given @var{index}, index can be obtained with
1609 @example
1610 info capture
1611 @end example
1613 @item memsave @var{addr} @var{size} @var{file}
1614 save to disk virtual memory dump starting at @var{addr} of size @var{size}.
1616 @item pmemsave @var{addr} @var{size} @var{file}
1617 save to disk physical memory dump starting at @var{addr} of size @var{size}.
1619 @item boot_set @var{bootdevicelist}
1621 Define new values for the boot device list. Those values will override
1622 the values specified on the command line through the @code{-boot} option.
1624 The values that can be specified here depend on the machine type, but are
1625 the same that can be specified in the @code{-boot} command line option.
1627 @item nmi @var{cpu}
1628 Inject an NMI on the given CPU.
1630 @item migrate [-d] @var{uri}
1631 Migrate to @var{uri} (using -d to not wait for completion).
1633 @item migrate_cancel
1634 Cancel the current VM migration.
1636 @item migrate_set_speed @var{value}
1637 Set maximum speed to @var{value} (in bytes) for migrations.
1639 @item balloon @var{value}
1640 Request VM to change its memory allocation to @var{value} (in MB).
1642 @item set_link @var{name} [up|down]
1643 Set link @var{name} up or down.
1645 @end table
1647 @subsection Integer expressions
1649 The monitor understands integers expressions for every integer
1650 argument. You can use register names to get the value of specifics
1651 CPU registers by prefixing them with @emph{$}.
1653 @node disk_images
1654 @section Disk Images
1656 Since version 0.6.1, QEMU supports many disk image formats, including
1657 growable disk images (their size increase as non empty sectors are
1658 written), compressed and encrypted disk images. Version 0.8.3 added
1659 the new qcow2 disk image format which is essential to support VM
1660 snapshots.
1662 @menu
1663 * disk_images_quickstart::    Quick start for disk image creation
1664 * disk_images_snapshot_mode:: Snapshot mode
1665 * vm_snapshots::              VM snapshots
1666 * qemu_img_invocation::       qemu-img Invocation
1667 * qemu_nbd_invocation::       qemu-nbd Invocation
1668 * host_drives::               Using host drives
1669 * disk_images_fat_images::    Virtual FAT disk images
1670 * disk_images_nbd::           NBD access
1671 @end menu
1673 @node disk_images_quickstart
1674 @subsection Quick start for disk image creation
1676 You can create a disk image with the command:
1677 @example
1678 qemu-img create myimage.img mysize
1679 @end example
1680 where @var{myimage.img} is the disk image filename and @var{mysize} is its
1681 size in kilobytes. You can add an @code{M} suffix to give the size in
1682 megabytes and a @code{G} suffix for gigabytes.
1684 See @ref{qemu_img_invocation} for more information.
1686 @node disk_images_snapshot_mode
1687 @subsection Snapshot mode
1689 If you use the option @option{-snapshot}, all disk images are
1690 considered as read only. When sectors in written, they are written in
1691 a temporary file created in @file{/tmp}. You can however force the
1692 write back to the raw disk images by using the @code{commit} monitor
1693 command (or @key{C-a s} in the serial console).
1695 @node vm_snapshots
1696 @subsection VM snapshots
1698 VM snapshots are snapshots of the complete virtual machine including
1699 CPU state, RAM, device state and the content of all the writable
1700 disks. In order to use VM snapshots, you must have at least one non
1701 removable and writable block device using the @code{qcow2} disk image
1702 format. Normally this device is the first virtual hard drive.
1704 Use the monitor command @code{savevm} to create a new VM snapshot or
1705 replace an existing one. A human readable name can be assigned to each
1706 snapshot in addition to its numerical ID.
1708 Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
1709 a VM snapshot. @code{info snapshots} lists the available snapshots
1710 with their associated information:
1712 @example
1713 (qemu) info snapshots
1714 Snapshot devices: hda
1715 Snapshot list (from hda):
1716 ID        TAG                 VM SIZE                DATE       VM CLOCK
1717 1         start                   41M 2006-08-06 12:38:02   00:00:14.954
1718 2                                 40M 2006-08-06 12:43:29   00:00:18.633
1719 3         msys                    40M 2006-08-06 12:44:04   00:00:23.514
1720 @end example
1722 A VM snapshot is made of a VM state info (its size is shown in
1723 @code{info snapshots}) and a snapshot of every writable disk image.
1724 The VM state info is stored in the first @code{qcow2} non removable
1725 and writable block device. The disk image snapshots are stored in
1726 every disk image. The size of a snapshot in a disk image is difficult
1727 to evaluate and is not shown by @code{info snapshots} because the
1728 associated disk sectors are shared among all the snapshots to save
1729 disk space (otherwise each snapshot would need a full copy of all the
1730 disk images).
1732 When using the (unrelated) @code{-snapshot} option
1733 (@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
1734 but they are deleted as soon as you exit QEMU.
1736 VM snapshots currently have the following known limitations:
1737 @itemize
1738 @item
1739 They cannot cope with removable devices if they are removed or
1740 inserted after a snapshot is done.
1741 @item
1742 A few device drivers still have incomplete snapshot support so their
1743 state is not saved or restored properly (in particular USB).
1744 @end itemize
1746 @node qemu_img_invocation
1747 @subsection @code{qemu-img} Invocation
1749 @include qemu-img.texi
1751 @node qemu_nbd_invocation
1752 @subsection @code{qemu-nbd} Invocation
1754 @include qemu-nbd.texi
1756 @node host_drives
1757 @subsection Using host drives
1759 In addition to disk image files, QEMU can directly access host
1760 devices. We describe here the usage for QEMU version >= 0.8.3.
1762 @subsubsection Linux
1764 On Linux, you can directly use the host device filename instead of a
1765 disk image filename provided you have enough privileges to access
1766 it. For example, use @file{/dev/cdrom} to access to the CDROM or
1767 @file{/dev/fd0} for the floppy.
1769 @table @code
1770 @item CD
1771 You can specify a CDROM device even if no CDROM is loaded. QEMU has
1772 specific code to detect CDROM insertion or removal. CDROM ejection by
1773 the guest OS is supported. Currently only data CDs are supported.
1774 @item Floppy
1775 You can specify a floppy device even if no floppy is loaded. Floppy
1776 removal is currently not detected accurately (if you change floppy
1777 without doing floppy access while the floppy is not loaded, the guest
1778 OS will think that the same floppy is loaded).
1779 @item Hard disks
1780 Hard disks can be used. Normally you must specify the whole disk
1781 (@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
1782 see it as a partitioned disk. WARNING: unless you know what you do, it
1783 is better to only make READ-ONLY accesses to the hard disk otherwise
1784 you may corrupt your host data (use the @option{-snapshot} command
1785 line option or modify the device permissions accordingly).
1786 @end table
1788 @subsubsection Windows
1790 @table @code
1791 @item CD
1792 The preferred syntax is the drive letter (e.g. @file{d:}). The
1793 alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
1794 supported as an alias to the first CDROM drive.
1796 Currently there is no specific code to handle removable media, so it
1797 is better to use the @code{change} or @code{eject} monitor commands to
1798 change or eject media.
1799 @item Hard disks
1800 Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
1801 where @var{N} is the drive number (0 is the first hard disk).
1803 WARNING: unless you know what you do, it is better to only make
1804 READ-ONLY accesses to the hard disk otherwise you may corrupt your
1805 host data (use the @option{-snapshot} command line so that the
1806 modifications are written in a temporary file).
1807 @end table
1810 @subsubsection Mac OS X
1812 @file{/dev/cdrom} is an alias to the first CDROM.
1814 Currently there is no specific code to handle removable media, so it
1815 is better to use the @code{change} or @code{eject} monitor commands to
1816 change or eject media.
1818 @node disk_images_fat_images
1819 @subsection Virtual FAT disk images
1821 QEMU can automatically create a virtual FAT disk image from a
1822 directory tree. In order to use it, just type:
1824 @example
1825 qemu linux.img -hdb fat:/my_directory
1826 @end example
1828 Then you access access to all the files in the @file{/my_directory}
1829 directory without having to copy them in a disk image or to export
1830 them via SAMBA or NFS. The default access is @emph{read-only}.
1832 Floppies can be emulated with the @code{:floppy:} option:
1834 @example
1835 qemu linux.img -fda fat:floppy:/my_directory
1836 @end example
1838 A read/write support is available for testing (beta stage) with the
1839 @code{:rw:} option:
1841 @example
1842 qemu linux.img -fda fat:floppy:rw:/my_directory
1843 @end example
1845 What you should @emph{never} do:
1846 @itemize
1847 @item use non-ASCII filenames ;
1848 @item use "-snapshot" together with ":rw:" ;
1849 @item expect it to work when loadvm'ing ;
1850 @item write to the FAT directory on the host system while accessing it with the guest system.
1851 @end itemize
1853 @node disk_images_nbd
1854 @subsection NBD access
1856 QEMU can access directly to block device exported using the Network Block Device
1857 protocol.
1859 @example
1860 qemu linux.img -hdb nbd:my_nbd_server.mydomain.org:1024
1861 @end example
1863 If the NBD server is located on the same host, you can use an unix socket instead
1864 of an inet socket:
1866 @example
1867 qemu linux.img -hdb nbd:unix:/tmp/my_socket
1868 @end example
1870 In this case, the block device must be exported using qemu-nbd:
1872 @example
1873 qemu-nbd --socket=/tmp/my_socket my_disk.qcow2
1874 @end example
1876 The use of qemu-nbd allows to share a disk between several guests:
1877 @example
1878 qemu-nbd --socket=/tmp/my_socket --share=2 my_disk.qcow2
1879 @end example
1881 and then you can use it with two guests:
1882 @example
1883 qemu linux1.img -hdb nbd:unix:/tmp/my_socket
1884 qemu linux2.img -hdb nbd:unix:/tmp/my_socket
1885 @end example
1887 @node pcsys_network
1888 @section Network emulation
1890 QEMU can simulate several network cards (PCI or ISA cards on the PC
1891 target) and can connect them to an arbitrary number of Virtual Local
1892 Area Networks (VLANs). Host TAP devices can be connected to any QEMU
1893 VLAN. VLAN can be connected between separate instances of QEMU to
1894 simulate large networks. For simpler usage, a non privileged user mode
1895 network stack can replace the TAP device to have a basic network
1896 connection.
1898 @subsection VLANs
1900 QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
1901 connection between several network devices. These devices can be for
1902 example QEMU virtual Ethernet cards or virtual Host ethernet devices
1903 (TAP devices).
1905 @subsection Using TAP network interfaces
1907 This is the standard way to connect QEMU to a real network. QEMU adds
1908 a virtual network device on your host (called @code{tapN}), and you
1909 can then configure it as if it was a real ethernet card.
1911 @subsubsection Linux host
1913 As an example, you can download the @file{linux-test-xxx.tar.gz}
1914 archive and copy the script @file{qemu-ifup} in @file{/etc} and
1915 configure properly @code{sudo} so that the command @code{ifconfig}
1916 contained in @file{qemu-ifup} can be executed as root. You must verify
1917 that your host kernel supports the TAP network interfaces: the
1918 device @file{/dev/net/tun} must be present.
1920 See @ref{sec_invocation} to have examples of command lines using the
1921 TAP network interfaces.
1923 @subsubsection Windows host
1925 There is a virtual ethernet driver for Windows 2000/XP systems, called
1926 TAP-Win32. But it is not included in standard QEMU for Windows,
1927 so you will need to get it separately. It is part of OpenVPN package,
1928 so download OpenVPN from : @url{http://openvpn.net/}.
1930 @subsection Using the user mode network stack
1932 By using the option @option{-net user} (default configuration if no
1933 @option{-net} option is specified), QEMU uses a completely user mode
1934 network stack (you don't need root privilege to use the virtual
1935 network). The virtual network configuration is the following:
1937 @example
1939          QEMU VLAN      <------>  Firewall/DHCP server <-----> Internet
1940                            |          (10.0.2.2)
1941                            |
1942                            ---->  DNS server (10.0.2.3)
1943                            |
1944                            ---->  SMB server (10.0.2.4)
1945 @end example
1947 The QEMU VM behaves as if it was behind a firewall which blocks all
1948 incoming connections. You can use a DHCP client to automatically
1949 configure the network in the QEMU VM. The DHCP server assign addresses
1950 to the hosts starting from 10.0.2.15.
1952 In order to check that the user mode network is working, you can ping
1953 the address 10.0.2.2 and verify that you got an address in the range
1954 10.0.2.x from the QEMU virtual DHCP server.
1956 Note that @code{ping} is not supported reliably to the internet as it
1957 would require root privileges. It means you can only ping the local
1958 router (10.0.2.2).
1960 When using the built-in TFTP server, the router is also the TFTP
1961 server.
1963 When using the @option{-redir} option, TCP or UDP connections can be
1964 redirected from the host to the guest. It allows for example to
1965 redirect X11, telnet or SSH connections.
1967 @subsection Connecting VLANs between QEMU instances
1969 Using the @option{-net socket} option, it is possible to make VLANs
1970 that span several QEMU instances. See @ref{sec_invocation} to have a
1971 basic example.
1973 @node direct_linux_boot
1974 @section Direct Linux Boot
1976 This section explains how to launch a Linux kernel inside QEMU without
1977 having to make a full bootable image. It is very useful for fast Linux
1978 kernel testing.
1980 The syntax is:
1981 @example
1982 qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1983 @end example
1985 Use @option{-kernel} to provide the Linux kernel image and
1986 @option{-append} to give the kernel command line arguments. The
1987 @option{-initrd} option can be used to provide an INITRD image.
1989 When using the direct Linux boot, a disk image for the first hard disk
1990 @file{hda} is required because its boot sector is used to launch the
1991 Linux kernel.
1993 If you do not need graphical output, you can disable it and redirect
1994 the virtual serial port and the QEMU monitor to the console with the
1995 @option{-nographic} option. The typical command line is:
1996 @example
1997 qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1998      -append "root=/dev/hda console=ttyS0" -nographic
1999 @end example
2001 Use @key{Ctrl-a c} to switch between the serial console and the
2002 monitor (@pxref{pcsys_keys}).
2004 @node pcsys_usb
2005 @section USB emulation
2007 QEMU emulates a PCI UHCI USB controller. You can virtually plug
2008 virtual USB devices or real host USB devices (experimental, works only
2009 on Linux hosts).  Qemu will automatically create and connect virtual USB hubs
2010 as necessary to connect multiple USB devices.
2012 @menu
2013 * usb_devices::
2014 * host_usb_devices::
2015 @end menu
2016 @node usb_devices
2017 @subsection Connecting USB devices
2019 USB devices can be connected with the @option{-usbdevice} commandline option
2020 or the @code{usb_add} monitor command.  Available devices are:
2022 @table @code
2023 @item mouse
2024 Virtual Mouse.  This will override the PS/2 mouse emulation when activated.
2025 @item tablet
2026 Pointer device that uses absolute coordinates (like a touchscreen).
2027 This means qemu is able to report the mouse position without having
2028 to grab the mouse.  Also overrides the PS/2 mouse emulation when activated.
2029 @item disk:@var{file}
2030 Mass storage device based on @var{file} (@pxref{disk_images})
2031 @item host:@var{bus.addr}
2032 Pass through the host device identified by @var{bus.addr}
2033 (Linux only)
2034 @item host:@var{vendor_id:product_id}
2035 Pass through the host device identified by @var{vendor_id:product_id}
2036 (Linux only)
2037 @item wacom-tablet
2038 Virtual Wacom PenPartner tablet.  This device is similar to the @code{tablet}
2039 above but it can be used with the tslib library because in addition to touch
2040 coordinates it reports touch pressure.
2041 @item keyboard
2042 Standard USB keyboard.  Will override the PS/2 keyboard (if present).
2043 @item serial:[vendorid=@var{vendor_id}][,product_id=@var{product_id}]:@var{dev}
2044 Serial converter. This emulates an FTDI FT232BM chip connected to host character
2045 device @var{dev}. The available character devices are the same as for the
2046 @code{-serial} option. The @code{vendorid} and @code{productid} options can be
2047 used to override the default 0403:6001. For instance, 
2048 @example
2049 usb_add serial:productid=FA00:tcp:192.168.0.2:4444
2050 @end example
2051 will connect to tcp port 4444 of ip 192.168.0.2, and plug that to the virtual
2052 serial converter, faking a Matrix Orbital LCD Display (USB ID 0403:FA00).
2053 @item braille
2054 Braille device.  This will use BrlAPI to display the braille output on a real
2055 or fake device.
2056 @item net:@var{options}
2057 Network adapter that supports CDC ethernet and RNDIS protocols.  @var{options}
2058 specifies NIC options as with @code{-net nic,}@var{options} (see description).
2059 For instance, user-mode networking can be used with
2060 @example
2061 qemu [...OPTIONS...] -net user,vlan=0 -usbdevice net:vlan=0
2062 @end example
2063 Currently this cannot be used in machines that support PCI NICs.
2064 @item bt[:@var{hci-type}]
2065 Bluetooth dongle whose type is specified in the same format as with
2066 the @option{-bt hci} option, @pxref{bt-hcis,,allowed HCI types}.  If
2067 no type is given, the HCI logic corresponds to @code{-bt hci,vlan=0}.
2068 This USB device implements the USB Transport Layer of HCI.  Example
2069 usage:
2070 @example
2071 qemu [...OPTIONS...] -usbdevice bt:hci,vlan=3 -bt device:keyboard,vlan=3
2072 @end example
2073 @end table
2075 @node host_usb_devices
2076 @subsection Using host USB devices on a Linux host
2078 WARNING: this is an experimental feature. QEMU will slow down when
2079 using it. USB devices requiring real time streaming (i.e. USB Video
2080 Cameras) are not supported yet.
2082 @enumerate
2083 @item If you use an early Linux 2.4 kernel, verify that no Linux driver
2084 is actually using the USB device. A simple way to do that is simply to
2085 disable the corresponding kernel module by renaming it from @file{mydriver.o}
2086 to @file{mydriver.o.disabled}.
2088 @item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
2089 @example
2090 ls /proc/bus/usb
2091 001  devices  drivers
2092 @end example
2094 @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:
2095 @example
2096 chown -R myuid /proc/bus/usb
2097 @end example
2099 @item Launch QEMU and do in the monitor:
2100 @example
2101 info usbhost
2102   Device 1.2, speed 480 Mb/s
2103     Class 00: USB device 1234:5678, USB DISK
2104 @end example
2105 You should see the list of the devices you can use (Never try to use
2106 hubs, it won't work).
2108 @item Add the device in QEMU by using:
2109 @example
2110 usb_add host:1234:5678
2111 @end example
2113 Normally the guest OS should report that a new USB device is
2114 plugged. You can use the option @option{-usbdevice} to do the same.
2116 @item Now you can try to use the host USB device in QEMU.
2118 @end enumerate
2120 When relaunching QEMU, you may have to unplug and plug again the USB
2121 device to make it work again (this is a bug).
2123 @node vnc_security
2124 @section VNC security
2126 The VNC server capability provides access to the graphical console
2127 of the guest VM across the network. This has a number of security
2128 considerations depending on the deployment scenarios.
2130 @menu
2131 * vnc_sec_none::
2132 * vnc_sec_password::
2133 * vnc_sec_certificate::
2134 * vnc_sec_certificate_verify::
2135 * vnc_sec_certificate_pw::
2136 * vnc_sec_sasl::
2137 * vnc_sec_certificate_sasl::
2138 * vnc_generate_cert::
2139 * vnc_setup_sasl::
2140 @end menu
2141 @node vnc_sec_none
2142 @subsection Without passwords
2144 The simplest VNC server setup does not include any form of authentication.
2145 For this setup it is recommended to restrict it to listen on a UNIX domain
2146 socket only. For example
2148 @example
2149 qemu [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
2150 @end example
2152 This ensures that only users on local box with read/write access to that
2153 path can access the VNC server. To securely access the VNC server from a
2154 remote machine, a combination of netcat+ssh can be used to provide a secure
2155 tunnel.
2157 @node vnc_sec_password
2158 @subsection With passwords
2160 The VNC protocol has limited support for password based authentication. Since
2161 the protocol limits passwords to 8 characters it should not be considered
2162 to provide high security. The password can be fairly easily brute-forced by
2163 a client making repeat connections. For this reason, a VNC server using password
2164 authentication should be restricted to only listen on the loopback interface
2165 or UNIX domain sockets. Password authentication is requested with the @code{password}
2166 option, and then once QEMU is running the password is set with the monitor. Until
2167 the monitor is used to set the password all clients will be rejected.
2169 @example
2170 qemu [...OPTIONS...] -vnc :1,password -monitor stdio
2171 (qemu) change vnc password
2172 Password: ********
2173 (qemu)
2174 @end example
2176 @node vnc_sec_certificate
2177 @subsection With x509 certificates
2179 The QEMU VNC server also implements the VeNCrypt extension allowing use of
2180 TLS for encryption of the session, and x509 certificates for authentication.
2181 The use of x509 certificates is strongly recommended, because TLS on its
2182 own is susceptible to man-in-the-middle attacks. Basic x509 certificate
2183 support provides a secure session, but no authentication. This allows any
2184 client to connect, and provides an encrypted session.
2186 @example
2187 qemu [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
2188 @end example
2190 In the above example @code{/etc/pki/qemu} should contain at least three files,
2191 @code{ca-cert.pem}, @code{server-cert.pem} and @code{server-key.pem}. Unprivileged
2192 users will want to use a private directory, for example @code{$HOME/.pki/qemu}.
2193 NB the @code{server-key.pem} file should be protected with file mode 0600 to
2194 only be readable by the user owning it.
2196 @node vnc_sec_certificate_verify
2197 @subsection With x509 certificates and client verification
2199 Certificates can also provide a means to authenticate the client connecting.
2200 The server will request that the client provide a certificate, which it will
2201 then validate against the CA certificate. This is a good choice if deploying
2202 in an environment with a private internal certificate authority.
2204 @example
2205 qemu [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
2206 @end example
2209 @node vnc_sec_certificate_pw
2210 @subsection With x509 certificates, client verification and passwords
2212 Finally, the previous method can be combined with VNC password authentication
2213 to provide two layers of authentication for clients.
2215 @example
2216 qemu [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
2217 (qemu) change vnc password
2218 Password: ********
2219 (qemu)
2220 @end example
2223 @node vnc_sec_sasl
2224 @subsection With SASL authentication
2226 The SASL authentication method is a VNC extension, that provides an
2227 easily extendable, pluggable authentication method. This allows for
2228 integration with a wide range of authentication mechanisms, such as
2229 PAM, GSSAPI/Kerberos, LDAP, SQL databases, one-time keys and more.
2230 The strength of the authentication depends on the exact mechanism
2231 configured. If the chosen mechanism also provides a SSF layer, then
2232 it will encrypt the datastream as well.
2234 Refer to the later docs on how to choose the exact SASL mechanism
2235 used for authentication, but assuming use of one supporting SSF,
2236 then QEMU can be launched with:
2238 @example
2239 qemu [...OPTIONS...] -vnc :1,sasl -monitor stdio
2240 @end example
2242 @node vnc_sec_certificate_sasl
2243 @subsection With x509 certificates and SASL authentication
2245 If the desired SASL authentication mechanism does not supported
2246 SSF layers, then it is strongly advised to run it in combination
2247 with TLS and x509 certificates. This provides securely encrypted
2248 data stream, avoiding risk of compromising of the security
2249 credentials. This can be enabled, by combining the 'sasl' option
2250 with the aforementioned TLS + x509 options:
2252 @example
2253 qemu [...OPTIONS...] -vnc :1,tls,x509,sasl -monitor stdio
2254 @end example
2257 @node vnc_generate_cert
2258 @subsection Generating certificates for VNC
2260 The GNU TLS packages provides a command called @code{certtool} which can
2261 be used to generate certificates and keys in PEM format. At a minimum it
2262 is neccessary to setup a certificate authority, and issue certificates to
2263 each server. If using certificates for authentication, then each client
2264 will also need to be issued a certificate. The recommendation is for the
2265 server to keep its certificates in either @code{/etc/pki/qemu} or for
2266 unprivileged users in @code{$HOME/.pki/qemu}.
2268 @menu
2269 * vnc_generate_ca::
2270 * vnc_generate_server::
2271 * vnc_generate_client::
2272 @end menu
2273 @node vnc_generate_ca
2274 @subsubsection Setup the Certificate Authority
2276 This step only needs to be performed once per organization / organizational
2277 unit. First the CA needs a private key. This key must be kept VERY secret
2278 and secure. If this key is compromised the entire trust chain of the certificates
2279 issued with it is lost.
2281 @example
2282 # certtool --generate-privkey > ca-key.pem
2283 @end example
2285 A CA needs to have a public certificate. For simplicity it can be a self-signed
2286 certificate, or one issue by a commercial certificate issuing authority. To
2287 generate a self-signed certificate requires one core piece of information, the
2288 name of the organization.
2290 @example
2291 # cat > ca.info <<EOF
2292 cn = Name of your organization
2294 cert_signing_key
2296 # certtool --generate-self-signed \
2297            --load-privkey ca-key.pem
2298            --template ca.info \
2299            --outfile ca-cert.pem
2300 @end example
2302 The @code{ca-cert.pem} file should be copied to all servers and clients wishing to utilize
2303 TLS support in the VNC server. The @code{ca-key.pem} must not be disclosed/copied at all.
2305 @node vnc_generate_server
2306 @subsubsection Issuing server certificates
2308 Each server (or host) needs to be issued with a key and certificate. When connecting
2309 the certificate is sent to the client which validates it against the CA certificate.
2310 The core piece of information for a server certificate is the hostname. This should
2311 be the fully qualified hostname that the client will connect with, since the client
2312 will typically also verify the hostname in the certificate. On the host holding the
2313 secure CA private key:
2315 @example
2316 # cat > server.info <<EOF
2317 organization = Name  of your organization
2318 cn = server.foo.example.com
2319 tls_www_server
2320 encryption_key
2321 signing_key
2323 # certtool --generate-privkey > server-key.pem
2324 # certtool --generate-certificate \
2325            --load-ca-certificate ca-cert.pem \
2326            --load-ca-privkey ca-key.pem \
2327            --load-privkey server server-key.pem \
2328            --template server.info \
2329            --outfile server-cert.pem
2330 @end example
2332 The @code{server-key.pem} and @code{server-cert.pem} files should now be securely copied
2333 to the server for which they were generated. The @code{server-key.pem} is security
2334 sensitive and should be kept protected with file mode 0600 to prevent disclosure.
2336 @node vnc_generate_client
2337 @subsubsection Issuing client certificates
2339 If the QEMU VNC server is to use the @code{x509verify} option to validate client
2340 certificates as its authentication mechanism, each client also needs to be issued
2341 a certificate. The client certificate contains enough metadata to uniquely identify
2342 the client, typically organization, state, city, building, etc. On the host holding
2343 the secure CA private key:
2345 @example
2346 # cat > client.info <<EOF
2347 country = GB
2348 state = London
2349 locality = London
2350 organiazation = Name of your organization
2351 cn = client.foo.example.com
2352 tls_www_client
2353 encryption_key
2354 signing_key
2356 # certtool --generate-privkey > client-key.pem
2357 # certtool --generate-certificate \
2358            --load-ca-certificate ca-cert.pem \
2359            --load-ca-privkey ca-key.pem \
2360            --load-privkey client-key.pem \
2361            --template client.info \
2362            --outfile client-cert.pem
2363 @end example
2365 The @code{client-key.pem} and @code{client-cert.pem} files should now be securely
2366 copied to the client for which they were generated.
2369 @node vnc_setup_sasl
2371 @subsection Configuring SASL mechanisms
2373 The following documentation assumes use of the Cyrus SASL implementation on a
2374 Linux host, but the principals should apply to any other SASL impl. When SASL
2375 is enabled, the mechanism configuration will be loaded from system default
2376 SASL service config /etc/sasl2/qemu.conf. If running QEMU as an
2377 unprivileged user, an environment variable SASL_CONF_PATH can be used
2378 to make it search alternate locations for the service config.
2380 The default configuration might contain
2382 @example
2383 mech_list: digest-md5
2384 sasldb_path: /etc/qemu/passwd.db
2385 @end example
2387 This says to use the 'Digest MD5' mechanism, which is similar to the HTTP
2388 Digest-MD5 mechanism. The list of valid usernames & passwords is maintained
2389 in the /etc/qemu/passwd.db file, and can be updated using the saslpasswd2
2390 command. While this mechanism is easy to configure and use, it is not
2391 considered secure by modern standards, so only suitable for developers /
2392 ad-hoc testing.
2394 A more serious deployment might use Kerberos, which is done with the 'gssapi'
2395 mechanism
2397 @example
2398 mech_list: gssapi
2399 keytab: /etc/qemu/krb5.tab
2400 @end example
2402 For this to work the administrator of your KDC must generate a Kerberos
2403 principal for the server, with a name of  'qemu/somehost.example.com@@EXAMPLE.COM'
2404 replacing 'somehost.example.com' with the fully qualified host name of the
2405 machine running QEMU, and 'EXAMPLE.COM' with the Keberos Realm.
2407 Other configurations will be left as an exercise for the reader. It should
2408 be noted that only Digest-MD5 and GSSAPI provides a SSF layer for data
2409 encryption. For all other mechanisms, VNC should always be configured to
2410 use TLS and x509 certificates to protect security credentials from snooping.
2412 @node gdb_usage
2413 @section GDB usage
2415 QEMU has a primitive support to work with gdb, so that you can do
2416 'Ctrl-C' while the virtual machine is running and inspect its state.
2418 In order to use gdb, launch qemu with the '-s' option. It will wait for a
2419 gdb connection:
2420 @example
2421 > qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
2422        -append "root=/dev/hda"
2423 Connected to host network interface: tun0
2424 Waiting gdb connection on port 1234
2425 @end example
2427 Then launch gdb on the 'vmlinux' executable:
2428 @example
2429 > gdb vmlinux
2430 @end example
2432 In gdb, connect to QEMU:
2433 @example
2434 (gdb) target remote localhost:1234
2435 @end example
2437 Then you can use gdb normally. For example, type 'c' to launch the kernel:
2438 @example
2439 (gdb) c
2440 @end example
2442 Here are some useful tips in order to use gdb on system code:
2444 @enumerate
2445 @item
2446 Use @code{info reg} to display all the CPU registers.
2447 @item
2448 Use @code{x/10i $eip} to display the code at the PC position.
2449 @item
2450 Use @code{set architecture i8086} to dump 16 bit code. Then use
2451 @code{x/10i $cs*16+$eip} to dump the code at the PC position.
2452 @end enumerate
2454 Advanced debugging options:
2456 The default single stepping behavior is step with the IRQs and timer service routines off.  It is set this way because when gdb executes a single step it expects to advance beyond the current instruction.  With the IRQs and and timer service routines on, a single step might jump into the one of the interrupt or exception vectors instead of executing the current instruction. This means you may hit the same breakpoint a number of times before executing the instruction gdb wants to have executed.  Because there are rare circumstances where you want to single step into an interrupt vector the behavior can be controlled from GDB.  There are three commands you can query and set the single step behavior:
2457 @table @code
2458 @item maintenance packet qqemu.sstepbits
2460 This will display the MASK bits used to control the single stepping IE:
2461 @example
2462 (gdb) maintenance packet qqemu.sstepbits
2463 sending: "qqemu.sstepbits"
2464 received: "ENABLE=1,NOIRQ=2,NOTIMER=4"
2465 @end example
2466 @item maintenance packet qqemu.sstep
2468 This will display the current value of the mask used when single stepping IE:
2469 @example
2470 (gdb) maintenance packet qqemu.sstep
2471 sending: "qqemu.sstep"
2472 received: "0x7"
2473 @end example
2474 @item maintenance packet Qqemu.sstep=HEX_VALUE
2476 This will change the single step mask, so if wanted to enable IRQs on the single step, but not timers, you would use:
2477 @example
2478 (gdb) maintenance packet Qqemu.sstep=0x5
2479 sending: "qemu.sstep=0x5"
2480 received: "OK"
2481 @end example
2482 @end table
2484 @node pcsys_os_specific
2485 @section Target OS specific information
2487 @subsection Linux
2489 To have access to SVGA graphic modes under X11, use the @code{vesa} or
2490 the @code{cirrus} X11 driver. For optimal performances, use 16 bit
2491 color depth in the guest and the host OS.
2493 When using a 2.6 guest Linux kernel, you should add the option
2494 @code{clock=pit} on the kernel command line because the 2.6 Linux
2495 kernels make very strict real time clock checks by default that QEMU
2496 cannot simulate exactly.
2498 When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
2499 not activated because QEMU is slower with this patch. The QEMU
2500 Accelerator Module is also much slower in this case. Earlier Fedora
2501 Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporate this
2502 patch by default. Newer kernels don't have it.
2504 @subsection Windows
2506 If you have a slow host, using Windows 95 is better as it gives the
2507 best speed. Windows 2000 is also a good choice.
2509 @subsubsection SVGA graphic modes support
2511 QEMU emulates a Cirrus Logic GD5446 Video
2512 card. All Windows versions starting from Windows 95 should recognize
2513 and use this graphic card. For optimal performances, use 16 bit color
2514 depth in the guest and the host OS.
2516 If you are using Windows XP as guest OS and if you want to use high
2517 resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
2518 1280x1024x16), then you should use the VESA VBE virtual graphic card
2519 (option @option{-std-vga}).
2521 @subsubsection CPU usage reduction
2523 Windows 9x does not correctly use the CPU HLT
2524 instruction. The result is that it takes host CPU cycles even when
2525 idle. You can install the utility from
2526 @url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
2527 problem. Note that no such tool is needed for NT, 2000 or XP.
2529 @subsubsection Windows 2000 disk full problem
2531 Windows 2000 has a bug which gives a disk full problem during its
2532 installation. When installing it, use the @option{-win2k-hack} QEMU
2533 option to enable a specific workaround. After Windows 2000 is
2534 installed, you no longer need this option (this option slows down the
2535 IDE transfers).
2537 @subsubsection Windows 2000 shutdown
2539 Windows 2000 cannot automatically shutdown in QEMU although Windows 98
2540 can. It comes from the fact that Windows 2000 does not automatically
2541 use the APM driver provided by the BIOS.
2543 In order to correct that, do the following (thanks to Struan
2544 Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
2545 Add/Troubleshoot a device => Add a new device & Next => No, select the
2546 hardware from a list & Next => NT Apm/Legacy Support & Next => Next
2547 (again) a few times. Now the driver is installed and Windows 2000 now
2548 correctly instructs QEMU to shutdown at the appropriate moment.
2550 @subsubsection Share a directory between Unix and Windows
2552 See @ref{sec_invocation} about the help of the option @option{-smb}.
2554 @subsubsection Windows XP security problem
2556 Some releases of Windows XP install correctly but give a security
2557 error when booting:
2558 @example
2559 A problem is preventing Windows from accurately checking the
2560 license for this computer. Error code: 0x800703e6.
2561 @end example
2563 The workaround is to install a service pack for XP after a boot in safe
2564 mode. Then reboot, and the problem should go away. Since there is no
2565 network while in safe mode, its recommended to download the full
2566 installation of SP1 or SP2 and transfer that via an ISO or using the
2567 vvfat block device ("-hdb fat:directory_which_holds_the_SP").
2569 @subsection MS-DOS and FreeDOS
2571 @subsubsection CPU usage reduction
2573 DOS does not correctly use the CPU HLT instruction. The result is that
2574 it takes host CPU cycles even when idle. You can install the utility
2575 from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
2576 problem.
2578 @node QEMU System emulator for non PC targets
2579 @chapter QEMU System emulator for non PC targets
2581 QEMU is a generic emulator and it emulates many non PC
2582 machines. Most of the options are similar to the PC emulator. The
2583 differences are mentioned in the following sections.
2585 @menu
2586 * QEMU PowerPC System emulator::
2587 * Sparc32 System emulator::
2588 * Sparc64 System emulator::
2589 * MIPS System emulator::
2590 * ARM System emulator::
2591 * ColdFire System emulator::
2592 @end menu
2594 @node QEMU PowerPC System emulator
2595 @section QEMU PowerPC System emulator
2597 Use the executable @file{qemu-system-ppc} to simulate a complete PREP
2598 or PowerMac PowerPC system.
2600 QEMU emulates the following PowerMac peripherals:
2602 @itemize @minus
2603 @item
2604 UniNorth or Grackle PCI Bridge
2605 @item
2606 PCI VGA compatible card with VESA Bochs Extensions
2607 @item
2608 2 PMAC IDE interfaces with hard disk and CD-ROM support
2609 @item
2610 NE2000 PCI adapters
2611 @item
2612 Non Volatile RAM
2613 @item
2614 VIA-CUDA with ADB keyboard and mouse.
2615 @end itemize
2617 QEMU emulates the following PREP peripherals:
2619 @itemize @minus
2620 @item
2621 PCI Bridge
2622 @item
2623 PCI VGA compatible card with VESA Bochs Extensions
2624 @item
2625 2 IDE interfaces with hard disk and CD-ROM support
2626 @item
2627 Floppy disk
2628 @item
2629 NE2000 network adapters
2630 @item
2631 Serial port
2632 @item
2633 PREP Non Volatile RAM
2634 @item
2635 PC compatible keyboard and mouse.
2636 @end itemize
2638 QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
2639 @url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
2641 Since version 0.9.1, QEMU uses OpenBIOS @url{http://www.openbios.org/}
2642 for the g3beige and mac99 PowerMac machines. OpenBIOS is a free (GPL
2643 v2) portable firmware implementation. The goal is to implement a 100%
2644 IEEE 1275-1994 (referred to as Open Firmware) compliant firmware.
2646 @c man begin OPTIONS
2648 The following options are specific to the PowerPC emulation:
2650 @table @option
2652 @item -g WxH[xDEPTH]
2654 Set the initial VGA graphic mode. The default is 800x600x15.
2656 @item -prom-env string
2658 Set OpenBIOS variables in NVRAM, for example:
2660 @example
2661 qemu-system-ppc -prom-env 'auto-boot?=false' \
2662  -prom-env 'boot-device=hd:2,\yaboot' \
2663  -prom-env 'boot-args=conf=hd:2,\yaboot.conf'
2664 @end example
2666 These variables are not used by Open Hack'Ware.
2668 @end table
2670 @c man end
2673 More information is available at
2674 @url{http://perso.magic.fr/l_indien/qemu-ppc/}.
2676 @node Sparc32 System emulator
2677 @section Sparc32 System emulator
2679 Use the executable @file{qemu-system-sparc} to simulate the following
2680 Sun4m architecture machines:
2681 @itemize @minus
2682 @item
2683 SPARCstation 4
2684 @item
2685 SPARCstation 5
2686 @item
2687 SPARCstation 10
2688 @item
2689 SPARCstation 20
2690 @item
2691 SPARCserver 600MP
2692 @item
2693 SPARCstation LX
2694 @item
2695 SPARCstation Voyager
2696 @item
2697 SPARCclassic
2698 @item
2699 SPARCbook
2700 @end itemize
2702 The emulation is somewhat complete. SMP up to 16 CPUs is supported,
2703 but Linux limits the number of usable CPUs to 4.
2705 It's also possible to simulate a SPARCstation 2 (sun4c architecture),
2706 SPARCserver 1000, or SPARCcenter 2000 (sun4d architecture), but these
2707 emulators are not usable yet.
2709 QEMU emulates the following sun4m/sun4c/sun4d peripherals:
2711 @itemize @minus
2712 @item
2713 IOMMU or IO-UNITs
2714 @item
2715 TCX Frame buffer
2716 @item
2717 Lance (Am7990) Ethernet
2718 @item
2719 Non Volatile RAM M48T02/M48T08
2720 @item
2721 Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
2722 and power/reset logic
2723 @item
2724 ESP SCSI controller with hard disk and CD-ROM support
2725 @item
2726 Floppy drive (not on SS-600MP)
2727 @item
2728 CS4231 sound device (only on SS-5, not working yet)
2729 @end itemize
2731 The number of peripherals is fixed in the architecture.  Maximum
2732 memory size depends on the machine type, for SS-5 it is 256MB and for
2733 others 2047MB.
2735 Since version 0.8.2, QEMU uses OpenBIOS
2736 @url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
2737 firmware implementation. The goal is to implement a 100% IEEE
2738 1275-1994 (referred to as Open Firmware) compliant firmware.
2740 A sample Linux 2.6 series kernel and ram disk image are available on
2741 the QEMU web site. There are still issues with NetBSD and OpenBSD, but
2742 some kernel versions work. Please note that currently Solaris kernels
2743 don't work probably due to interface issues between OpenBIOS and
2744 Solaris.
2746 @c man begin OPTIONS
2748 The following options are specific to the Sparc32 emulation:
2750 @table @option
2752 @item -g WxHx[xDEPTH]
2754 Set the initial TCX graphic mode. The default is 1024x768x8, currently
2755 the only other possible mode is 1024x768x24.
2757 @item -prom-env string
2759 Set OpenBIOS variables in NVRAM, for example:
2761 @example
2762 qemu-system-sparc -prom-env 'auto-boot?=false' \
2763  -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
2764 @end example
2766 @item -M [SS-4|SS-5|SS-10|SS-20|SS-600MP|LX|Voyager|SPARCClassic|SPARCbook|SS-2|SS-1000|SS-2000]
2768 Set the emulated machine type. Default is SS-5.
2770 @end table
2772 @c man end
2774 @node Sparc64 System emulator
2775 @section Sparc64 System emulator
2777 Use the executable @file{qemu-system-sparc64} to simulate a Sun4u
2778 (UltraSPARC PC-like machine), Sun4v (T1 PC-like machine), or generic
2779 Niagara (T1) machine. The emulator is not usable for anything yet, but
2780 it can launch some kernels.
2782 QEMU emulates the following peripherals:
2784 @itemize @minus
2785 @item
2786 UltraSparc IIi APB PCI Bridge
2787 @item
2788 PCI VGA compatible card with VESA Bochs Extensions
2789 @item
2790 PS/2 mouse and keyboard
2791 @item
2792 Non Volatile RAM M48T59
2793 @item
2794 PC-compatible serial ports
2795 @item
2796 2 PCI IDE interfaces with hard disk and CD-ROM support
2797 @item
2798 Floppy disk
2799 @end itemize
2801 @c man begin OPTIONS
2803 The following options are specific to the Sparc64 emulation:
2805 @table @option
2807 @item -prom-env string
2809 Set OpenBIOS variables in NVRAM, for example:
2811 @example
2812 qemu-system-sparc64 -prom-env 'auto-boot?=false'
2813 @end example
2815 @item -M [sun4u|sun4v|Niagara]
2817 Set the emulated machine type. The default is sun4u.
2819 @end table
2821 @c man end
2823 @node MIPS System emulator
2824 @section MIPS System emulator
2826 Four executables cover simulation of 32 and 64-bit MIPS systems in
2827 both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
2828 @file{qemu-system-mips64} and @file{qemu-system-mips64el}.
2829 Five different machine types are emulated:
2831 @itemize @minus
2832 @item
2833 A generic ISA PC-like machine "mips"
2834 @item
2835 The MIPS Malta prototype board "malta"
2836 @item
2837 An ACER Pica "pica61". This machine needs the 64-bit emulator.
2838 @item
2839 MIPS emulator pseudo board "mipssim"
2840 @item
2841 A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
2842 @end itemize
2844 The generic emulation is supported by Debian 'Etch' and is able to
2845 install Debian into a virtual disk image. The following devices are
2846 emulated:
2848 @itemize @minus
2849 @item
2850 A range of MIPS CPUs, default is the 24Kf
2851 @item
2852 PC style serial port
2853 @item
2854 PC style IDE disk
2855 @item
2856 NE2000 network card
2857 @end itemize
2859 The Malta emulation supports the following devices:
2861 @itemize @minus
2862 @item
2863 Core board with MIPS 24Kf CPU and Galileo system controller
2864 @item
2865 PIIX4 PCI/USB/SMbus controller
2866 @item
2867 The Multi-I/O chip's serial device
2868 @item
2869 PCnet32 PCI network card
2870 @item
2871 Malta FPGA serial device
2872 @item
2873 Cirrus (default) or any other PCI VGA graphics card
2874 @end itemize
2876 The ACER Pica emulation supports:
2878 @itemize @minus
2879 @item
2880 MIPS R4000 CPU
2881 @item
2882 PC-style IRQ and DMA controllers
2883 @item
2884 PC Keyboard
2885 @item
2886 IDE controller
2887 @end itemize
2889 The mipssim pseudo board emulation provides an environment similiar
2890 to what the proprietary MIPS emulator uses for running Linux.
2891 It supports:
2893 @itemize @minus
2894 @item
2895 A range of MIPS CPUs, default is the 24Kf
2896 @item
2897 PC style serial port
2898 @item
2899 MIPSnet network emulation
2900 @end itemize
2902 The MIPS Magnum R4000 emulation supports:
2904 @itemize @minus
2905 @item
2906 MIPS R4000 CPU
2907 @item
2908 PC-style IRQ controller
2909 @item
2910 PC Keyboard
2911 @item
2912 SCSI controller
2913 @item
2914 G364 framebuffer
2915 @end itemize
2918 @node ARM System emulator
2919 @section ARM System emulator
2921 Use the executable @file{qemu-system-arm} to simulate a ARM
2922 machine. The ARM Integrator/CP board is emulated with the following
2923 devices:
2925 @itemize @minus
2926 @item
2927 ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
2928 @item
2929 Two PL011 UARTs
2930 @item
2931 SMC 91c111 Ethernet adapter
2932 @item
2933 PL110 LCD controller
2934 @item
2935 PL050 KMI with PS/2 keyboard and mouse.
2936 @item
2937 PL181 MultiMedia Card Interface with SD card.
2938 @end itemize
2940 The ARM Versatile baseboard is emulated with the following devices:
2942 @itemize @minus
2943 @item
2944 ARM926E, ARM1136 or Cortex-A8 CPU
2945 @item
2946 PL190 Vectored Interrupt Controller
2947 @item
2948 Four PL011 UARTs
2949 @item
2950 SMC 91c111 Ethernet adapter
2951 @item
2952 PL110 LCD controller
2953 @item
2954 PL050 KMI with PS/2 keyboard and mouse.
2955 @item
2956 PCI host bridge.  Note the emulated PCI bridge only provides access to
2957 PCI memory space.  It does not provide access to PCI IO space.
2958 This means some devices (eg. ne2k_pci NIC) are not usable, and others
2959 (eg. rtl8139 NIC) are only usable when the guest drivers use the memory
2960 mapped control registers.
2961 @item
2962 PCI OHCI USB controller.
2963 @item
2964 LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
2965 @item
2966 PL181 MultiMedia Card Interface with SD card.
2967 @end itemize
2969 The ARM RealView Emulation baseboard is emulated with the following devices:
2971 @itemize @minus
2972 @item
2973 ARM926E, ARM1136, ARM11MPCORE(x4) or Cortex-A8 CPU
2974 @item
2975 ARM AMBA Generic/Distributed Interrupt Controller
2976 @item
2977 Four PL011 UARTs
2978 @item
2979 SMC 91c111 Ethernet adapter
2980 @item
2981 PL110 LCD controller
2982 @item
2983 PL050 KMI with PS/2 keyboard and mouse
2984 @item
2985 PCI host bridge
2986 @item
2987 PCI OHCI USB controller
2988 @item
2989 LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
2990 @item
2991 PL181 MultiMedia Card Interface with SD card.
2992 @end itemize
2994 The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
2995 and "Terrier") emulation includes the following peripherals:
2997 @itemize @minus
2998 @item
2999 Intel PXA270 System-on-chip (ARM V5TE core)
3000 @item
3001 NAND Flash memory
3002 @item
3003 IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
3004 @item
3005 On-chip OHCI USB controller
3006 @item
3007 On-chip LCD controller
3008 @item
3009 On-chip Real Time Clock
3010 @item
3011 TI ADS7846 touchscreen controller on SSP bus
3012 @item
3013 Maxim MAX1111 analog-digital converter on I@math{^2}C bus
3014 @item
3015 GPIO-connected keyboard controller and LEDs
3016 @item
3017 Secure Digital card connected to PXA MMC/SD host
3018 @item
3019 Three on-chip UARTs
3020 @item
3021 WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
3022 @end itemize
3024 The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
3025 following elements:
3027 @itemize @minus
3028 @item
3029 Texas Instruments OMAP310 System-on-chip (ARM 925T core)
3030 @item
3031 ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
3032 @item
3033 On-chip LCD controller
3034 @item
3035 On-chip Real Time Clock
3036 @item
3037 TI TSC2102i touchscreen controller / analog-digital converter / Audio
3038 CODEC, connected through MicroWire and I@math{^2}S busses
3039 @item
3040 GPIO-connected matrix keypad
3041 @item
3042 Secure Digital card connected to OMAP MMC/SD host
3043 @item
3044 Three on-chip UARTs
3045 @end itemize
3047 Nokia N800 and N810 internet tablets (known also as RX-34 and RX-44 / 48)
3048 emulation supports the following elements:
3050 @itemize @minus
3051 @item
3052 Texas Instruments OMAP2420 System-on-chip (ARM 1136 core)
3053 @item
3054 RAM and non-volatile OneNAND Flash memories
3055 @item
3056 Display connected to EPSON remote framebuffer chip and OMAP on-chip
3057 display controller and a LS041y3 MIPI DBI-C controller
3058 @item
3059 TI TSC2301 (in N800) and TI TSC2005 (in N810) touchscreen controllers
3060 driven through SPI bus
3061 @item
3062 National Semiconductor LM8323-controlled qwerty keyboard driven
3063 through I@math{^2}C bus
3064 @item
3065 Secure Digital card connected to OMAP MMC/SD host
3066 @item
3067 Three OMAP on-chip UARTs and on-chip STI debugging console
3068 @item
3069 A Bluetooth(R) transciever and HCI connected to an UART
3070 @item
3071 Mentor Graphics "Inventra" dual-role USB controller embedded in a TI
3072 TUSB6010 chip - only USB host mode is supported
3073 @item
3074 TI TMP105 temperature sensor driven through I@math{^2}C bus
3075 @item
3076 TI TWL92230C power management companion with an RTC on I@math{^2}C bus
3077 @item
3078 Nokia RETU and TAHVO multi-purpose chips with an RTC, connected
3079 through CBUS
3080 @end itemize
3082 The Luminary Micro Stellaris LM3S811EVB emulation includes the following
3083 devices:
3085 @itemize @minus
3086 @item
3087 Cortex-M3 CPU core.
3088 @item
3089 64k Flash and 8k SRAM.
3090 @item
3091 Timers, UARTs, ADC and I@math{^2}C interface.
3092 @item
3093 OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
3094 @end itemize
3096 The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
3097 devices:
3099 @itemize @minus
3100 @item
3101 Cortex-M3 CPU core.
3102 @item
3103 256k Flash and 64k SRAM.
3104 @item
3105 Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
3106 @item
3107 OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
3108 @end itemize
3110 The Freecom MusicPal internet radio emulation includes the following
3111 elements:
3113 @itemize @minus
3114 @item
3115 Marvell MV88W8618 ARM core.
3116 @item
3117 32 MB RAM, 256 KB SRAM, 8 MB flash.
3118 @item
3119 Up to 2 16550 UARTs
3120 @item
3121 MV88W8xx8 Ethernet controller
3122 @item
3123 MV88W8618 audio controller, WM8750 CODEC and mixer
3124 @item
3125 128×64 display with brightness control
3126 @item
3127 2 buttons, 2 navigation wheels with button function
3128 @end itemize
3130 The Siemens SX1 models v1 and v2 (default) basic emulation.
3131 The emulaton includes the following elements:
3133 @itemize @minus
3134 @item
3135 Texas Instruments OMAP310 System-on-chip (ARM 925T core)
3136 @item
3137 ROM and RAM memories (ROM firmware image can be loaded with -pflash)
3139 1 Flash of 16MB and 1 Flash of 8MB
3141 1 Flash of 32MB
3142 @item
3143 On-chip LCD controller
3144 @item
3145 On-chip Real Time Clock
3146 @item
3147 Secure Digital card connected to OMAP MMC/SD host
3148 @item
3149 Three on-chip UARTs
3150 @end itemize
3152 A Linux 2.6 test image is available on the QEMU web site. More
3153 information is available in the QEMU mailing-list archive.
3155 @c man begin OPTIONS
3157 The following options are specific to the ARM emulation:
3159 @table @option
3161 @item -semihosting
3162 Enable semihosting syscall emulation.
3164 On ARM this implements the "Angel" interface.
3166 Note that this allows guest direct access to the host filesystem,
3167 so should only be used with trusted guest OS.
3169 @end table
3171 @node ColdFire System emulator
3172 @section ColdFire System emulator
3174 Use the executable @file{qemu-system-m68k} to simulate a ColdFire machine.
3175 The emulator is able to boot a uClinux kernel.
3177 The M5208EVB emulation includes the following devices:
3179 @itemize @minus
3180 @item
3181 MCF5208 ColdFire V2 Microprocessor (ISA A+ with EMAC).
3182 @item
3183 Three Two on-chip UARTs.
3184 @item
3185 Fast Ethernet Controller (FEC)
3186 @end itemize
3188 The AN5206 emulation includes the following devices:
3190 @itemize @minus
3191 @item
3192 MCF5206 ColdFire V2 Microprocessor.
3193 @item
3194 Two on-chip UARTs.
3195 @end itemize
3197 @c man begin OPTIONS
3199 The following options are specific to the ARM emulation:
3201 @table @option
3203 @item -semihosting
3204 Enable semihosting syscall emulation.
3206 On M68K this implements the "ColdFire GDB" interface used by libgloss.
3208 Note that this allows guest direct access to the host filesystem,
3209 so should only be used with trusted guest OS.
3211 @end table
3213 @node QEMU User space emulator
3214 @chapter QEMU User space emulator
3216 @menu
3217 * Supported Operating Systems ::
3218 * Linux User space emulator::
3219 * Mac OS X/Darwin User space emulator ::
3220 * BSD User space emulator ::
3221 @end menu
3223 @node Supported Operating Systems
3224 @section Supported Operating Systems
3226 The following OS are supported in user space emulation:
3228 @itemize @minus
3229 @item
3230 Linux (referred as qemu-linux-user)
3231 @item
3232 Mac OS X/Darwin (referred as qemu-darwin-user)
3233 @item
3234 BSD (referred as qemu-bsd-user)
3235 @end itemize
3237 @node Linux User space emulator
3238 @section Linux User space emulator
3240 @menu
3241 * Quick Start::
3242 * Wine launch::
3243 * Command line options::
3244 * Other binaries::
3245 @end menu
3247 @node Quick Start
3248 @subsection Quick Start
3250 In order to launch a Linux process, QEMU needs the process executable
3251 itself and all the target (x86) dynamic libraries used by it.
3253 @itemize
3255 @item On x86, you can just try to launch any process by using the native
3256 libraries:
3258 @example
3259 qemu-i386 -L / /bin/ls
3260 @end example
3262 @code{-L /} tells that the x86 dynamic linker must be searched with a
3263 @file{/} prefix.
3265 @item Since QEMU is also a linux process, you can launch qemu with
3266 qemu (NOTE: you can only do that if you compiled QEMU from the sources):
3268 @example
3269 qemu-i386 -L / qemu-i386 -L / /bin/ls
3270 @end example
3272 @item On non x86 CPUs, you need first to download at least an x86 glibc
3273 (@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
3274 @code{LD_LIBRARY_PATH} is not set:
3276 @example
3277 unset LD_LIBRARY_PATH
3278 @end example
3280 Then you can launch the precompiled @file{ls} x86 executable:
3282 @example
3283 qemu-i386 tests/i386/ls
3284 @end example
3285 You can look at @file{qemu-binfmt-conf.sh} so that
3286 QEMU is automatically launched by the Linux kernel when you try to
3287 launch x86 executables. It requires the @code{binfmt_misc} module in the
3288 Linux kernel.
3290 @item The x86 version of QEMU is also included. You can try weird things such as:
3291 @example
3292 qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
3293           /usr/local/qemu-i386/bin/ls-i386
3294 @end example
3296 @end itemize
3298 @node Wine launch
3299 @subsection Wine launch
3301 @itemize
3303 @item Ensure that you have a working QEMU with the x86 glibc
3304 distribution (see previous section). In order to verify it, you must be
3305 able to do:
3307 @example
3308 qemu-i386 /usr/local/qemu-i386/bin/ls-i386
3309 @end example
3311 @item Download the binary x86 Wine install
3312 (@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
3314 @item Configure Wine on your account. Look at the provided script
3315 @file{/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous
3316 @code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
3318 @item Then you can try the example @file{putty.exe}:
3320 @example
3321 qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
3322           /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
3323 @end example
3325 @end itemize
3327 @node Command line options
3328 @subsection Command line options
3330 @example
3331 usage: qemu-i386 [-h] [-d] [-L path] [-s size] [-cpu model] [-g port] program [arguments...]
3332 @end example
3334 @table @option
3335 @item -h
3336 Print the help
3337 @item -L path
3338 Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
3339 @item -s size
3340 Set the x86 stack size in bytes (default=524288)
3341 @item -cpu model
3342 Select CPU model (-cpu ? for list and additional feature selection)
3343 @end table
3345 Debug options:
3347 @table @option
3348 @item -d
3349 Activate log (logfile=/tmp/qemu.log)
3350 @item -p pagesize
3351 Act as if the host page size was 'pagesize' bytes
3352 @item -g port
3353 Wait gdb connection to port
3354 @end table
3356 Environment variables:
3358 @table @env
3359 @item QEMU_STRACE
3360 Print system calls and arguments similar to the 'strace' program
3361 (NOTE: the actual 'strace' program will not work because the user
3362 space emulator hasn't implemented ptrace).  At the moment this is
3363 incomplete.  All system calls that don't have a specific argument
3364 format are printed with information for six arguments.  Many
3365 flag-style arguments don't have decoders and will show up as numbers.
3366 @end table
3368 @node Other binaries
3369 @subsection Other binaries
3371 @command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF
3372 binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
3373 configurations), and arm-uclinux bFLT format binaries.
3375 @command{qemu-m68k} is capable of running semihosted binaries using the BDM
3376 (m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
3377 coldfire uClinux bFLT format binaries.
3379 The binary format is detected automatically.
3381 @command{qemu-sparc} can execute Sparc32 binaries (Sparc32 CPU, 32 bit ABI).
3383 @command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries
3384 (Sparc64 CPU, 32 bit ABI).
3386 @command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
3387 SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
3389 @node Mac OS X/Darwin User space emulator
3390 @section Mac OS X/Darwin User space emulator
3392 @menu
3393 * Mac OS X/Darwin Status::
3394 * Mac OS X/Darwin Quick Start::
3395 * Mac OS X/Darwin Command line options::
3396 @end menu
3398 @node Mac OS X/Darwin Status
3399 @subsection Mac OS X/Darwin Status
3401 @itemize @minus
3402 @item
3403 target x86 on x86: Most apps (Cocoa and Carbon too) works. [1]
3404 @item
3405 target PowerPC on x86: Not working as the ppc commpage can't be mapped (yet!)
3406 @item
3407 target PowerPC on PowerPC: Most apps (Cocoa and Carbon too) works. [1]
3408 @item
3409 target x86 on PowerPC: most utilities work. Cocoa and Carbon apps are not yet supported.
3410 @end itemize
3412 [1] If you're host commpage can be executed by qemu.
3414 @node Mac OS X/Darwin Quick Start
3415 @subsection Quick Start
3417 In order to launch a Mac OS X/Darwin process, QEMU needs the process executable
3418 itself and all the target dynamic libraries used by it. If you don't have the FAT
3419 libraries (you're running Mac OS X/ppc) you'll need to obtain it from a Mac OS X
3420 CD or compile them by hand.
3422 @itemize
3424 @item On x86, you can just try to launch any process by using the native
3425 libraries:
3427 @example
3428 qemu-i386 /bin/ls
3429 @end example
3431 or to run the ppc version of the executable:
3433 @example
3434 qemu-ppc /bin/ls
3435 @end example
3437 @item On ppc, you'll have to tell qemu where your x86 libraries (and dynamic linker)
3438 are installed:
3440 @example
3441 qemu-i386 -L /opt/x86_root/ /bin/ls
3442 @end example
3444 @code{-L /opt/x86_root/} tells that the dynamic linker (dyld) path is in
3445 @file{/opt/x86_root/usr/bin/dyld}.
3447 @end itemize
3449 @node Mac OS X/Darwin Command line options
3450 @subsection Command line options
3452 @example
3453 usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
3454 @end example
3456 @table @option
3457 @item -h
3458 Print the help
3459 @item -L path
3460 Set the library root path (default=/)
3461 @item -s size
3462 Set the stack size in bytes (default=524288)
3463 @end table
3465 Debug options:
3467 @table @option
3468 @item -d
3469 Activate log (logfile=/tmp/qemu.log)
3470 @item -p pagesize
3471 Act as if the host page size was 'pagesize' bytes
3472 @end table
3474 @node BSD User space emulator
3475 @section BSD User space emulator
3477 @menu
3478 * BSD Status::
3479 * BSD Quick Start::
3480 * BSD Command line options::
3481 @end menu
3483 @node BSD Status
3484 @subsection BSD Status
3486 @itemize @minus
3487 @item
3488 target Sparc64 on Sparc64: Some trivial programs work.
3489 @end itemize
3491 @node BSD Quick Start
3492 @subsection Quick Start
3494 In order to launch a BSD process, QEMU needs the process executable
3495 itself and all the target dynamic libraries used by it.
3497 @itemize
3499 @item On Sparc64, you can just try to launch any process by using the native
3500 libraries:
3502 @example
3503 qemu-sparc64 /bin/ls
3504 @end example
3506 @end itemize
3508 @node BSD Command line options
3509 @subsection Command line options
3511 @example
3512 usage: qemu-sparc64 [-h] [-d] [-L path] [-s size] [-bsd type] program [arguments...]
3513 @end example
3515 @table @option
3516 @item -h
3517 Print the help
3518 @item -L path
3519 Set the library root path (default=/)
3520 @item -s size
3521 Set the stack size in bytes (default=524288)
3522 @item -bsd type
3523 Set the type of the emulated BSD Operating system. Valid values are
3524 FreeBSD, NetBSD and OpenBSD (default).
3525 @end table
3527 Debug options:
3529 @table @option
3530 @item -d
3531 Activate log (logfile=/tmp/qemu.log)
3532 @item -p pagesize
3533 Act as if the host page size was 'pagesize' bytes
3534 @end table
3536 @node compilation
3537 @chapter Compilation from the sources
3539 @menu
3540 * Linux/Unix::
3541 * Windows::
3542 * Cross compilation for Windows with Linux::
3543 * Mac OS X::
3544 @end menu
3546 @node Linux/Unix
3547 @section Linux/Unix
3549 @subsection Compilation
3551 First you must decompress the sources:
3552 @example
3553 cd /tmp
3554 tar zxvf qemu-x.y.z.tar.gz
3555 cd qemu-x.y.z
3556 @end example
3558 Then you configure QEMU and build it (usually no options are needed):
3559 @example
3560 ./configure
3561 make
3562 @end example
3564 Then type as root user:
3565 @example
3566 make install
3567 @end example
3568 to install QEMU in @file{/usr/local}.
3570 @node Windows
3571 @section Windows
3573 @itemize
3574 @item Install the current versions of MSYS and MinGW from
3575 @url{http://www.mingw.org/}. You can find detailed installation
3576 instructions in the download section and the FAQ.
3578 @item Download
3579 the MinGW development library of SDL 1.2.x
3580 (@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
3581 @url{http://www.libsdl.org}. Unpack it in a temporary place, and
3582 unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
3583 directory. Edit the @file{sdl-config} script so that it gives the
3584 correct SDL directory when invoked.
3586 @item Extract the current version of QEMU.
3588 @item Start the MSYS shell (file @file{msys.bat}).
3590 @item Change to the QEMU directory. Launch @file{./configure} and
3591 @file{make}.  If you have problems using SDL, verify that
3592 @file{sdl-config} can be launched from the MSYS command line.
3594 @item You can install QEMU in @file{Program Files/Qemu} by typing
3595 @file{make install}. Don't forget to copy @file{SDL.dll} in
3596 @file{Program Files/Qemu}.
3598 @end itemize
3600 @node Cross compilation for Windows with Linux
3601 @section Cross compilation for Windows with Linux
3603 @itemize
3604 @item
3605 Install the MinGW cross compilation tools available at
3606 @url{http://www.mingw.org/}.
3608 @item
3609 Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
3610 unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
3611 variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
3612 the QEMU configuration script.
3614 @item
3615 Configure QEMU for Windows cross compilation:
3616 @example
3617 ./configure --enable-mingw32
3618 @end example
3619 If necessary, you can change the cross-prefix according to the prefix
3620 chosen for the MinGW tools with --cross-prefix. You can also use
3621 --prefix to set the Win32 install path.
3623 @item You can install QEMU in the installation directory by typing
3624 @file{make install}. Don't forget to copy @file{SDL.dll} in the
3625 installation directory.
3627 @end itemize
3629 Note: Currently, Wine does not seem able to launch
3630 QEMU for Win32.
3632 @node Mac OS X
3633 @section Mac OS X
3635 The Mac OS X patches are not fully merged in QEMU, so you should look
3636 at the QEMU mailing list archive to have all the necessary
3637 information.
3639 @node Index
3640 @chapter Index
3641 @printindex cp
3643 @bye