Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 3dbbdc25

History | View | Annotate | Download (40.2 kB)

1
\input texinfo @c -*- texinfo -*-
2

    
3
@iftex
4
@settitle QEMU CPU Emulator User Documentation
5
@titlepage
6
@sp 7
7
@center @titlefont{QEMU CPU Emulator User Documentation}
8
@sp 3
9
@end titlepage
10
@end iftex
11

    
12
@chapter Introduction
13

    
14
@section Features
15

    
16
QEMU is a FAST! processor emulator using dynamic translation to
17
achieve good emulation speed.
18

    
19
QEMU has two operating modes:
20

    
21
@itemize @minus
22

    
23
@item 
24
Full system emulation. In this mode, QEMU emulates a full system (for
25
example a PC), including a processor and various peripherals. It can
26
be used to launch different Operating Systems without rebooting the
27
PC or to debug system code.
28

    
29
@item 
30
User mode emulation (Linux host only). In this mode, QEMU can launch
31
Linux processes compiled for one CPU on another CPU. It can be used to
32
launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
33
to ease cross-compilation and cross-debugging.
34

    
35
@end itemize
36

    
37
QEMU can run without an host kernel driver and yet gives acceptable
38
performance. 
39

    
40
For system emulation, the following hardware targets are supported:
41
@itemize
42
@item PC (x86 or x86_64 processor)
43
@item PREP (PowerPC processor)
44
@item G3 BW PowerMac (PowerPC processor)
45
@item Mac99 PowerMac (PowerPC processor, in progress)
46
@item Sun4m (32-bit Sparc processor)
47
@item Sun4u (64-bit Sparc processor, in progress)
48
@item Malta board (32-bit MIPS processor, in progress)
49
@end itemize
50

    
51
For user emulation, x86, PowerPC, ARM, and Sparc32/64 CPUs are supported.
52

    
53
@chapter Installation
54

    
55
If you want to compile QEMU yourself, see @ref{compilation}.
56

    
57
@section Linux
58

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

    
62
@section Windows
63

    
64
Download the experimental binary installer at
65
@url{http://www.freeoszoo.org/download.php}.
66

    
67
@section Mac OS X
68

    
69
Download the experimental binary installer at
70
@url{http://www.freeoszoo.org/download.php}.
71

    
72
@chapter QEMU PC System emulator invocation
73

    
74
@section Introduction
75

    
76
@c man begin DESCRIPTION
77

    
78
The QEMU System emulator simulates the
79
following PC peripherals:
80

    
81
@itemize @minus
82
@item 
83
i440FX host PCI bridge and PIIX3 PCI to ISA bridge
84
@item
85
Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
86
extensions (hardware level, including all non standard modes).
87
@item
88
PS/2 mouse and keyboard
89
@item 
90
2 PCI IDE interfaces with hard disk and CD-ROM support
91
@item
92
Floppy disk
93
@item 
94
NE2000 PCI network adapters
95
@item
96
Serial ports
97
@item
98
Creative SoundBlaster 16 sound card
99
@item
100
ENSONIQ AudioPCI ES1370 sound card
101
@item
102
Adlib(OPL2) - Yamaha YM3812 compatible chip
103
@item
104
PCI UHCI USB controller and a virtual USB hub.
105
@end itemize
106

    
107
Note that adlib is only available when QEMU was configured with
108
-enable-adlib
109

    
110
QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
111
VGA BIOS.
112

    
113
QEMU uses YM3812 emulation by Tatsuyuki Satoh.
114

    
115
@c man end
116

    
117
@section Quick Start
118

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

    
121
@example
122
qemu linux.img
123
@end example
124

    
125
Linux should boot and give you a prompt.
126

    
127
@node sec_invocation
128
@section Invocation
129

    
130
@example
131
@c man begin SYNOPSIS
132
usage: qemu [options] [disk_image]
133
@c man end
134
@end example
135

    
136
@c man begin OPTIONS
137
@var{disk_image} is a raw hard disk image for IDE hard disk 0.
138

    
139
General options:
140
@table @option
141
@item -M machine
142
Select the emulated machine (@code{-M ?} for list)
143

    
144
@item -fda file
145
@item -fdb file
146
Use @var{file} as floppy disk 0/1 image (@xref{disk_images}). You can
147
use the host floppy by using @file{/dev/fd0} as filename.
148

    
149
@item -hda file
150
@item -hdb file
151
@item -hdc file
152
@item -hdd file
153
Use @var{file} as hard disk 0, 1, 2 or 3 image (@xref{disk_images}).
154

    
155
@item -cdrom file
156
Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and
157
@option{-cdrom} at the same time). You can use the host CD-ROM by
158
using @file{/dev/cdrom} as filename.
159

    
160
@item -boot [a|c|d]
161
Boot on floppy (a), hard disk (c) or CD-ROM (d). Hard disk boot is
162
the default.
163

    
164
@item -snapshot
165
Write to temporary files instead of disk image files. In this case,
166
the raw disk image you use is not written back. You can however force
167
the write back by pressing @key{C-a s} (@xref{disk_images}). 
168

    
169
@item -m megs
170
Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
171

    
172
@item -nographic
173

    
174
Normally, QEMU uses SDL to display the VGA output. With this option,
175
you can totally disable graphical output so that QEMU is a simple
176
command line application. The emulated serial port is redirected on
177
the console. Therefore, you can still use QEMU to debug a Linux kernel
178
with a serial console.
179

    
180
@item -k language
181

    
182
Use keyboard layout @var{language} (for example @code{fr} for
183
French). This option is only needed where it is not easy to get raw PC
184
keycodes (e.g. on Macs or with some X11 servers). You don't need to
185
use it on PC/Linux or PC/Windows hosts.
186

    
187
The available layouts are:
188
@example
189
ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
190
da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
191
de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
192
@end example
193

    
194
The default is @code{en-us}.
195

    
196
@item -enable-audio
197

    
198
Will enable audio and all the sound hardware QEMU was built with.
199

    
200
@item -audio-help
201

    
202
Will show the audio subsystem help: list of drivers, tunable
203
parameters.
204

    
205
@item -soundhw card1,card2,...
206

    
207
Enable audio and selected sound hardware. Use ? to print all
208
available sound hardware.
209

    
210
@example
211
qemu -soundhw sb16,adlib hda
212
qemu -soundhw es1370 hda
213
qemu -soundhw ?
214
@end example
215

    
216
@item -localtime
217
Set the real time clock to local time (the default is to UTC
218
time). This option is needed to have correct date in MS-DOS or
219
Windows.
220

    
221
@item -full-screen
222
Start in full screen.
223

    
224
@item -pidfile file
225
Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
226
from a script.
227

    
228
@item -win2k-hack
229
Use it when installing Windows 2000 to avoid a disk full bug. After
230
Windows 2000 is installed, you no longer need this option (this option
231
slows down the IDE transfers).
232

    
233
@end table
234

    
235
USB options:
236
@table @option
237

    
238
@item -usb
239
Enable the USB driver (will be the default soon)
240

    
241
@item -usbdevice devname
242
Add the USB device @var{devname}. See the monitor command
243
@code{usb_add} to have more information.
244
@end table
245

    
246
Network options:
247

    
248
@table @option
249

    
250
@item -n script      
251
Set TUN/TAP network init script [default=/etc/qemu-ifup]. This script
252
is launched to configure the host network interface (usually tun0)
253
corresponding to the virtual NE2000 card.
254

    
255
@item -nics n
256

    
257
Simulate @var{n} network cards (the default is 1).
258

    
259
@item -macaddr addr   
260

    
261
Set the mac address of the first interface (the format is
262
aa:bb:cc:dd:ee:ff in hexa). The mac address is incremented for each
263
new network interface.
264

    
265
@item -tun-fd fd
266
Assumes @var{fd} talks to a tap/tun host network interface and use
267
it. Read @url{http://bellard.org/qemu/tetrinet.html} to have an
268
example of its use.
269

    
270
@item -user-net 
271
Use the user mode network stack. This is the default if no tun/tap
272
network init script is found.
273

    
274
@item -tftp prefix
275
When using the user mode network stack, activate a built-in TFTP
276
server. All filenames beginning with @var{prefix} can be downloaded
277
from the host to the guest using a TFTP client. The TFTP client on the
278
guest must be configured in binary mode (use the command @code{bin} of
279
the Unix TFTP client). The host IP address on the guest is as usual
280
10.0.2.2.
281

    
282
@item -smb dir
283
When using the user mode network stack, activate a built-in SMB
284
server so that Windows OSes can access to the host files in @file{dir}
285
transparently.
286

    
287
In the guest Windows OS, the line:
288
@example
289
10.0.2.4 smbserver
290
@end example
291
must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
292
or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
293

    
294
Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
295

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

    
300
@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
301

    
302
When using the user mode network stack, redirect incoming TCP or UDP
303
connections to the host port @var{host-port} to the guest
304
@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
305
is not specified, its value is 10.0.2.15 (default address given by the
306
built-in DHCP server).
307

    
308
For example, to redirect host X11 connection from screen 1 to guest
309
screen 0, use the following:
310

    
311
@example
312
# on the host
313
qemu -redir tcp:6001::6000 [...]
314
# this host xterm should open in the guest X11 server
315
xterm -display :1
316
@end example
317

    
318
To redirect telnet connections from host port 5555 to telnet port on
319
the guest, use the following:
320

    
321
@example
322
# on the host
323
qemu -redir tcp:5555::23 [...]
324
telnet localhost 5555
325
@end example
326

    
327
Then when you use on the host @code{telnet localhost 5555}, you
328
connect to the guest telnet server.
329

    
330
@item -dummy-net 
331
Use the dummy network stack: no packet will be received by the network
332
cards.
333

    
334
@end table
335

    
336
Linux boot specific. When using this options, you can use a given
337
Linux kernel without installing it in the disk image. It can be useful
338
for easier testing of various kernels.
339

    
340
@table @option
341

    
342
@item -kernel bzImage 
343
Use @var{bzImage} as kernel image.
344

    
345
@item -append cmdline 
346
Use @var{cmdline} as kernel command line
347

    
348
@item -initrd file
349
Use @var{file} as initial ram disk.
350

    
351
@end table
352

    
353
Debug/Expert options:
354
@table @option
355

    
356
@item -serial dev
357
Redirect the virtual serial port to host device @var{dev}. Available
358
devices are:
359
@table @code
360
@item vc
361
Virtual console
362
@item pty
363
[Linux only] Pseudo TTY (a new PTY is automatically allocated)
364
@item null
365
void device
366
@item stdio
367
[Unix only] standard input/output
368
@end table
369
The default device is @code{vc} in graphical mode and @code{stdio} in
370
non graphical mode.
371

    
372
This option can be used several times to simulate up to 4 serials
373
ports.
374

    
375
@item -monitor dev
376
Redirect the monitor to host device @var{dev} (same devices as the
377
serial port).
378
The default device is @code{vc} in graphical mode and @code{stdio} in
379
non graphical mode.
380

    
381
@item -s
382
Wait gdb connection to port 1234 (@xref{gdb_usage}). 
383
@item -p port
384
Change gdb connection port.
385
@item -S
386
Do not start CPU at startup (you must type 'c' in the monitor).
387
@item -d             
388
Output log in /tmp/qemu.log
389
@item -hdachs c,h,s,[,t]
390
Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
391
@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
392
translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
393
all thoses parameters. This option is useful for old MS-DOS disk
394
images.
395

    
396
@item -std-vga
397
Simulate a standard VGA card with Bochs VBE extensions (default is
398
Cirrus Logic GD5446 PCI VGA)
399
@item -loadvm file
400
Start right away with a saved state (@code{loadvm} in monitor)
401
@end table
402

    
403
@c man end
404

    
405
@section Keys
406

    
407
@c man begin OPTIONS
408

    
409
During the graphical emulation, you can use the following keys:
410
@table @key
411
@item Ctrl-Alt-f
412
Toggle full screen
413

    
414
@item Ctrl-Alt-n
415
Switch to virtual console 'n'. Standard console mappings are:
416
@table @emph
417
@item 1
418
Target system display
419
@item 2
420
Monitor
421
@item 3
422
Serial port
423
@end table
424

    
425
@item Ctrl-Alt
426
Toggle mouse and keyboard grab.
427
@end table
428

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

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

    
435
@table @key
436
@item Ctrl-a h
437
Print this help
438
@item Ctrl-a x    
439
Exit emulatior
440
@item Ctrl-a s    
441
Save disk data back to file (if -snapshot)
442
@item Ctrl-a b
443
Send break (magic sysrq in Linux)
444
@item Ctrl-a c
445
Switch between console and monitor
446
@item Ctrl-a Ctrl-a
447
Send Ctrl-a
448
@end table
449
@c man end
450

    
451
@ignore
452

    
453
@setfilename qemu 
454
@settitle QEMU System Emulator
455

    
456
@c man begin SEEALSO
457
The HTML documentation of QEMU for more precise information and Linux
458
user mode emulator invocation.
459
@c man end
460

    
461
@c man begin AUTHOR
462
Fabrice Bellard
463
@c man end
464

    
465
@end ignore
466

    
467
@end ignore
468

    
469
@section QEMU Monitor
470

    
471
The QEMU monitor is used to give complex commands to the QEMU
472
emulator. You can use it to:
473

    
474
@itemize @minus
475

    
476
@item
477
Remove or insert removable medias images
478
(such as CD-ROM or floppies)
479

    
480
@item 
481
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
482
from a disk file.
483

    
484
@item Inspect the VM state without an external debugger.
485

    
486
@end itemize
487

    
488
@subsection Commands
489

    
490
The following commands are available:
491

    
492
@table @option
493

    
494
@item help or ? [cmd]
495
Show the help for all commands or just for command @var{cmd}.
496

    
497
@item commit  
498
Commit changes to the disk images (if -snapshot is used)
499

    
500
@item info subcommand 
501
show various information about the system state
502

    
503
@table @option
504
@item info network
505
show the network state
506
@item info block
507
show the block devices
508
@item info registers
509
show the cpu registers
510
@item info history
511
show the command line history
512
@item info pci
513
show emulated PCI device
514
@item info usb
515
show USB devices plugged on the virtual USB hub
516
@item info usbhost
517
show all USB host devices
518
@end table
519

    
520
@item q or quit
521
Quit the emulator.
522

    
523
@item eject [-f] device
524
Eject a removable media (use -f to force it).
525

    
526
@item change device filename
527
Change a removable media.
528

    
529
@item screendump filename
530
Save screen into PPM image @var{filename}.
531

    
532
@item log item1[,...]
533
Activate logging of the specified items to @file{/tmp/qemu.log}.
534

    
535
@item savevm filename
536
Save the whole virtual machine state to @var{filename}.
537

    
538
@item loadvm filename
539
Restore the whole virtual machine state from @var{filename}.
540

    
541
@item stop
542
Stop emulation.
543

    
544
@item c or cont
545
Resume emulation.
546

    
547
@item gdbserver [port]
548
Start gdbserver session (default port=1234)
549

    
550
@item x/fmt addr
551
Virtual memory dump starting at @var{addr}.
552

    
553
@item xp /fmt addr
554
Physical memory dump starting at @var{addr}.
555

    
556
@var{fmt} is a format which tells the command how to format the
557
data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
558

    
559
@table @var
560
@item count 
561
is the number of items to be dumped.
562

    
563
@item format
564
can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
565
c (char) or i (asm instruction).
566

    
567
@item size
568
can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
569
@code{h} or @code{w} can be specified with the @code{i} format to
570
respectively select 16 or 32 bit code instruction size.
571

    
572
@end table
573

    
574
Examples: 
575
@itemize
576
@item
577
Dump 10 instructions at the current instruction pointer:
578
@example 
579
(qemu) x/10i $eip
580
0x90107063:  ret
581
0x90107064:  sti
582
0x90107065:  lea    0x0(%esi,1),%esi
583
0x90107069:  lea    0x0(%edi,1),%edi
584
0x90107070:  ret
585
0x90107071:  jmp    0x90107080
586
0x90107073:  nop
587
0x90107074:  nop
588
0x90107075:  nop
589
0x90107076:  nop
590
@end example
591

    
592
@item
593
Dump 80 16 bit values at the start of the video memory.
594
@example 
595
(qemu) xp/80hx 0xb8000
596
0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
597
0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
598
0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
599
0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
600
0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
601
0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
602
0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
603
0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
604
0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
605
0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
606
@end example
607
@end itemize
608

    
609
@item p or print/fmt expr
610

    
611
Print expression value. Only the @var{format} part of @var{fmt} is
612
used.
613

    
614
@item sendkey keys
615

    
616
Send @var{keys} to the emulator. Use @code{-} to press several keys
617
simultaneously. Example:
618
@example
619
sendkey ctrl-alt-f1
620
@end example
621

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

    
625
@item system_reset
626

    
627
Reset the system.
628

    
629
@item usb_add devname
630

    
631
Plug the USB device devname to the QEMU virtual USB hub. @var{devname}
632
is either a virtual device name (for example @code{mouse}) or a host
633
USB device identifier. Host USB device identifiers have the following
634
syntax: @code{host:bus.addr} or @code{host:vendor_id:product_id}.
635

    
636
@item usb_del devname
637

    
638
Remove the USB device @var{devname} from the QEMU virtual USB
639
hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
640
command @code{info usb} to see the devices you can remove.
641

    
642
@end table
643

    
644
@subsection Integer expressions
645

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

    
650
@node disk_images
651
@section Disk Images
652

    
653
Since version 0.6.1, QEMU supports many disk image formats, including
654
growable disk images (their size increase as non empty sectors are
655
written), compressed and encrypted disk images.
656

    
657
@subsection Quick start for disk image creation
658

    
659
You can create a disk image with the command:
660
@example
661
qemu-img create myimage.img mysize
662
@end example
663
where @var{myimage.img} is the disk image filename and @var{mysize} is its
664
size in kilobytes. You can add an @code{M} suffix to give the size in
665
megabytes and a @code{G} suffix for gigabytes.
666

    
667
@xref{qemu_img_invocation} for more information.
668

    
669
@subsection Snapshot mode
670

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

    
677
@node qemu_img_invocation
678
@subsection @code{qemu-img} Invocation
679

    
680
@include qemu-img.texi
681

    
682
@section Network emulation
683

    
684
QEMU simulates up to 6 networks cards (NE2000 boards). Each card can
685
be connected to a specific host network interface.
686

    
687
@subsection Using tun/tap network interface
688

    
689
This is the standard way to emulate network. QEMU adds a virtual
690
network device on your host (called @code{tun0}), and you can then
691
configure it as if it was a real ethernet card.
692

    
693
As an example, you can download the @file{linux-test-xxx.tar.gz}
694
archive and copy the script @file{qemu-ifup} in @file{/etc} and
695
configure properly @code{sudo} so that the command @code{ifconfig}
696
contained in @file{qemu-ifup} can be executed as root. You must verify
697
that your host kernel supports the TUN/TAP network interfaces: the
698
device @file{/dev/net/tun} must be present.
699

    
700
See @ref{direct_linux_boot} to have an example of network use with a
701
Linux distribution.
702

    
703
@subsection Using the user mode network stack
704

    
705
By using the option @option{-user-net} or if you have no tun/tap init
706
script, QEMU uses a completely user mode network stack (you don't need
707
root priviledge to use the virtual network). The virtual network
708
configuration is the following:
709

    
710
@example
711

    
712
QEMU Virtual Machine    <------>  Firewall/DHCP server <-----> Internet
713
     (10.0.2.x)            |          (10.0.2.2)
714
                           |
715
                           ---->  DNS server (10.0.2.3)
716
                           |     
717
                           ---->  SMB server (10.0.2.4)
718
@end example
719

    
720
The QEMU VM behaves as if it was behind a firewall which blocks all
721
incoming connections. You can use a DHCP client to automatically
722
configure the network in the QEMU VM.
723

    
724
In order to check that the user mode network is working, you can ping
725
the address 10.0.2.2 and verify that you got an address in the range
726
10.0.2.x from the QEMU virtual DHCP server.
727

    
728
Note that @code{ping} is not supported reliably to the internet as it
729
would require root priviledges. It means you can only ping the local
730
router (10.0.2.2).
731

    
732
When using the built-in TFTP server, the router is also the TFTP
733
server.
734

    
735
When using the @option{-redir} option, TCP or UDP connections can be
736
redirected from the host to the guest. It allows for example to
737
redirect X11, telnet or SSH connections.
738

    
739
@node direct_linux_boot
740
@section Direct Linux Boot
741

    
742
This section explains how to launch a Linux kernel inside QEMU without
743
having to make a full bootable image. It is very useful for fast Linux
744
kernel testing. The QEMU network configuration is also explained.
745

    
746
@enumerate
747
@item
748
Download the archive @file{linux-test-xxx.tar.gz} containing a Linux
749
kernel and a disk image. 
750

    
751
@item Optional: If you want network support (for example to launch X11 examples), you
752
must copy the script @file{qemu-ifup} in @file{/etc} and configure
753
properly @code{sudo} so that the command @code{ifconfig} contained in
754
@file{qemu-ifup} can be executed as root. You must verify that your host
755
kernel supports the TUN/TAP network interfaces: the device
756
@file{/dev/net/tun} must be present.
757

    
758
When network is enabled, there is a virtual network connection between
759
the host kernel and the emulated kernel. The emulated kernel is seen
760
from the host kernel at IP address 172.20.0.2 and the host kernel is
761
seen from the emulated kernel at IP address 172.20.0.1.
762

    
763
@item Launch @code{qemu.sh}. You should have the following output:
764

    
765
@example
766
> ./qemu.sh 
767
Connected to host network interface: tun0
768
Linux version 2.4.21 (bellard@voyager.localdomain) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003
769
BIOS-provided physical RAM map:
770
 BIOS-e801: 0000000000000000 - 000000000009f000 (usable)
771
 BIOS-e801: 0000000000100000 - 0000000002000000 (usable)
772
32MB LOWMEM available.
773
On node 0 totalpages: 8192
774
zone(0): 4096 pages.
775
zone(1): 4096 pages.
776
zone(2): 0 pages.
777
Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe console=ttyS0
778
ide_setup: ide2=noprobe
779
ide_setup: ide3=noprobe
780
ide_setup: ide4=noprobe
781
ide_setup: ide5=noprobe
782
Initializing CPU#0
783
Detected 2399.621 MHz processor.
784
Console: colour EGA 80x25
785
Calibrating delay loop... 4744.80 BogoMIPS
786
Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data, 64k init, 0k highmem)
787
Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
788
Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
789
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
790
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
791
Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
792
CPU: Intel Pentium Pro stepping 03
793
Checking 'hlt' instruction... OK.
794
POSIX conformance testing by UNIFIX
795
Linux NET4.0 for Linux 2.4
796
Based upon Swansea University Computer Society NET3.039
797
Initializing RT netlink socket
798
apm: BIOS not found.
799
Starting kswapd
800
Journalled Block Device driver loaded
801
Detected PS/2 Mouse Port.
802
pty: 256 Unix98 ptys configured
803
Serial driver version 5.05c (2001-07-08) with no serial options enabled
804
ttyS00 at 0x03f8 (irq = 4) is a 16450
805
ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
806
Last modified Nov 1, 2000 by Paul Gortmaker
807
NE*000 ethercard probe at 0x300: 52 54 00 12 34 56
808
eth0: NE2000 found at 0x300, using IRQ 9.
809
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
810
Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
811
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
812
hda: QEMU HARDDISK, ATA DISK drive
813
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
814
hda: attached ide-disk driver.
815
hda: 20480 sectors (10 MB) w/256KiB Cache, CHS=20/16/63
816
Partition check:
817
 hda:
818
Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996
819
NET4: Linux TCP/IP 1.0 for NET4.0
820
IP Protocols: ICMP, UDP, TCP, IGMP
821
IP: routing cache hash table of 512 buckets, 4Kbytes
822
TCP: Hash tables configured (established 2048 bind 4096)
823
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
824
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
825
VFS: Mounted root (ext2 filesystem).
826
Freeing unused kernel memory: 64k freed
827
 
828
Linux version 2.4.21 (bellard@voyager.localdomain) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003
829
 
830
QEMU Linux test distribution (based on Redhat 9)
831
 
832
Type 'exit' to halt the system
833
 
834
sh-2.05b# 
835
@end example
836

    
837
@item
838
Then you can play with the kernel inside the virtual serial console. You
839
can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help
840
about the keys you can type inside the virtual serial console. In
841
particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as
842
the Magic SysRq key.
843

    
844
@item 
845
If the network is enabled, launch the script @file{/etc/linuxrc} in the
846
emulator (don't forget the leading dot):
847
@example
848
. /etc/linuxrc
849
@end example
850

    
851
Then enable X11 connections on your PC from the emulated Linux: 
852
@example
853
xhost +172.20.0.2
854
@end example
855

    
856
You can now launch @file{xterm} or @file{xlogo} and verify that you have
857
a real Virtual Linux system !
858

    
859
@end enumerate
860

    
861
NOTES:
862
@enumerate
863
@item 
864
A 2.5.74 kernel is also included in the archive. Just
865
replace the bzImage in qemu.sh to try it.
866

    
867
@item 
868
In order to exit cleanly from qemu, you can do a @emph{shutdown} inside
869
qemu. qemu will automatically exit when the Linux shutdown is done.
870

    
871
@item 
872
You can boot slightly faster by disabling the probe of non present IDE
873
interfaces. To do so, add the following options on the kernel command
874
line:
875
@example
876
ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
877
@end example
878

    
879
@item 
880
The example disk image is a modified version of the one made by Kevin
881
Lawton for the plex86 Project (@url{www.plex86.org}).
882

    
883
@end enumerate
884

    
885
@section USB emulation
886

    
887
QEMU emulates a PCI UHCI USB controller and a 8 port USB hub connected
888
to it. You can virtually plug to the hub virtual USB devices or real
889
host USB devices (experimental, works only on Linux hosts).
890

    
891
@subsection Using virtual USB devices
892

    
893
A virtual USB mouse device is available for testing in QEMU.
894

    
895
You can try it with the following monitor commands:
896

    
897
@example
898
# add the mouse device
899
(qemu) usb_add mouse 
900

    
901
# show the virtual USB devices plugged on the QEMU Virtual USB hub
902
(qemu) info usb
903
  Device 0.3, speed 12 Mb/s
904

    
905
# after some time you can try to remove the mouse
906
(qemu) usb_del 0.3
907
@end example
908

    
909
The option @option{-usbdevice} is similar to the monitor command
910
@code{usb_add}.
911

    
912
@subsection Using host USB devices on a Linux host
913

    
914
WARNING: this is an experimental feature. QEMU will slow down when
915
using it. USB devices requiring real time streaming (i.e. USB Video
916
Cameras) are not supported yet.
917

    
918
@enumerate
919
@item If you use an early Linux 2.4 kernel, verify that no Linux driver 
920
is actually using the USB device. A simple way to do that is simply to
921
disable the corresponding kernel module by renaming it from @file{mydriver.o}
922
to @file{mydriver.o.disabled}.
923

    
924
@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
925
@example
926
ls /proc/bus/usb
927
001  devices  drivers
928
@end example
929

    
930
@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:
931
@example
932
chown -R myuid /proc/bus/usb
933
@end example
934

    
935
@item Launch QEMU and do in the monitor:
936
@example 
937
info usbhost
938
  Device 1.2, speed 480 Mb/s
939
    Class 00: USB device 1234:5678, USB DISK
940
@end example
941
You should see the list of the devices you can use (Never try to use
942
hubs, it won't work).
943

    
944
@item Add the device in QEMU by using:
945
@example 
946
usb_add host:1234:5678
947
@end example
948

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

    
952
@item Now you can try to use the host USB device in QEMU.
953

    
954
@end enumerate
955

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

    
959
@node gdb_usage
960
@section GDB usage
961

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

    
965
In order to use gdb, launch qemu with the '-s' option. It will wait for a
966
gdb connection:
967
@example
968
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
969
Connected to host network interface: tun0
970
Waiting gdb connection on port 1234
971
@end example
972

    
973
Then launch gdb on the 'vmlinux' executable:
974
@example
975
> gdb vmlinux
976
@end example
977

    
978
In gdb, connect to QEMU:
979
@example
980
(gdb) target remote localhost:1234
981
@end example
982

    
983
Then you can use gdb normally. For example, type 'c' to launch the kernel:
984
@example
985
(gdb) c
986
@end example
987

    
988
Here are some useful tips in order to use gdb on system code:
989

    
990
@enumerate
991
@item
992
Use @code{info reg} to display all the CPU registers.
993
@item
994
Use @code{x/10i $eip} to display the code at the PC position.
995
@item
996
Use @code{set architecture i8086} to dump 16 bit code. Then use
997
@code{x/10i $cs*16+*eip} to dump the code at the PC position.
998
@end enumerate
999

    
1000
@section Target OS specific information
1001

    
1002
@subsection Linux
1003

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

    
1008
When using a 2.6 guest Linux kernel, you should add the option
1009
@code{clock=pit} on the kernel command line because the 2.6 Linux
1010
kernels make very strict real time clock checks by default that QEMU
1011
cannot simulate exactly.
1012

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

    
1019
@subsection Windows
1020

    
1021
If you have a slow host, using Windows 95 is better as it gives the
1022
best speed. Windows 2000 is also a good choice.
1023

    
1024
@subsubsection SVGA graphic modes support
1025

    
1026
QEMU emulates a Cirrus Logic GD5446 Video
1027
card. All Windows versions starting from Windows 95 should recognize
1028
and use this graphic card. For optimal performances, use 16 bit color
1029
depth in the guest and the host OS.
1030

    
1031
@subsubsection CPU usage reduction
1032

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

    
1039
@subsubsection Windows 2000 disk full problem
1040

    
1041
Windows 2000 has a bug which gives a disk full problem during its
1042
installation. When installing it, use the @option{-win2k-hack} QEMU
1043
option to enable a specific workaround. After Windows 2000 is
1044
installed, you no longer need this option (this option slows down the
1045
IDE transfers).
1046

    
1047
@subsubsection Windows 2000 shutdown
1048

    
1049
Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1050
can. It comes from the fact that Windows 2000 does not automatically
1051
use the APM driver provided by the BIOS.
1052

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

    
1060
@subsubsection Share a directory between Unix and Windows
1061

    
1062
See @ref{sec_invocation} about the help of the option @option{-smb}.
1063

    
1064
@subsubsection Windows XP security problems
1065

    
1066
Some releases of Windows XP install correctly but give a security
1067
error when booting:
1068
@example
1069
A problem is preventing Windows from accurately checking the
1070
license for this computer. Error code: 0x800703e6.
1071
@end example
1072
The only known workaround is to boot in Safe mode
1073
without networking support. 
1074

    
1075
Future QEMU releases are likely to correct this bug.
1076

    
1077
@subsection MS-DOS and FreeDOS
1078

    
1079
@subsubsection CPU usage reduction
1080

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

    
1086
@chapter QEMU PowerPC System emulator invocation
1087

    
1088
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1089
or PowerMac PowerPC system.
1090

    
1091
QEMU emulates the following PowerMac peripherals:
1092

    
1093
@itemize @minus
1094
@item 
1095
UniNorth PCI Bridge 
1096
@item
1097
PCI VGA compatible card with VESA Bochs Extensions
1098
@item 
1099
2 PMAC IDE interfaces with hard disk and CD-ROM support
1100
@item 
1101
NE2000 PCI adapters
1102
@item
1103
Non Volatile RAM
1104
@item
1105
VIA-CUDA with ADB keyboard and mouse.
1106
@end itemize
1107

    
1108
QEMU emulates the following PREP peripherals:
1109

    
1110
@itemize @minus
1111
@item 
1112
PCI Bridge
1113
@item
1114
PCI VGA compatible card with VESA Bochs Extensions
1115
@item 
1116
2 IDE interfaces with hard disk and CD-ROM support
1117
@item
1118
Floppy disk
1119
@item 
1120
NE2000 network adapters
1121
@item
1122
Serial port
1123
@item
1124
PREP Non Volatile RAM
1125
@item
1126
PC compatible keyboard and mouse.
1127
@end itemize
1128

    
1129
QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
1130
@url{http://site.voila.fr/jmayer/OpenHackWare/index.htm}.
1131

    
1132
You can read the qemu PC system emulation chapter to have more
1133
informations about QEMU usage.
1134

    
1135
@c man begin OPTIONS
1136

    
1137
The following options are specific to the PowerPC emulation:
1138

    
1139
@table @option
1140

    
1141
@item -g WxH[xDEPTH]  
1142

    
1143
Set the initial VGA graphic mode. The default is 800x600x15.
1144

    
1145
@end table
1146

    
1147
@c man end 
1148

    
1149

    
1150
More information is available at
1151
@url{http://jocelyn.mayer.free.fr/qemu-ppc/}.
1152

    
1153
@chapter Sparc32 System emulator invocation
1154

    
1155
Use the executable @file{qemu-system-sparc} to simulate a JavaStation
1156
(sun4m architecture). The emulation is somewhat complete.
1157

    
1158
QEMU emulates the following sun4m peripherals:
1159

    
1160
@itemize @minus
1161
@item
1162
IOMMU
1163
@item
1164
TCX Frame buffer
1165
@item 
1166
Lance (Am7990) Ethernet
1167
@item
1168
Non Volatile RAM M48T08
1169
@item
1170
Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1171
and power/reset logic
1172
@item
1173
ESP SCSI controller with hard disk and CD-ROM support
1174
@item
1175
Floppy drive
1176
@end itemize
1177

    
1178
The number of peripherals is fixed in the architecture.
1179

    
1180
QEMU uses the Proll, a PROM replacement available at
1181
@url{http://people.redhat.com/zaitcev/linux/}. The required
1182
QEMU-specific patches are included with the sources.
1183

    
1184
A sample Linux 2.6 series kernel and ram disk image are available on
1185
the QEMU web site. Please note that currently neither Linux 2.4
1186
series, NetBSD, nor OpenBSD kernels work.
1187

    
1188
@c man begin OPTIONS
1189

    
1190
The following options are specific to the Sparc emulation:
1191

    
1192
@table @option
1193

    
1194
@item -g WxH
1195

    
1196
Set the initial TCX graphic mode. The default is 1024x768.
1197

    
1198
@end table
1199

    
1200
@c man end 
1201

    
1202
@chapter Sparc64 System emulator invocation
1203

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

    
1207
QEMU emulates the following sun4u peripherals:
1208

    
1209
@itemize @minus
1210
@item
1211
UltraSparc IIi APB PCI Bridge 
1212
@item
1213
PCI VGA compatible card with VESA Bochs Extensions
1214
@item
1215
Non Volatile RAM M48T59
1216
@item
1217
PC-compatible serial ports
1218
@end itemize
1219

    
1220
@chapter MIPS System emulator invocation
1221

    
1222
Use the executable @file{qemu-system-mips} to simulate a MIPS machine.
1223
The emulator begins to launch a Linux kernel.
1224

    
1225
@chapter QEMU User space emulator invocation
1226

    
1227
@section Quick Start
1228

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

    
1232
@itemize
1233

    
1234
@item On x86, you can just try to launch any process by using the native
1235
libraries:
1236

    
1237
@example 
1238
qemu-i386 -L / /bin/ls
1239
@end example
1240

    
1241
@code{-L /} tells that the x86 dynamic linker must be searched with a
1242
@file{/} prefix.
1243

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

    
1246
@example 
1247
qemu-i386 -L / qemu-i386 -L / /bin/ls
1248
@end example
1249

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

    
1254
@example
1255
unset LD_LIBRARY_PATH 
1256
@end example
1257

    
1258
Then you can launch the precompiled @file{ls} x86 executable:
1259

    
1260
@example
1261
qemu-i386 tests/i386/ls
1262
@end example
1263
You can look at @file{qemu-binfmt-conf.sh} so that
1264
QEMU is automatically launched by the Linux kernel when you try to
1265
launch x86 executables. It requires the @code{binfmt_misc} module in the
1266
Linux kernel.
1267

    
1268
@item The x86 version of QEMU is also included. You can try weird things such as:
1269
@example
1270
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1271
@end example
1272

    
1273
@end itemize
1274

    
1275
@section Wine launch
1276

    
1277
@itemize
1278

    
1279
@item Ensure that you have a working QEMU with the x86 glibc
1280
distribution (see previous section). In order to verify it, you must be
1281
able to do:
1282

    
1283
@example
1284
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1285
@end example
1286

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

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

    
1294
@item Then you can try the example @file{putty.exe}:
1295

    
1296
@example
1297
qemu-i386 /usr/local/qemu-i386/wine/bin/wine /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1298
@end example
1299

    
1300
@end itemize
1301

    
1302
@section Command line options
1303

    
1304
@example
1305
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1306
@end example
1307

    
1308
@table @option
1309
@item -h
1310
Print the help
1311
@item -L path   
1312
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1313
@item -s size
1314
Set the x86 stack size in bytes (default=524288)
1315
@end table
1316

    
1317
Debug options:
1318

    
1319
@table @option
1320
@item -d
1321
Activate log (logfile=/tmp/qemu.log)
1322
@item -p pagesize
1323
Act as if the host page size was 'pagesize' bytes
1324
@end table
1325

    
1326
@node compilation
1327
@chapter Compilation from the sources
1328

    
1329
@section Linux/Unix
1330

    
1331
@subsection Compilation
1332

    
1333
First you must decompress the sources:
1334
@example
1335
cd /tmp
1336
tar zxvf qemu-x.y.z.tar.gz
1337
cd qemu-x.y.z
1338
@end example
1339

    
1340
Then you configure QEMU and build it (usually no options are needed):
1341
@example
1342
./configure
1343
make
1344
@end example
1345

    
1346
Then type as root user:
1347
@example
1348
make install
1349
@end example
1350
to install QEMU in @file{/usr/local}.
1351

    
1352
@subsection Tested tool versions
1353

    
1354
In order to compile QEMU succesfully, it is very important that you
1355
have the right tools. The most important one is gcc. I cannot guaranty
1356
that QEMU works if you do not use a tested gcc version. Look at
1357
'configure' and 'Makefile' if you want to make a different gcc
1358
version work.
1359

    
1360
@example
1361
host      gcc      binutils      glibc    linux       distribution
1362
----------------------------------------------------------------------
1363
x86       3.2      2.13.2        2.1.3    2.4.18
1364
          2.96     2.11.93.0.2   2.2.5    2.4.18      Red Hat 7.3
1365
          3.2.2    2.13.90.0.18  2.3.2    2.4.20      Red Hat 9
1366

    
1367
PowerPC   3.3 [4]  2.13.90.0.18  2.3.1    2.4.20briq
1368
          3.2
1369

    
1370
Alpha     3.3 [1]  2.14.90.0.4   2.2.5    2.2.20 [2]  Debian 3.0
1371

    
1372
Sparc32   2.95.4   2.12.90.0.1   2.2.5    2.4.18      Debian 3.0
1373

    
1374
ARM       2.95.4   2.12.90.0.1   2.2.5    2.4.9 [3]   Debian 3.0
1375

    
1376
[1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
1377
    for gcc version >= 3.3.
1378
[2] Linux >= 2.4.20 is necessary for precise exception support
1379
    (untested).
1380
[3] 2.4.9-ac10-rmk2-np1-cerf2
1381

    
1382
[4] gcc 2.95.x generates invalid code when using too many register
1383
variables. You must use gcc 3.x on PowerPC.
1384
@end example
1385

    
1386
@section Windows
1387

    
1388
@itemize
1389
@item Install the current versions of MSYS and MinGW from
1390
@url{http://www.mingw.org/}. You can find detailed installation
1391
instructions in the download section and the FAQ.
1392

    
1393
@item Download 
1394
the MinGW development library of SDL 1.2.x
1395
(@file{SDL-devel-1.2.x-mingw32.tar.gz}) from
1396
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
1397
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1398
directory. Edit the @file{sdl-config} script so that it gives the
1399
correct SDL directory when invoked.
1400

    
1401
@item Extract the current version of QEMU.
1402
 
1403
@item Start the MSYS shell (file @file{msys.bat}).
1404

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

    
1409
@item You can install QEMU in @file{Program Files/Qemu} by typing 
1410
@file{make install}. Don't forget to copy @file{SDL.dll} in
1411
@file{Program Files/Qemu}.
1412

    
1413
@end itemize
1414

    
1415
@section Cross compilation for Windows with Linux
1416

    
1417
@itemize
1418
@item
1419
Install the MinGW cross compilation tools available at
1420
@url{http://www.mingw.org/}.
1421

    
1422
@item 
1423
Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1424
unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1425
variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1426
the QEMU configuration script.
1427

    
1428
@item 
1429
Configure QEMU for Windows cross compilation:
1430
@example
1431
./configure --enable-mingw32
1432
@end example
1433
If necessary, you can change the cross-prefix according to the prefix
1434
choosen for the MinGW tools with --cross-prefix. You can also use
1435
--prefix to set the Win32 install path.
1436

    
1437
@item You can install QEMU in the installation directory by typing 
1438
@file{make install}. Don't forget to copy @file{SDL.dll} in the
1439
installation directory. 
1440

    
1441
@end itemize
1442

    
1443
Note: Currently, Wine does not seem able to launch
1444
QEMU for Win32.
1445

    
1446
@section Mac OS X
1447

    
1448
The Mac OS X patches are not fully merged in QEMU, so you should look
1449
at the QEMU mailing list archive to have all the necessary
1450
information.
1451