Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 3e3f6754

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