Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 50d3eeae

History | View | Annotate | Download (62.1 kB)

1
\input texinfo @c -*- texinfo -*-
2
@c %**start of header
3
@setfilename qemu-doc.info
4
@settitle QEMU Emulator User Documentation
5
@exampleindent 0
6
@paragraphindent 0
7
@c %**end of header
8

    
9
@iftex
10
@titlepage
11
@sp 7
12
@center @titlefont{QEMU Emulator}
13
@sp 1
14
@center @titlefont{User Documentation}
15
@sp 3
16
@end titlepage
17
@end iftex
18

    
19
@ifnottex
20
@node Top
21
@top
22

    
23
@menu
24
* Introduction::
25
* Installation::
26
* QEMU PC System emulator::
27
* QEMU System emulator for non PC targets::
28
* QEMU User space emulator::
29
* compilation:: Compilation from the sources
30
* Index::
31
@end menu
32
@end ifnottex
33

    
34
@contents
35

    
36
@node Introduction
37
@chapter Introduction
38

    
39
@menu
40
* intro_features:: Features
41
@end menu
42

    
43
@node intro_features
44
@section Features
45

    
46
QEMU is a FAST! processor emulator using dynamic translation to
47
achieve good emulation speed.
48

    
49
QEMU has two operating modes:
50

    
51
@itemize @minus
52

    
53
@item 
54
Full system emulation. In this mode, QEMU emulates a full system (for
55
example a PC), including one or several processors and various
56
peripherals. It can be used to launch different Operating Systems
57
without rebooting the PC or to debug system code.
58

    
59
@item 
60
User mode emulation. In this mode, QEMU can launch
61
processes compiled for one CPU on another CPU. It can be used to
62
launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
63
to ease cross-compilation and cross-debugging.
64

    
65
@end itemize
66

    
67
QEMU can run without an host kernel driver and yet gives acceptable
68
performance. 
69

    
70
For system emulation, the following hardware targets are supported:
71
@itemize
72
@item PC (x86 or x86_64 processor)
73
@item ISA PC (old style PC without PCI bus)
74
@item PREP (PowerPC processor)
75
@item G3 BW PowerMac (PowerPC processor)
76
@item Mac99 PowerMac (PowerPC processor, in progress)
77
@item Sun4m (32-bit Sparc processor)
78
@item Sun4u (64-bit Sparc processor, in progress)
79
@item Malta board (32-bit MIPS processor)
80
@item ARM Integrator/CP (ARM926E or 1026E processor)
81
@item ARM Versatile baseboard (ARM926E)
82
@item ARM RealView Emulation baseboard (ARM926EJ-S)
83
@end itemize
84

    
85
For user emulation, x86, PowerPC, ARM, MIPS, Sparc32/64 and ColdFire(m68k) CPUs are supported.
86

    
87
@node Installation
88
@chapter Installation
89

    
90
If you want to compile QEMU yourself, see @ref{compilation}.
91

    
92
@menu
93
* install_linux::   Linux
94
* install_windows:: Windows
95
* install_mac::     Macintosh
96
@end menu
97

    
98
@node install_linux
99
@section Linux
100

    
101
If a precompiled package is available for your distribution - you just
102
have to install it. Otherwise, see @ref{compilation}.
103

    
104
@node install_windows
105
@section Windows
106

    
107
Download the experimental binary installer at
108
@url{http://www.free.oszoo.org/@/download.html}.
109

    
110
@node install_mac
111
@section Mac OS X
112

    
113
Download the experimental binary installer at
114
@url{http://www.free.oszoo.org/@/download.html}.
115

    
116
@node QEMU PC System emulator
117
@chapter QEMU PC System emulator
118

    
119
@menu
120
* pcsys_introduction:: Introduction
121
* pcsys_quickstart::   Quick Start
122
* sec_invocation::     Invocation
123
* pcsys_keys::         Keys
124
* pcsys_monitor::      QEMU Monitor
125
* disk_images::        Disk Images
126
* pcsys_network::      Network emulation
127
* direct_linux_boot::  Direct Linux Boot
128
* pcsys_usb::          USB emulation
129
* gdb_usage::          GDB usage
130
* pcsys_os_specific::  Target OS specific information
131
@end menu
132

    
133
@node pcsys_introduction
134
@section Introduction
135

    
136
@c man begin DESCRIPTION
137

    
138
The QEMU PC System emulator simulates the
139
following peripherals:
140

    
141
@itemize @minus
142
@item 
143
i440FX host PCI bridge and PIIX3 PCI to ISA bridge
144
@item
145
Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
146
extensions (hardware level, including all non standard modes).
147
@item
148
PS/2 mouse and keyboard
149
@item 
150
2 PCI IDE interfaces with hard disk and CD-ROM support
151
@item
152
Floppy disk
153
@item 
154
NE2000 PCI network adapters
155
@item
156
Serial ports
157
@item
158
Creative SoundBlaster 16 sound card
159
@item
160
ENSONIQ AudioPCI ES1370 sound card
161
@item
162
Adlib(OPL2) - Yamaha YM3812 compatible chip
163
@item
164
PCI UHCI USB controller and a virtual USB hub.
165
@end itemize
166

    
167
SMP is supported with up to 255 CPUs.
168

    
169
Note that adlib is only available when QEMU was configured with
170
-enable-adlib
171

    
172
QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
173
VGA BIOS.
174

    
175
QEMU uses YM3812 emulation by Tatsuyuki Satoh.
176

    
177
@c man end
178

    
179
@node pcsys_quickstart
180
@section Quick Start
181

    
182
Download and uncompress the linux image (@file{linux.img}) and type:
183

    
184
@example
185
qemu linux.img
186
@end example
187

    
188
Linux should boot and give you a prompt.
189

    
190
@node sec_invocation
191
@section Invocation
192

    
193
@example
194
@c man begin SYNOPSIS
195
usage: qemu [options] [disk_image]
196
@c man end
197
@end example
198

    
199
@c man begin OPTIONS
200
@var{disk_image} is a raw hard disk image for IDE hard disk 0.
201

    
202
General options:
203
@table @option
204
@item -M machine
205
Select the emulated machine (@code{-M ?} for list)
206

    
207
@item -fda file
208
@item -fdb file
209
Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can
210
use the host floppy by using @file{/dev/fd0} as filename (@pxref{host_drives}).
211

    
212
@item -hda file
213
@item -hdb file
214
@item -hdc file
215
@item -hdd file
216
Use @var{file} as hard disk 0, 1, 2 or 3 image (@pxref{disk_images}).
217

    
218
@item -cdrom file
219
Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and
220
@option{-cdrom} at the same time). You can use the host CD-ROM by
221
using @file{/dev/cdrom} as filename (@pxref{host_drives}).
222

    
223
@item -boot [a|c|d|n]
224
Boot on floppy (a), hard disk (c), CD-ROM (d), or Etherboot (n). Hard disk boot
225
is the default.
226

    
227
@item -snapshot
228
Write to temporary files instead of disk image files. In this case,
229
the raw disk image you use is not written back. You can however force
230
the write back by pressing @key{C-a s} (@pxref{disk_images}).
231

    
232
@item -no-fd-bootchk
233
Disable boot signature checking for floppy disks in Bochs BIOS. It may
234
be needed to boot from old floppy disks.
235

    
236
@item -m megs
237
Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
238

    
239
@item -smp n
240
Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
241
CPUs are supported.
242

    
243
@item -nographic
244

    
245
Normally, QEMU uses SDL to display the VGA output. With this option,
246
you can totally disable graphical output so that QEMU is a simple
247
command line application. The emulated serial port is redirected on
248
the console. Therefore, you can still use QEMU to debug a Linux kernel
249
with a serial console.
250

    
251
@item -no-frame
252

    
253
Do not use decorations for SDL windows and start them using the whole
254
available screen space. This makes the using QEMU in a dedicated desktop
255
workspace more convenient.
256

    
257
@item -vnc display
258

    
259
Normally, QEMU uses SDL to display the VGA output.  With this option,
260
you can have QEMU listen on VNC display @var{display} and redirect the VGA
261
display over the VNC session.  It is very useful to enable the usb
262
tablet device when using this option (option @option{-usbdevice
263
tablet}). When using the VNC display, you must use the @option{-k}
264
option to set the keyboard layout if you are not using en-us.
265

    
266
@var{display} may be in the form @var{interface:d}, in which case connections
267
will only be allowed from @var{interface} on display @var{d}. Optionally,
268
@var{interface} can be omitted.  @var{display} can also be in the form
269
@var{unix:path} where @var{path} is the location of a unix socket to listen for
270
connections on.
271

    
272

    
273
@item -k language
274

    
275
Use keyboard layout @var{language} (for example @code{fr} for
276
French). This option is only needed where it is not easy to get raw PC
277
keycodes (e.g. on Macs, with some X11 servers or with a VNC
278
display). You don't normally need to use it on PC/Linux or PC/Windows
279
hosts.
280

    
281
The available layouts are:
282
@example
283
ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
284
da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
285
de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
286
@end example
287

    
288
The default is @code{en-us}.
289

    
290
@item -audio-help
291

    
292
Will show the audio subsystem help: list of drivers, tunable
293
parameters.
294

    
295
@item -soundhw card1,card2,... or -soundhw all
296

    
297
Enable audio and selected sound hardware. Use ? to print all
298
available sound hardware.
299

    
300
@example
301
qemu -soundhw sb16,adlib hda
302
qemu -soundhw es1370 hda
303
qemu -soundhw all hda
304
qemu -soundhw ?
305
@end example
306

    
307
@item -localtime
308
Set the real time clock to local time (the default is to UTC
309
time). This option is needed to have correct date in MS-DOS or
310
Windows.
311

    
312
@item -full-screen
313
Start in full screen.
314

    
315
@item -pidfile file
316
Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
317
from a script.
318

    
319
@item -daemonize
320
Daemonize the QEMU process after initialization.  QEMU will not detach from
321
standard IO until it is ready to receive connections on any of its devices.
322
This option is a useful way for external programs to launch QEMU without having
323
to cope with initialization race conditions.
324

    
325
@item -win2k-hack
326
Use it when installing Windows 2000 to avoid a disk full bug. After
327
Windows 2000 is installed, you no longer need this option (this option
328
slows down the IDE transfers).
329

    
330
@item -option-rom file
331
Load the contents of file as an option ROM.  This option is useful to load
332
things like EtherBoot.
333

    
334
@item -name string
335
Sets the name of the guest.  This name will be display in the SDL window
336
caption.  The name will also be used for the VNC server.
337

    
338
@end table
339

    
340
USB options:
341
@table @option
342

    
343
@item -usb
344
Enable the USB driver (will be the default soon)
345

    
346
@item -usbdevice devname
347
Add the USB device @var{devname}. @xref{usb_devices}.
348
@end table
349

    
350
Network options:
351

    
352
@table @option
353

    
354
@item -net nic[,vlan=n][,macaddr=addr][,model=type]
355
Create a new Network Interface Card and connect it to VLAN @var{n} (@var{n}
356
= 0 is the default). The NIC is currently an NE2000 on the PC
357
target. Optionally, the MAC address can be changed. If no
358
@option{-net} option is specified, a single NIC is created.
359
Qemu can emulate several different models of network card.  Valid values for
360
@var{type} are @code{ne2k_pci}, @code{ne2k_isa}, @code{rtl8139},
361
@code{smc91c111} and @code{lance}.  Not all devices are supported on all
362
targets.
363

    
364
@item -net user[,vlan=n][,hostname=name]
365
Use the user mode network stack which requires no administrator
366
priviledge to run.  @option{hostname=name} can be used to specify the client
367
hostname reported by the builtin DHCP server.
368

    
369
@item -net tap[,vlan=n][,fd=h][,ifname=name][,script=file]
370
Connect the host TAP network interface @var{name} to VLAN @var{n} and
371
use the network script @var{file} to configure it. The default
372
network script is @file{/etc/qemu-ifup}. Use @option{script=no} to
373
disable script execution. If @var{name} is not
374
provided, the OS automatically provides one.  @option{fd=h} can be
375
used to specify the handle of an already opened host TAP interface. Example:
376

    
377
@example
378
qemu linux.img -net nic -net tap
379
@end example
380

    
381
More complicated example (two NICs, each one connected to a TAP device)
382
@example
383
qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
384
               -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
385
@end example
386

    
387

    
388
@item -net socket[,vlan=n][,fd=h][,listen=[host]:port][,connect=host:port]
389

    
390
Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual
391
machine using a TCP socket connection. If @option{listen} is
392
specified, QEMU waits for incoming connections on @var{port}
393
(@var{host} is optional). @option{connect} is used to connect to
394
another QEMU instance using the @option{listen} option. @option{fd=h}
395
specifies an already opened TCP socket.
396

    
397
Example:
398
@example
399
# launch a first QEMU instance
400
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
401
               -net socket,listen=:1234
402
# connect the VLAN 0 of this instance to the VLAN 0
403
# of the first instance
404
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
405
               -net socket,connect=127.0.0.1:1234
406
@end example
407

    
408
@item -net socket[,vlan=n][,fd=h][,mcast=maddr:port]
409

    
410
Create a VLAN @var{n} shared with another QEMU virtual
411
machines using a UDP multicast socket, effectively making a bus for 
412
every QEMU with same multicast address @var{maddr} and @var{port}.
413
NOTES:
414
@enumerate
415
@item 
416
Several QEMU can be running on different hosts and share same bus (assuming 
417
correct multicast setup for these hosts).
418
@item
419
mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see
420
@url{http://user-mode-linux.sf.net}.
421
@item Use @option{fd=h} to specify an already opened UDP multicast socket.
422
@end enumerate
423

    
424
Example:
425
@example
426
# launch one QEMU instance
427
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
428
               -net socket,mcast=230.0.0.1:1234
429
# launch another QEMU instance on same "bus"
430
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
431
               -net socket,mcast=230.0.0.1:1234
432
# launch yet another QEMU instance on same "bus"
433
qemu linux.img -net nic,macaddr=52:54:00:12:34:58 \
434
               -net socket,mcast=230.0.0.1:1234
435
@end example
436

    
437
Example (User Mode Linux compat.):
438
@example
439
# launch QEMU instance (note mcast address selected
440
# is UML's default)
441
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
442
               -net socket,mcast=239.192.168.1:1102
443
# launch UML
444
/path/to/linux ubd0=/path/to/root_fs eth0=mcast
445
@end example
446

    
447
@item -net none
448
Indicate that no network devices should be configured. It is used to
449
override the default configuration (@option{-net nic -net user}) which
450
is activated if no @option{-net} options are provided.
451

    
452
@item -tftp dir
453
When using the user mode network stack, activate a built-in TFTP
454
server. The files in @var{dir} will be exposed as the root of a TFTP server.
455
The TFTP client on the guest must be configured in binary mode (use the command
456
@code{bin} of the Unix TFTP client). The host IP address on the guest is as
457
usual 10.0.2.2.
458

    
459
@item -bootp file
460
When using the user mode network stack, broadcast @var{file} as the BOOTP
461
filename.  In conjunction with @option{-tftp}, this can be used to network boot
462
a guest from a local directory.
463

    
464
Example (using pxelinux):
465
@example
466
qemu -hda linux.img -boot n -tftp /path/to/tftp/files -bootp /pxelinux.0
467
@end example
468

    
469
@item -smb dir
470
When using the user mode network stack, activate a built-in SMB
471
server so that Windows OSes can access to the host files in @file{dir}
472
transparently.
473

    
474
In the guest Windows OS, the line:
475
@example
476
10.0.2.4 smbserver
477
@end example
478
must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
479
or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
480

    
481
Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
482

    
483
Note that a SAMBA server must be installed on the host OS in
484
@file{/usr/sbin/smbd}. QEMU was tested successfully with smbd version
485
2.2.7a from the Red Hat 9 and version 3.0.10-1.fc3 from Fedora Core 3.
486

    
487
@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
488

    
489
When using the user mode network stack, redirect incoming TCP or UDP
490
connections to the host port @var{host-port} to the guest
491
@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
492
is not specified, its value is 10.0.2.15 (default address given by the
493
built-in DHCP server).
494

    
495
For example, to redirect host X11 connection from screen 1 to guest
496
screen 0, use the following:
497

    
498
@example
499
# on the host
500
qemu -redir tcp:6001::6000 [...]
501
# this host xterm should open in the guest X11 server
502
xterm -display :1
503
@end example
504

    
505
To redirect telnet connections from host port 5555 to telnet port on
506
the guest, use the following:
507

    
508
@example
509
# on the host
510
qemu -redir tcp:5555::23 [...]
511
telnet localhost 5555
512
@end example
513

    
514
Then when you use on the host @code{telnet localhost 5555}, you
515
connect to the guest telnet server.
516

    
517
@end table
518

    
519
Linux boot specific: When using these options, you can use a given
520
Linux kernel without installing it in the disk image. It can be useful
521
for easier testing of various kernels.
522

    
523
@table @option
524

    
525
@item -kernel bzImage 
526
Use @var{bzImage} as kernel image.
527

    
528
@item -append cmdline 
529
Use @var{cmdline} as kernel command line
530

    
531
@item -initrd file
532
Use @var{file} as initial ram disk.
533

    
534
@end table
535

    
536
Debug/Expert options:
537
@table @option
538

    
539
@item -serial dev
540
Redirect the virtual serial port to host character device
541
@var{dev}. The default device is @code{vc} in graphical mode and
542
@code{stdio} in non graphical mode.
543

    
544
This option can be used several times to simulate up to 4 serials
545
ports.
546

    
547
Use @code{-serial none} to disable all serial ports.
548

    
549
Available character devices are:
550
@table @code
551
@item vc
552
Virtual console
553
@item pty
554
[Linux only] Pseudo TTY (a new PTY is automatically allocated)
555
@item none
556
No device is allocated.
557
@item null
558
void device
559
@item /dev/XXX
560
[Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
561
parameters are set according to the emulated ones.
562
@item /dev/parportN
563
[Linux only, parallel port only] Use host parallel port
564
@var{N}. Currently SPP and EPP parallel port features can be used.
565
@item file:filename
566
Write output to filename. No character can be read.
567
@item stdio
568
[Unix only] standard input/output
569
@item pipe:filename
570
name pipe @var{filename}
571
@item COMn
572
[Windows only] Use host serial port @var{n}
573
@item udp:[remote_host]:remote_port[@@[src_ip]:src_port]
574
This implements UDP Net Console.  When @var{remote_host} or @var{src_ip} are not specified they default to @code{0.0.0.0}.  When not using a specifed @var{src_port} a random port is automatically chosen.
575

    
576
If you just want a simple readonly console you can use @code{netcat} or
577
@code{nc}, by starting qemu with: @code{-serial udp::4555} and nc as:
578
@code{nc -u -l -p 4555}. Any time qemu writes something to that port it
579
will appear in the netconsole session.
580

    
581
If you plan to send characters back via netconsole or you want to stop
582
and start qemu a lot of times, you should have qemu use the same
583
source port each time by using something like @code{-serial
584
udp::4555@@:4556} to qemu. Another approach is to use a patched
585
version of netcat which can listen to a TCP port and send and receive
586
characters via udp.  If you have a patched version of netcat which
587
activates telnet remote echo and single char transfer, then you can
588
use the following options to step up a netcat redirector to allow
589
telnet on port 5555 to access the qemu port.
590
@table @code
591
@item Qemu Options:
592
-serial udp::4555@@:4556
593
@item netcat options:
594
-u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
595
@item telnet options:
596
localhost 5555
597
@end table
598

    
599

    
600
@item tcp:[host]:port[,server][,nowait][,nodelay]
601
The TCP Net Console has two modes of operation.  It can send the serial
602
I/O to a location or wait for a connection from a location.  By default
603
the TCP Net Console is sent to @var{host} at the @var{port}.  If you use
604
the @var{server} option QEMU will wait for a client socket application
605
to connect to the port before continuing, unless the @code{nowait}
606
option was specified.  The @code{nodelay} option disables the Nagle buffering
607
algoritm.  If @var{host} is omitted, 0.0.0.0 is assumed. Only
608
one TCP connection at a time is accepted. You can use @code{telnet} to
609
connect to the corresponding character device.
610
@table @code
611
@item Example to send tcp console to 192.168.0.2 port 4444
612
-serial tcp:192.168.0.2:4444
613
@item Example to listen and wait on port 4444 for connection
614
-serial tcp::4444,server
615
@item Example to not wait and listen on ip 192.168.0.100 port 4444
616
-serial tcp:192.168.0.100:4444,server,nowait
617
@end table
618

    
619
@item telnet:host:port[,server][,nowait][,nodelay]
620
The telnet protocol is used instead of raw tcp sockets.  The options
621
work the same as if you had specified @code{-serial tcp}.  The
622
difference is that the port acts like a telnet server or client using
623
telnet option negotiation.  This will also allow you to send the
624
MAGIC_SYSRQ sequence if you use a telnet that supports sending the break
625
sequence.  Typically in unix telnet you do it with Control-] and then
626
type "send break" followed by pressing the enter key.
627

    
628
@item unix:path[,server][,nowait]
629
A unix domain socket is used instead of a tcp socket.  The option works the
630
same as if you had specified @code{-serial tcp} except the unix domain socket
631
@var{path} is used for connections.
632

    
633
@item mon:dev_string
634
This is a special option to allow the monitor to be multiplexed onto
635
another serial port.  The monitor is accessed with key sequence of
636
@key{Control-a} and then pressing @key{c}. See monitor access
637
@ref{pcsys_keys} in the -nographic section for more keys.
638
@var{dev_string} should be any one of the serial devices specified
639
above.  An example to multiplex the monitor onto a telnet server
640
listening on port 4444 would be:
641
@table @code
642
@item -serial mon:telnet::4444,server,nowait
643
@end table
644

    
645
@end table
646

    
647
@item -parallel dev
648
Redirect the virtual parallel port to host device @var{dev} (same
649
devices as the serial port). On Linux hosts, @file{/dev/parportN} can
650
be used to use hardware devices connected on the corresponding host
651
parallel port.
652

    
653
This option can be used several times to simulate up to 3 parallel
654
ports.
655

    
656
Use @code{-parallel none} to disable all parallel ports.
657

    
658
@item -monitor dev
659
Redirect the monitor to host device @var{dev} (same devices as the
660
serial port).
661
The default device is @code{vc} in graphical mode and @code{stdio} in
662
non graphical mode.
663

    
664
@item -echr numeric_ascii_value
665
Change the escape character used for switching to the monitor when using
666
monitor and serial sharing.  The default is @code{0x01} when using the
667
@code{-nographic} option.  @code{0x01} is equal to pressing
668
@code{Control-a}.  You can select a different character from the ascii
669
control keys where 1 through 26 map to Control-a through Control-z.  For
670
instance you could use the either of the following to change the escape
671
character to Control-t.
672
@table @code
673
@item -echr 0x14
674
@item -echr 20
675
@end table
676

    
677
@item -s
678
Wait gdb connection to port 1234 (@pxref{gdb_usage}). 
679
@item -p port
680
Change gdb connection port.  @var{port} can be either a decimal number
681
to specify a TCP port, or a host device (same devices as the serial port).
682
@item -S
683
Do not start CPU at startup (you must type 'c' in the monitor).
684
@item -d             
685
Output log in /tmp/qemu.log
686
@item -hdachs c,h,s,[,t]
687
Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
688
@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
689
translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
690
all thoses parameters. This option is useful for old MS-DOS disk
691
images.
692

    
693
@item -L path
694
Set the directory for the BIOS, VGA BIOS and keymaps.
695

    
696
@item -std-vga
697
Simulate a standard VGA card with Bochs VBE extensions (default is
698
Cirrus Logic GD5446 PCI VGA). If your guest OS supports the VESA 2.0
699
VBE extensions (e.g. Windows XP) and if you want to use high
700
resolution modes (>= 1280x1024x16) then you should use this option.
701

    
702
@item -no-acpi
703
Disable ACPI (Advanced Configuration and Power Interface) support. Use
704
it if your guest OS complains about ACPI problems (PC target machine
705
only).
706

    
707
@item -no-reboot
708
Exit instead of rebooting.
709

    
710
@item -loadvm file
711
Start right away with a saved state (@code{loadvm} in monitor)
712

    
713
@item -semihosting
714
Enable "Angel" semihosting interface (ARM target machines only).
715
Note that this allows guest direct access to the host filesystem,
716
so should only be used with trusted guest OS.
717
@end table
718

    
719
@c man end
720

    
721
@node pcsys_keys
722
@section Keys
723

    
724
@c man begin OPTIONS
725

    
726
During the graphical emulation, you can use the following keys:
727
@table @key
728
@item Ctrl-Alt-f
729
Toggle full screen
730

    
731
@item Ctrl-Alt-n
732
Switch to virtual console 'n'. Standard console mappings are:
733
@table @emph
734
@item 1
735
Target system display
736
@item 2
737
Monitor
738
@item 3
739
Serial port
740
@end table
741

    
742
@item Ctrl-Alt
743
Toggle mouse and keyboard grab.
744
@end table
745

    
746
In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
747
@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
748

    
749
During emulation, if you are using the @option{-nographic} option, use
750
@key{Ctrl-a h} to get terminal commands:
751

    
752
@table @key
753
@item Ctrl-a h
754
Print this help
755
@item Ctrl-a x    
756
Exit emulator
757
@item Ctrl-a s    
758
Save disk data back to file (if -snapshot)
759
@item Ctrl-a t
760
toggle console timestamps
761
@item Ctrl-a b
762
Send break (magic sysrq in Linux)
763
@item Ctrl-a c
764
Switch between console and monitor
765
@item Ctrl-a Ctrl-a
766
Send Ctrl-a
767
@end table
768
@c man end
769

    
770
@ignore
771

    
772
@c man begin SEEALSO
773
The HTML documentation of QEMU for more precise information and Linux
774
user mode emulator invocation.
775
@c man end
776

    
777
@c man begin AUTHOR
778
Fabrice Bellard
779
@c man end
780

    
781
@end ignore
782

    
783
@node pcsys_monitor
784
@section QEMU Monitor
785

    
786
The QEMU monitor is used to give complex commands to the QEMU
787
emulator. You can use it to:
788

    
789
@itemize @minus
790

    
791
@item
792
Remove or insert removable medias images
793
(such as CD-ROM or floppies)
794

    
795
@item 
796
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
797
from a disk file.
798

    
799
@item Inspect the VM state without an external debugger.
800

    
801
@end itemize
802

    
803
@subsection Commands
804

    
805
The following commands are available:
806

    
807
@table @option
808

    
809
@item help or ? [cmd]
810
Show the help for all commands or just for command @var{cmd}.
811

    
812
@item commit  
813
Commit changes to the disk images (if -snapshot is used)
814

    
815
@item info subcommand 
816
show various information about the system state
817

    
818
@table @option
819
@item info network
820
show the various VLANs and the associated devices
821
@item info block
822
show the block devices
823
@item info registers
824
show the cpu registers
825
@item info history
826
show the command line history
827
@item info pci
828
show emulated PCI device
829
@item info usb
830
show USB devices plugged on the virtual USB hub
831
@item info usbhost
832
show all USB host devices
833
@item info capture
834
show information about active capturing
835
@item info snapshots
836
show list of VM snapshots
837
@item info mice
838
show which guest mouse is receiving events
839
@end table
840

    
841
@item q or quit
842
Quit the emulator.
843

    
844
@item eject [-f] device
845
Eject a removable media (use -f to force it).
846

    
847
@item change device filename
848
Change a removable media.
849

    
850
@item screendump filename
851
Save screen into PPM image @var{filename}.
852

    
853
@item mouse_move dx dy [dz]
854
Move the active mouse to the specified coordinates @var{dx} @var{dy}
855
with optional scroll axis @var{dz}.
856

    
857
@item mouse_button val
858
Change the active mouse button state @var{val} (1=L, 2=M, 4=R).
859

    
860
@item mouse_set index
861
Set which mouse device receives events at given @var{index}, index
862
can be obtained with
863
@example
864
info mice
865
@end example
866

    
867
@item wavcapture filename [frequency [bits [channels]]]
868
Capture audio into @var{filename}. Using sample rate @var{frequency}
869
bits per sample @var{bits} and number of channels @var{channels}.
870

    
871
Defaults:
872
@itemize @minus
873
@item Sample rate = 44100 Hz - CD quality
874
@item Bits = 16
875
@item Number of channels = 2 - Stereo
876
@end itemize
877

    
878
@item stopcapture index
879
Stop capture with a given @var{index}, index can be obtained with
880
@example
881
info capture
882
@end example
883

    
884
@item log item1[,...]
885
Activate logging of the specified items to @file{/tmp/qemu.log}.
886

    
887
@item savevm [tag|id]
888
Create a snapshot of the whole virtual machine. If @var{tag} is
889
provided, it is used as human readable identifier. If there is already
890
a snapshot with the same tag or ID, it is replaced. More info at
891
@ref{vm_snapshots}.
892

    
893
@item loadvm tag|id
894
Set the whole virtual machine to the snapshot identified by the tag
895
@var{tag} or the unique snapshot ID @var{id}.
896

    
897
@item delvm tag|id
898
Delete the snapshot identified by @var{tag} or @var{id}.
899

    
900
@item stop
901
Stop emulation.
902

    
903
@item c or cont
904
Resume emulation.
905

    
906
@item gdbserver [port]
907
Start gdbserver session (default port=1234)
908

    
909
@item x/fmt addr
910
Virtual memory dump starting at @var{addr}.
911

    
912
@item xp /fmt addr
913
Physical memory dump starting at @var{addr}.
914

    
915
@var{fmt} is a format which tells the command how to format the
916
data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
917

    
918
@table @var
919
@item count 
920
is the number of items to be dumped.
921

    
922
@item format
923
can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
924
c (char) or i (asm instruction).
925

    
926
@item size
927
can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
928
@code{h} or @code{w} can be specified with the @code{i} format to
929
respectively select 16 or 32 bit code instruction size.
930

    
931
@end table
932

    
933
Examples: 
934
@itemize
935
@item
936
Dump 10 instructions at the current instruction pointer:
937
@example 
938
(qemu) x/10i $eip
939
0x90107063:  ret
940
0x90107064:  sti
941
0x90107065:  lea    0x0(%esi,1),%esi
942
0x90107069:  lea    0x0(%edi,1),%edi
943
0x90107070:  ret
944
0x90107071:  jmp    0x90107080
945
0x90107073:  nop
946
0x90107074:  nop
947
0x90107075:  nop
948
0x90107076:  nop
949
@end example
950

    
951
@item
952
Dump 80 16 bit values at the start of the video memory.
953
@smallexample 
954
(qemu) xp/80hx 0xb8000
955
0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
956
0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
957
0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
958
0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
959
0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
960
0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
961
0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
962
0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
963
0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
964
0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
965
@end smallexample
966
@end itemize
967

    
968
@item p or print/fmt expr
969

    
970
Print expression value. Only the @var{format} part of @var{fmt} is
971
used.
972

    
973
@item sendkey keys
974

    
975
Send @var{keys} to the emulator. Use @code{-} to press several keys
976
simultaneously. Example:
977
@example
978
sendkey ctrl-alt-f1
979
@end example
980

    
981
This command is useful to send keys that your graphical user interface
982
intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
983

    
984
@item system_reset
985

    
986
Reset the system.
987

    
988
@item usb_add devname
989

    
990
Add the USB device @var{devname}.  For details of available devices see
991
@ref{usb_devices}
992

    
993
@item usb_del devname
994

    
995
Remove the USB device @var{devname} from the QEMU virtual USB
996
hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
997
command @code{info usb} to see the devices you can remove.
998

    
999
@end table
1000

    
1001
@subsection Integer expressions
1002

    
1003
The monitor understands integers expressions for every integer
1004
argument. You can use register names to get the value of specifics
1005
CPU registers by prefixing them with @emph{$}.
1006

    
1007
@node disk_images
1008
@section Disk Images
1009

    
1010
Since version 0.6.1, QEMU supports many disk image formats, including
1011
growable disk images (their size increase as non empty sectors are
1012
written), compressed and encrypted disk images. Version 0.8.3 added
1013
the new qcow2 disk image format which is essential to support VM
1014
snapshots.
1015

    
1016
@menu
1017
* disk_images_quickstart::    Quick start for disk image creation
1018
* disk_images_snapshot_mode:: Snapshot mode
1019
* vm_snapshots::              VM snapshots
1020
* qemu_img_invocation::       qemu-img Invocation
1021
* host_drives::               Using host drives
1022
* disk_images_fat_images::    Virtual FAT disk images
1023
@end menu
1024

    
1025
@node disk_images_quickstart
1026
@subsection Quick start for disk image creation
1027

    
1028
You can create a disk image with the command:
1029
@example
1030
qemu-img create myimage.img mysize
1031
@end example
1032
where @var{myimage.img} is the disk image filename and @var{mysize} is its
1033
size in kilobytes. You can add an @code{M} suffix to give the size in
1034
megabytes and a @code{G} suffix for gigabytes.
1035

    
1036
See @ref{qemu_img_invocation} for more information.
1037

    
1038
@node disk_images_snapshot_mode
1039
@subsection Snapshot mode
1040

    
1041
If you use the option @option{-snapshot}, all disk images are
1042
considered as read only. When sectors in written, they are written in
1043
a temporary file created in @file{/tmp}. You can however force the
1044
write back to the raw disk images by using the @code{commit} monitor
1045
command (or @key{C-a s} in the serial console).
1046

    
1047
@node vm_snapshots
1048
@subsection VM snapshots
1049

    
1050
VM snapshots are snapshots of the complete virtual machine including
1051
CPU state, RAM, device state and the content of all the writable
1052
disks. In order to use VM snapshots, you must have at least one non
1053
removable and writable block device using the @code{qcow2} disk image
1054
format. Normally this device is the first virtual hard drive.
1055

    
1056
Use the monitor command @code{savevm} to create a new VM snapshot or
1057
replace an existing one. A human readable name can be assigned to each
1058
snapshot in addition to its numerical ID.
1059

    
1060
Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
1061
a VM snapshot. @code{info snapshots} lists the available snapshots
1062
with their associated information:
1063

    
1064
@example
1065
(qemu) info snapshots
1066
Snapshot devices: hda
1067
Snapshot list (from hda):
1068
ID        TAG                 VM SIZE                DATE       VM CLOCK
1069
1         start                   41M 2006-08-06 12:38:02   00:00:14.954
1070
2                                 40M 2006-08-06 12:43:29   00:00:18.633
1071
3         msys                    40M 2006-08-06 12:44:04   00:00:23.514
1072
@end example
1073

    
1074
A VM snapshot is made of a VM state info (its size is shown in
1075
@code{info snapshots}) and a snapshot of every writable disk image.
1076
The VM state info is stored in the first @code{qcow2} non removable
1077
and writable block device. The disk image snapshots are stored in
1078
every disk image. The size of a snapshot in a disk image is difficult
1079
to evaluate and is not shown by @code{info snapshots} because the
1080
associated disk sectors are shared among all the snapshots to save
1081
disk space (otherwise each snapshot would need a full copy of all the
1082
disk images).
1083

    
1084
When using the (unrelated) @code{-snapshot} option
1085
(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
1086
but they are deleted as soon as you exit QEMU.
1087

    
1088
VM snapshots currently have the following known limitations:
1089
@itemize
1090
@item 
1091
They cannot cope with removable devices if they are removed or
1092
inserted after a snapshot is done.
1093
@item 
1094
A few device drivers still have incomplete snapshot support so their
1095
state is not saved or restored properly (in particular USB).
1096
@end itemize
1097

    
1098
@node qemu_img_invocation
1099
@subsection @code{qemu-img} Invocation
1100

    
1101
@include qemu-img.texi
1102

    
1103
@node host_drives
1104
@subsection Using host drives
1105

    
1106
In addition to disk image files, QEMU can directly access host
1107
devices. We describe here the usage for QEMU version >= 0.8.3.
1108

    
1109
@subsubsection Linux
1110

    
1111
On Linux, you can directly use the host device filename instead of a
1112
disk image filename provided you have enough proviledge to access
1113
it. For example, use @file{/dev/cdrom} to access to the CDROM or
1114
@file{/dev/fd0} for the floppy.
1115

    
1116
@table @code
1117
@item CD
1118
You can specify a CDROM device even if no CDROM is loaded. QEMU has
1119
specific code to detect CDROM insertion or removal. CDROM ejection by
1120
the guest OS is supported. Currently only data CDs are supported.
1121
@item Floppy
1122
You can specify a floppy device even if no floppy is loaded. Floppy
1123
removal is currently not detected accurately (if you change floppy
1124
without doing floppy access while the floppy is not loaded, the guest
1125
OS will think that the same floppy is loaded).
1126
@item Hard disks
1127
Hard disks can be used. Normally you must specify the whole disk
1128
(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
1129
see it as a partitioned disk. WARNING: unless you know what you do, it
1130
is better to only make READ-ONLY accesses to the hard disk otherwise
1131
you may corrupt your host data (use the @option{-snapshot} command
1132
line option or modify the device permissions accordingly).
1133
@end table
1134

    
1135
@subsubsection Windows
1136

    
1137
@table @code
1138
@item CD
1139
The prefered syntax is the drive letter (e.g. @file{d:}). The
1140
alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
1141
supported as an alias to the first CDROM drive.
1142

    
1143
Currently there is no specific code to handle removable medias, so it
1144
is better to use the @code{change} or @code{eject} monitor commands to
1145
change or eject media.
1146
@item Hard disks
1147
Hard disks can be used with the syntax: @file{\\.\PhysicalDriveN}
1148
where @var{N} is the drive number (0 is the first hard disk).
1149

    
1150
WARNING: unless you know what you do, it is better to only make
1151
READ-ONLY accesses to the hard disk otherwise you may corrupt your
1152
host data (use the @option{-snapshot} command line so that the
1153
modifications are written in a temporary file).
1154
@end table
1155

    
1156

    
1157
@subsubsection Mac OS X
1158

    
1159
@file{/dev/cdrom} is an alias to the first CDROM. 
1160

    
1161
Currently there is no specific code to handle removable medias, so it
1162
is better to use the @code{change} or @code{eject} monitor commands to
1163
change or eject media.
1164

    
1165
@node disk_images_fat_images
1166
@subsection Virtual FAT disk images
1167

    
1168
QEMU can automatically create a virtual FAT disk image from a
1169
directory tree. In order to use it, just type:
1170

    
1171
@example 
1172
qemu linux.img -hdb fat:/my_directory
1173
@end example
1174

    
1175
Then you access access to all the files in the @file{/my_directory}
1176
directory without having to copy them in a disk image or to export
1177
them via SAMBA or NFS. The default access is @emph{read-only}.
1178

    
1179
Floppies can be emulated with the @code{:floppy:} option:
1180

    
1181
@example 
1182
qemu linux.img -fda fat:floppy:/my_directory
1183
@end example
1184

    
1185
A read/write support is available for testing (beta stage) with the
1186
@code{:rw:} option:
1187

    
1188
@example 
1189
qemu linux.img -fda fat:floppy:rw:/my_directory
1190
@end example
1191

    
1192
What you should @emph{never} do:
1193
@itemize
1194
@item use non-ASCII filenames ;
1195
@item use "-snapshot" together with ":rw:" ;
1196
@item expect it to work when loadvm'ing ;
1197
@item write to the FAT directory on the host system while accessing it with the guest system.
1198
@end itemize
1199

    
1200
@node pcsys_network
1201
@section Network emulation
1202

    
1203
QEMU can simulate several networks cards (NE2000 boards on the PC
1204
target) and can connect them to an arbitrary number of Virtual Local
1205
Area Networks (VLANs). Host TAP devices can be connected to any QEMU
1206
VLAN. VLAN can be connected between separate instances of QEMU to
1207
simulate large networks. For simpler usage, a non priviledged user mode
1208
network stack can replace the TAP device to have a basic network
1209
connection.
1210

    
1211
@subsection VLANs
1212

    
1213
QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
1214
connection between several network devices. These devices can be for
1215
example QEMU virtual Ethernet cards or virtual Host ethernet devices
1216
(TAP devices).
1217

    
1218
@subsection Using TAP network interfaces
1219

    
1220
This is the standard way to connect QEMU to a real network. QEMU adds
1221
a virtual network device on your host (called @code{tapN}), and you
1222
can then configure it as if it was a real ethernet card.
1223

    
1224
@subsubsection Linux host
1225

    
1226
As an example, you can download the @file{linux-test-xxx.tar.gz}
1227
archive and copy the script @file{qemu-ifup} in @file{/etc} and
1228
configure properly @code{sudo} so that the command @code{ifconfig}
1229
contained in @file{qemu-ifup} can be executed as root. You must verify
1230
that your host kernel supports the TAP network interfaces: the
1231
device @file{/dev/net/tun} must be present.
1232

    
1233
See @ref{sec_invocation} to have examples of command lines using the
1234
TAP network interfaces.
1235

    
1236
@subsubsection Windows host
1237

    
1238
There is a virtual ethernet driver for Windows 2000/XP systems, called
1239
TAP-Win32. But it is not included in standard QEMU for Windows,
1240
so you will need to get it separately. It is part of OpenVPN package,
1241
so download OpenVPN from : @url{http://openvpn.net/}.
1242

    
1243
@subsection Using the user mode network stack
1244

    
1245
By using the option @option{-net user} (default configuration if no
1246
@option{-net} option is specified), QEMU uses a completely user mode
1247
network stack (you don't need root priviledge to use the virtual
1248
network). The virtual network configuration is the following:
1249

    
1250
@example
1251

    
1252
         QEMU VLAN      <------>  Firewall/DHCP server <-----> Internet
1253
                           |          (10.0.2.2)
1254
                           |
1255
                           ---->  DNS server (10.0.2.3)
1256
                           |     
1257
                           ---->  SMB server (10.0.2.4)
1258
@end example
1259

    
1260
The QEMU VM behaves as if it was behind a firewall which blocks all
1261
incoming connections. You can use a DHCP client to automatically
1262
configure the network in the QEMU VM. The DHCP server assign addresses
1263
to the hosts starting from 10.0.2.15.
1264

    
1265
In order to check that the user mode network is working, you can ping
1266
the address 10.0.2.2 and verify that you got an address in the range
1267
10.0.2.x from the QEMU virtual DHCP server.
1268

    
1269
Note that @code{ping} is not supported reliably to the internet as it
1270
would require root priviledges. It means you can only ping the local
1271
router (10.0.2.2).
1272

    
1273
When using the built-in TFTP server, the router is also the TFTP
1274
server.
1275

    
1276
When using the @option{-redir} option, TCP or UDP connections can be
1277
redirected from the host to the guest. It allows for example to
1278
redirect X11, telnet or SSH connections.
1279

    
1280
@subsection Connecting VLANs between QEMU instances
1281

    
1282
Using the @option{-net socket} option, it is possible to make VLANs
1283
that span several QEMU instances. See @ref{sec_invocation} to have a
1284
basic example.
1285

    
1286
@node direct_linux_boot
1287
@section Direct Linux Boot
1288

    
1289
This section explains how to launch a Linux kernel inside QEMU without
1290
having to make a full bootable image. It is very useful for fast Linux
1291
kernel testing.
1292

    
1293
The syntax is:
1294
@example
1295
qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1296
@end example
1297

    
1298
Use @option{-kernel} to provide the Linux kernel image and
1299
@option{-append} to give the kernel command line arguments. The
1300
@option{-initrd} option can be used to provide an INITRD image.
1301

    
1302
When using the direct Linux boot, a disk image for the first hard disk
1303
@file{hda} is required because its boot sector is used to launch the
1304
Linux kernel.
1305

    
1306
If you do not need graphical output, you can disable it and redirect
1307
the virtual serial port and the QEMU monitor to the console with the
1308
@option{-nographic} option. The typical command line is:
1309
@example
1310
qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1311
     -append "root=/dev/hda console=ttyS0" -nographic
1312
@end example
1313

    
1314
Use @key{Ctrl-a c} to switch between the serial console and the
1315
monitor (@pxref{pcsys_keys}).
1316

    
1317
@node pcsys_usb
1318
@section USB emulation
1319

    
1320
QEMU emulates a PCI UHCI USB controller. You can virtually plug
1321
virtual USB devices or real host USB devices (experimental, works only
1322
on Linux hosts).  Qemu will automatically create and connect virtual USB hubs
1323
as necessary to connect multiple USB devices.
1324

    
1325
@menu
1326
* usb_devices::
1327
* host_usb_devices::
1328
@end menu
1329
@node usb_devices
1330
@subsection Connecting USB devices
1331

    
1332
USB devices can be connected with the @option{-usbdevice} commandline option
1333
or the @code{usb_add} monitor command.  Available devices are:
1334

    
1335
@table @var
1336
@item @code{mouse}
1337
Virtual Mouse.  This will override the PS/2 mouse emulation when activated.
1338
@item @code{tablet}
1339
Pointer device that uses absolute coordinates (like a touchscreen).
1340
This means qemu is able to report the mouse position without having
1341
to grab the mouse.  Also overrides the PS/2 mouse emulation when activated.
1342
@item @code{disk:file}
1343
Mass storage device based on @var{file} (@pxref{disk_images})
1344
@item @code{host:bus.addr}
1345
Pass through the host device identified by @var{bus.addr}
1346
(Linux only)
1347
@item @code{host:vendor_id:product_id}
1348
Pass through the host device identified by @var{vendor_id:product_id}
1349
(Linux only)
1350
@end table
1351

    
1352
@node host_usb_devices
1353
@subsection Using host USB devices on a Linux host
1354

    
1355
WARNING: this is an experimental feature. QEMU will slow down when
1356
using it. USB devices requiring real time streaming (i.e. USB Video
1357
Cameras) are not supported yet.
1358

    
1359
@enumerate
1360
@item If you use an early Linux 2.4 kernel, verify that no Linux driver 
1361
is actually using the USB device. A simple way to do that is simply to
1362
disable the corresponding kernel module by renaming it from @file{mydriver.o}
1363
to @file{mydriver.o.disabled}.
1364

    
1365
@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1366
@example
1367
ls /proc/bus/usb
1368
001  devices  drivers
1369
@end example
1370

    
1371
@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:
1372
@example
1373
chown -R myuid /proc/bus/usb
1374
@end example
1375

    
1376
@item Launch QEMU and do in the monitor:
1377
@example 
1378
info usbhost
1379
  Device 1.2, speed 480 Mb/s
1380
    Class 00: USB device 1234:5678, USB DISK
1381
@end example
1382
You should see the list of the devices you can use (Never try to use
1383
hubs, it won't work).
1384

    
1385
@item Add the device in QEMU by using:
1386
@example 
1387
usb_add host:1234:5678
1388
@end example
1389

    
1390
Normally the guest OS should report that a new USB device is
1391
plugged. You can use the option @option{-usbdevice} to do the same.
1392

    
1393
@item Now you can try to use the host USB device in QEMU.
1394

    
1395
@end enumerate
1396

    
1397
When relaunching QEMU, you may have to unplug and plug again the USB
1398
device to make it work again (this is a bug).
1399

    
1400
@node gdb_usage
1401
@section GDB usage
1402

    
1403
QEMU has a primitive support to work with gdb, so that you can do
1404
'Ctrl-C' while the virtual machine is running and inspect its state.
1405

    
1406
In order to use gdb, launch qemu with the '-s' option. It will wait for a
1407
gdb connection:
1408
@example
1409
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1410
       -append "root=/dev/hda"
1411
Connected to host network interface: tun0
1412
Waiting gdb connection on port 1234
1413
@end example
1414

    
1415
Then launch gdb on the 'vmlinux' executable:
1416
@example
1417
> gdb vmlinux
1418
@end example
1419

    
1420
In gdb, connect to QEMU:
1421
@example
1422
(gdb) target remote localhost:1234
1423
@end example
1424

    
1425
Then you can use gdb normally. For example, type 'c' to launch the kernel:
1426
@example
1427
(gdb) c
1428
@end example
1429

    
1430
Here are some useful tips in order to use gdb on system code:
1431

    
1432
@enumerate
1433
@item
1434
Use @code{info reg} to display all the CPU registers.
1435
@item
1436
Use @code{x/10i $eip} to display the code at the PC position.
1437
@item
1438
Use @code{set architecture i8086} to dump 16 bit code. Then use
1439
@code{x/10i $cs*16+$eip} to dump the code at the PC position.
1440
@end enumerate
1441

    
1442
@node pcsys_os_specific
1443
@section Target OS specific information
1444

    
1445
@subsection Linux
1446

    
1447
To have access to SVGA graphic modes under X11, use the @code{vesa} or
1448
the @code{cirrus} X11 driver. For optimal performances, use 16 bit
1449
color depth in the guest and the host OS.
1450

    
1451
When using a 2.6 guest Linux kernel, you should add the option
1452
@code{clock=pit} on the kernel command line because the 2.6 Linux
1453
kernels make very strict real time clock checks by default that QEMU
1454
cannot simulate exactly.
1455

    
1456
When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1457
not activated because QEMU is slower with this patch. The QEMU
1458
Accelerator Module is also much slower in this case. Earlier Fedora
1459
Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporte this
1460
patch by default. Newer kernels don't have it.
1461

    
1462
@subsection Windows
1463

    
1464
If you have a slow host, using Windows 95 is better as it gives the
1465
best speed. Windows 2000 is also a good choice.
1466

    
1467
@subsubsection SVGA graphic modes support
1468

    
1469
QEMU emulates a Cirrus Logic GD5446 Video
1470
card. All Windows versions starting from Windows 95 should recognize
1471
and use this graphic card. For optimal performances, use 16 bit color
1472
depth in the guest and the host OS.
1473

    
1474
If you are using Windows XP as guest OS and if you want to use high
1475
resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
1476
1280x1024x16), then you should use the VESA VBE virtual graphic card
1477
(option @option{-std-vga}).
1478

    
1479
@subsubsection CPU usage reduction
1480

    
1481
Windows 9x does not correctly use the CPU HLT
1482
instruction. The result is that it takes host CPU cycles even when
1483
idle. You can install the utility from
1484
@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
1485
problem. Note that no such tool is needed for NT, 2000 or XP.
1486

    
1487
@subsubsection Windows 2000 disk full problem
1488

    
1489
Windows 2000 has a bug which gives a disk full problem during its
1490
installation. When installing it, use the @option{-win2k-hack} QEMU
1491
option to enable a specific workaround. After Windows 2000 is
1492
installed, you no longer need this option (this option slows down the
1493
IDE transfers).
1494

    
1495
@subsubsection Windows 2000 shutdown
1496

    
1497
Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1498
can. It comes from the fact that Windows 2000 does not automatically
1499
use the APM driver provided by the BIOS.
1500

    
1501
In order to correct that, do the following (thanks to Struan
1502
Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
1503
Add/Troubleshoot a device => Add a new device & Next => No, select the
1504
hardware from a list & Next => NT Apm/Legacy Support & Next => Next
1505
(again) a few times. Now the driver is installed and Windows 2000 now
1506
correctly instructs QEMU to shutdown at the appropriate moment. 
1507

    
1508
@subsubsection Share a directory between Unix and Windows
1509

    
1510
See @ref{sec_invocation} about the help of the option @option{-smb}.
1511

    
1512
@subsubsection Windows XP security problem
1513

    
1514
Some releases of Windows XP install correctly but give a security
1515
error when booting:
1516
@example
1517
A problem is preventing Windows from accurately checking the
1518
license for this computer. Error code: 0x800703e6.
1519
@end example
1520

    
1521
The workaround is to install a service pack for XP after a boot in safe
1522
mode. Then reboot, and the problem should go away. Since there is no
1523
network while in safe mode, its recommended to download the full
1524
installation of SP1 or SP2 and transfer that via an ISO or using the
1525
vvfat block device ("-hdb fat:directory_which_holds_the_SP").
1526

    
1527
@subsection MS-DOS and FreeDOS
1528

    
1529
@subsubsection CPU usage reduction
1530

    
1531
DOS does not correctly use the CPU HLT instruction. The result is that
1532
it takes host CPU cycles even when idle. You can install the utility
1533
from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
1534
problem.
1535

    
1536
@node QEMU System emulator for non PC targets
1537
@chapter QEMU System emulator for non PC targets
1538

    
1539
QEMU is a generic emulator and it emulates many non PC
1540
machines. Most of the options are similar to the PC emulator. The
1541
differences are mentionned in the following sections.
1542

    
1543
@menu
1544
* QEMU PowerPC System emulator::
1545
* Sparc32 System emulator invocation::
1546
* Sparc64 System emulator invocation::
1547
* MIPS System emulator invocation::
1548
* ARM System emulator invocation::
1549
@end menu
1550

    
1551
@node QEMU PowerPC System emulator
1552
@section QEMU PowerPC System emulator
1553

    
1554
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1555
or PowerMac PowerPC system.
1556

    
1557
QEMU emulates the following PowerMac peripherals:
1558

    
1559
@itemize @minus
1560
@item 
1561
UniNorth PCI Bridge 
1562
@item
1563
PCI VGA compatible card with VESA Bochs Extensions
1564
@item 
1565
2 PMAC IDE interfaces with hard disk and CD-ROM support
1566
@item 
1567
NE2000 PCI adapters
1568
@item
1569
Non Volatile RAM
1570
@item
1571
VIA-CUDA with ADB keyboard and mouse.
1572
@end itemize
1573

    
1574
QEMU emulates the following PREP peripherals:
1575

    
1576
@itemize @minus
1577
@item 
1578
PCI Bridge
1579
@item
1580
PCI VGA compatible card with VESA Bochs Extensions
1581
@item 
1582
2 IDE interfaces with hard disk and CD-ROM support
1583
@item
1584
Floppy disk
1585
@item 
1586
NE2000 network adapters
1587
@item
1588
Serial port
1589
@item
1590
PREP Non Volatile RAM
1591
@item
1592
PC compatible keyboard and mouse.
1593
@end itemize
1594

    
1595
QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
1596
@url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
1597

    
1598
@c man begin OPTIONS
1599

    
1600
The following options are specific to the PowerPC emulation:
1601

    
1602
@table @option
1603

    
1604
@item -g WxH[xDEPTH]  
1605

    
1606
Set the initial VGA graphic mode. The default is 800x600x15.
1607

    
1608
@end table
1609

    
1610
@c man end 
1611

    
1612

    
1613
More information is available at
1614
@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
1615

    
1616
@node Sparc32 System emulator invocation
1617
@section Sparc32 System emulator invocation
1618

    
1619
Use the executable @file{qemu-system-sparc} to simulate a SparcStation 5
1620
(sun4m architecture). The emulation is somewhat complete.
1621

    
1622
QEMU emulates the following sun4m peripherals:
1623

    
1624
@itemize @minus
1625
@item
1626
IOMMU
1627
@item
1628
TCX Frame buffer
1629
@item 
1630
Lance (Am7990) Ethernet
1631
@item
1632
Non Volatile RAM M48T08
1633
@item
1634
Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1635
and power/reset logic
1636
@item
1637
ESP SCSI controller with hard disk and CD-ROM support
1638
@item
1639
Floppy drive
1640
@end itemize
1641

    
1642
The number of peripherals is fixed in the architecture.
1643

    
1644
Since version 0.8.2, QEMU uses OpenBIOS
1645
@url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
1646
firmware implementation. The goal is to implement a 100% IEEE
1647
1275-1994 (referred to as Open Firmware) compliant firmware.
1648

    
1649
A sample Linux 2.6 series kernel and ram disk image are available on
1650
the QEMU web site. Please note that currently NetBSD, OpenBSD or
1651
Solaris kernels don't work.
1652

    
1653
@c man begin OPTIONS
1654

    
1655
The following options are specific to the Sparc emulation:
1656

    
1657
@table @option
1658

    
1659
@item -g WxH
1660

    
1661
Set the initial TCX graphic mode. The default is 1024x768.
1662

    
1663
@end table
1664

    
1665
@c man end 
1666

    
1667
@node Sparc64 System emulator invocation
1668
@section Sparc64 System emulator invocation
1669

    
1670
Use the executable @file{qemu-system-sparc64} to simulate a Sun4u machine.
1671
The emulator is not usable for anything yet.
1672

    
1673
QEMU emulates the following sun4u peripherals:
1674

    
1675
@itemize @minus
1676
@item
1677
UltraSparc IIi APB PCI Bridge 
1678
@item
1679
PCI VGA compatible card with VESA Bochs Extensions
1680
@item
1681
Non Volatile RAM M48T59
1682
@item
1683
PC-compatible serial ports
1684
@end itemize
1685

    
1686
@node MIPS System emulator invocation
1687
@section MIPS System emulator invocation
1688

    
1689
Use the executable @file{qemu-system-mips} to simulate a MIPS machine.
1690
The emulator is able to boot a Linux kernel and to run a Linux Debian
1691
installation from NFS. The following devices are emulated:
1692

    
1693
@itemize @minus
1694
@item 
1695
MIPS R4K CPU
1696
@item
1697
PC style serial port
1698
@item
1699
NE2000 network card
1700
@end itemize
1701

    
1702
More information is available in the QEMU mailing-list archive.
1703

    
1704
@node ARM System emulator invocation
1705
@section ARM System emulator invocation
1706

    
1707
Use the executable @file{qemu-system-arm} to simulate a ARM
1708
machine. The ARM Integrator/CP board is emulated with the following
1709
devices:
1710

    
1711
@itemize @minus
1712
@item
1713
ARM926E or ARM1026E CPU
1714
@item
1715
Two PL011 UARTs
1716
@item 
1717
SMC 91c111 Ethernet adapter
1718
@item
1719
PL110 LCD controller
1720
@item
1721
PL050 KMI with PS/2 keyboard and mouse.
1722
@end itemize
1723

    
1724
The ARM Versatile baseboard is emulated with the following devices:
1725

    
1726
@itemize @minus
1727
@item
1728
ARM926E CPU
1729
@item
1730
PL190 Vectored Interrupt Controller
1731
@item
1732
Four PL011 UARTs
1733
@item 
1734
SMC 91c111 Ethernet adapter
1735
@item
1736
PL110 LCD controller
1737
@item
1738
PL050 KMI with PS/2 keyboard and mouse.
1739
@item
1740
PCI host bridge.  Note the emulated PCI bridge only provides access to
1741
PCI memory space.  It does not provide access to PCI IO space.
1742
This means some devices (eg. ne2k_pci NIC) are not useable, and others
1743
(eg. rtl8139 NIC) are only useable when the guest drivers use the memory
1744
mapped control registers.
1745
@item
1746
PCI OHCI USB controller.
1747
@item
1748
LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
1749
@end itemize
1750

    
1751
The ARM RealView Emulation baseboard is emulated with the following devices:
1752

    
1753
@itemize @minus
1754
@item
1755
ARM926E CPU
1756
@item
1757
ARM AMBA Generic/Distributed Interrupt Controller
1758
@item
1759
Four PL011 UARTs
1760
@item 
1761
SMC 91c111 Ethernet adapter
1762
@item
1763
PL110 LCD controller
1764
@item
1765
PL050 KMI with PS/2 keyboard and mouse
1766
@item
1767
PCI host bridge
1768
@item
1769
PCI OHCI USB controller
1770
@item
1771
LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
1772
@end itemize
1773

    
1774
A Linux 2.6 test image is available on the QEMU web site. More
1775
information is available in the QEMU mailing-list archive.
1776

    
1777
@node QEMU User space emulator 
1778
@chapter QEMU User space emulator 
1779

    
1780
@menu
1781
* Supported Operating Systems ::
1782
* Linux User space emulator::
1783
* Mac OS X/Darwin User space emulator ::
1784
@end menu
1785

    
1786
@node Supported Operating Systems
1787
@section Supported Operating Systems
1788

    
1789
The following OS are supported in user space emulation:
1790

    
1791
@itemize @minus
1792
@item
1793
Linux (refered as qemu-linux-user)
1794
@item
1795
Mac OS X/Darwin (refered as qemu-darwin-user)
1796
@end itemize
1797

    
1798
@node Linux User space emulator
1799
@section Linux User space emulator
1800

    
1801
@menu
1802
* Quick Start::
1803
* Wine launch::
1804
* Command line options::
1805
* Other binaries::
1806
@end menu
1807

    
1808
@node Quick Start
1809
@subsection Quick Start
1810

    
1811
In order to launch a Linux process, QEMU needs the process executable
1812
itself and all the target (x86) dynamic libraries used by it. 
1813

    
1814
@itemize
1815

    
1816
@item On x86, you can just try to launch any process by using the native
1817
libraries:
1818

    
1819
@example 
1820
qemu-i386 -L / /bin/ls
1821
@end example
1822

    
1823
@code{-L /} tells that the x86 dynamic linker must be searched with a
1824
@file{/} prefix.
1825

    
1826
@item Since QEMU is also a linux process, you can launch qemu with
1827
qemu (NOTE: you can only do that if you compiled QEMU from the sources):
1828

    
1829
@example 
1830
qemu-i386 -L / qemu-i386 -L / /bin/ls
1831
@end example
1832

    
1833
@item On non x86 CPUs, you need first to download at least an x86 glibc
1834
(@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
1835
@code{LD_LIBRARY_PATH} is not set:
1836

    
1837
@example
1838
unset LD_LIBRARY_PATH 
1839
@end example
1840

    
1841
Then you can launch the precompiled @file{ls} x86 executable:
1842

    
1843
@example
1844
qemu-i386 tests/i386/ls
1845
@end example
1846
You can look at @file{qemu-binfmt-conf.sh} so that
1847
QEMU is automatically launched by the Linux kernel when you try to
1848
launch x86 executables. It requires the @code{binfmt_misc} module in the
1849
Linux kernel.
1850

    
1851
@item The x86 version of QEMU is also included. You can try weird things such as:
1852
@example
1853
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
1854
          /usr/local/qemu-i386/bin/ls-i386
1855
@end example
1856

    
1857
@end itemize
1858

    
1859
@node Wine launch
1860
@subsection Wine launch
1861

    
1862
@itemize
1863

    
1864
@item Ensure that you have a working QEMU with the x86 glibc
1865
distribution (see previous section). In order to verify it, you must be
1866
able to do:
1867

    
1868
@example
1869
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1870
@end example
1871

    
1872
@item Download the binary x86 Wine install
1873
(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page). 
1874

    
1875
@item Configure Wine on your account. Look at the provided script
1876
@file{/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous
1877
@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
1878

    
1879
@item Then you can try the example @file{putty.exe}:
1880

    
1881
@example
1882
qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
1883
          /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1884
@end example
1885

    
1886
@end itemize
1887

    
1888
@node Command line options
1889
@subsection Command line options
1890

    
1891
@example
1892
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1893
@end example
1894

    
1895
@table @option
1896
@item -h
1897
Print the help
1898
@item -L path   
1899
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1900
@item -s size
1901
Set the x86 stack size in bytes (default=524288)
1902
@end table
1903

    
1904
Debug options:
1905

    
1906
@table @option
1907
@item -d
1908
Activate log (logfile=/tmp/qemu.log)
1909
@item -p pagesize
1910
Act as if the host page size was 'pagesize' bytes
1911
@end table
1912

    
1913
@node Other binaries
1914
@subsection Other binaries
1915

    
1916
@command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF
1917
binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
1918
configurations), and arm-uclinux bFLT format binaries.
1919

    
1920
@command{qemu-m68k} is capable of running semihosted binaries using the BDM
1921
(m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
1922
coldfire uClinux bFLT format binaries.
1923

    
1924
The binary format is detected automatically.
1925

    
1926
@node Mac OS X/Darwin User space emulator
1927
@section Mac OS X/Darwin User space emulator
1928

    
1929
@menu
1930
* Mac OS X/Darwin Status::
1931
* Mac OS X/Darwin Quick Start::
1932
* Mac OS X/Darwin Command line options::
1933
@end menu
1934

    
1935
@node Mac OS X/Darwin Status
1936
@subsection Mac OS X/Darwin Status
1937

    
1938
@itemize @minus
1939
@item
1940
target x86 on x86: Most apps (Cocoa and Carbon too) works. [1]
1941
@item
1942
target PowerPC on x86: Not working as the ppc commpage can't be mapped (yet!)
1943
@item
1944
target PowerPC on PowerPC: Most apps (Cocoa and Carbon too) works. [1]
1945
@item
1946
target x86 on PowerPC: most utilities work. Cocoa and Carbon apps are not yet supported.
1947
@end itemize
1948

    
1949
[1] If you're host commpage can be executed by qemu.
1950

    
1951
@node Mac OS X/Darwin Quick Start
1952
@subsection Quick Start
1953

    
1954
In order to launch a Mac OS X/Darwin process, QEMU needs the process executable
1955
itself and all the target dynamic libraries used by it. If you don't have the FAT
1956
libraries (you're running Mac OS X/ppc) you'll need to obtain it from a Mac OS X
1957
CD or compile them by hand.
1958

    
1959
@itemize
1960

    
1961
@item On x86, you can just try to launch any process by using the native
1962
libraries:
1963

    
1964
@example 
1965
qemu-i386 /bin/ls
1966
@end example
1967

    
1968
or to run the ppc version of the executable:
1969

    
1970
@example 
1971
qemu-ppc /bin/ls
1972
@end example
1973

    
1974
@item On ppc, you'll have to tell qemu where your x86 libraries (and dynamic linker)
1975
are installed:
1976

    
1977
@example 
1978
qemu-i386 -L /opt/x86_root/ /bin/ls
1979
@end example
1980

    
1981
@code{-L /opt/x86_root/} tells that the dynamic linker (dyld) path is in
1982
@file{/opt/x86_root/usr/bin/dyld}.
1983

    
1984
@end itemize
1985

    
1986
@node Mac OS X/Darwin Command line options
1987
@subsection Command line options
1988

    
1989
@example
1990
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1991
@end example
1992

    
1993
@table @option
1994
@item -h
1995
Print the help
1996
@item -L path   
1997
Set the library root path (default=/)
1998
@item -s size
1999
Set the stack size in bytes (default=524288)
2000
@end table
2001

    
2002
Debug options:
2003

    
2004
@table @option
2005
@item -d
2006
Activate log (logfile=/tmp/qemu.log)
2007
@item -p pagesize
2008
Act as if the host page size was 'pagesize' bytes
2009
@end table
2010

    
2011
@node compilation
2012
@chapter Compilation from the sources
2013

    
2014
@menu
2015
* Linux/Unix::
2016
* Windows::
2017
* Cross compilation for Windows with Linux::
2018
* Mac OS X::
2019
@end menu
2020

    
2021
@node Linux/Unix
2022
@section Linux/Unix
2023

    
2024
@subsection Compilation
2025

    
2026
First you must decompress the sources:
2027
@example
2028
cd /tmp
2029
tar zxvf qemu-x.y.z.tar.gz
2030
cd qemu-x.y.z
2031
@end example
2032

    
2033
Then you configure QEMU and build it (usually no options are needed):
2034
@example
2035
./configure
2036
make
2037
@end example
2038

    
2039
Then type as root user:
2040
@example
2041
make install
2042
@end example
2043
to install QEMU in @file{/usr/local}.
2044

    
2045
@subsection GCC version
2046

    
2047
In order to compile QEMU successfully, it is very important that you
2048
have the right tools. The most important one is gcc. On most hosts and
2049
in particular on x86 ones, @emph{gcc 4.x is not supported}. If your
2050
Linux distribution includes a gcc 4.x compiler, you can usually
2051
install an older version (it is invoked by @code{gcc32} or
2052
@code{gcc34}). The QEMU configure script automatically probes for
2053
these older versions so that usally you don't have to do anything.
2054

    
2055
@node Windows
2056
@section Windows
2057

    
2058
@itemize
2059
@item Install the current versions of MSYS and MinGW from
2060
@url{http://www.mingw.org/}. You can find detailed installation
2061
instructions in the download section and the FAQ.
2062

    
2063
@item Download 
2064
the MinGW development library of SDL 1.2.x
2065
(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
2066
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
2067
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
2068
directory. Edit the @file{sdl-config} script so that it gives the
2069
correct SDL directory when invoked.
2070

    
2071
@item Extract the current version of QEMU.
2072
 
2073
@item Start the MSYS shell (file @file{msys.bat}).
2074

    
2075
@item Change to the QEMU directory. Launch @file{./configure} and 
2076
@file{make}.  If you have problems using SDL, verify that
2077
@file{sdl-config} can be launched from the MSYS command line.
2078

    
2079
@item You can install QEMU in @file{Program Files/Qemu} by typing 
2080
@file{make install}. Don't forget to copy @file{SDL.dll} in
2081
@file{Program Files/Qemu}.
2082

    
2083
@end itemize
2084

    
2085
@node Cross compilation for Windows with Linux
2086
@section Cross compilation for Windows with Linux
2087

    
2088
@itemize
2089
@item
2090
Install the MinGW cross compilation tools available at
2091
@url{http://www.mingw.org/}.
2092

    
2093
@item 
2094
Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
2095
unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
2096
variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
2097
the QEMU configuration script.
2098

    
2099
@item 
2100
Configure QEMU for Windows cross compilation:
2101
@example
2102
./configure --enable-mingw32
2103
@end example
2104
If necessary, you can change the cross-prefix according to the prefix
2105
choosen for the MinGW tools with --cross-prefix. You can also use
2106
--prefix to set the Win32 install path.
2107

    
2108
@item You can install QEMU in the installation directory by typing 
2109
@file{make install}. Don't forget to copy @file{SDL.dll} in the
2110
installation directory. 
2111

    
2112
@end itemize
2113

    
2114
Note: Currently, Wine does not seem able to launch
2115
QEMU for Win32.
2116

    
2117
@node Mac OS X
2118
@section Mac OS X
2119

    
2120
The Mac OS X patches are not fully merged in QEMU, so you should look
2121
at the QEMU mailing list archive to have all the necessary
2122
information.
2123

    
2124
@node Index
2125
@chapter Index
2126
@printindex cp
2127

    
2128
@bye