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