Statistics
| Branch: | Revision:

root / qemu-doc.texi @ e784ba70

History | View | Annotate | Download (65.3 kB)

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