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