]> git.proxmox.com Git - mirror_qemu.git/blame - qemu-doc.texi
use softfloat types in softmmu_header.h (Paul Brook)
[mirror_qemu.git] / qemu-doc.texi
CommitLineData
386405f7
FB
1\input texinfo @c -*- texinfo -*-
2
0806e3f6 3@iftex
1f673135 4@settitle QEMU CPU Emulator User Documentation
386405f7
FB
5@titlepage
6@sp 7
1f673135 7@center @titlefont{QEMU CPU Emulator User Documentation}
386405f7
FB
8@sp 3
9@end titlepage
0806e3f6 10@end iftex
386405f7
FB
11
12@chapter Introduction
13
322d0c66 14@section Features
386405f7 15
1f673135
FB
16QEMU is a FAST! processor emulator using dynamic translation to
17achieve good emulation speed.
1eb20527
FB
18
19QEMU has two operating modes:
0806e3f6
FB
20
21@itemize @minus
22
23@item
1f673135 24Full system emulation. In this mode, QEMU emulates a full system (for
b671f9ed 25example a PC), including a processor and various peripherals. It can
1f673135
FB
26be used to launch different Operating Systems without rebooting the
27PC or to debug system code.
1eb20527 28
0806e3f6 29@item
1f673135
FB
30User mode emulation (Linux host only). In this mode, QEMU can launch
31Linux processes compiled for one CPU on another CPU. It can be used to
32launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
33to ease cross-compilation and cross-debugging.
1eb20527
FB
34
35@end itemize
36
7c3fc84d 37QEMU can run without an host kernel driver and yet gives acceptable
6f2f2b24 38performance.
322d0c66 39
52c00a5f
FB
40For system emulation, the following hardware targets are supported:
41@itemize
9d0a8e6f 42@item PC (x86 or x86_64 processor)
52c00a5f 43@item PREP (PowerPC processor)
9d0a8e6f
FB
44@item G3 BW PowerMac (PowerPC processor)
45@item Mac99 PowerMac (PowerPC processor, in progress)
3475187d
FB
46@item Sun4m (32-bit Sparc processor)
47@item Sun4u (64-bit Sparc processor, in progress)
9d0a8e6f 48@item Malta board (32-bit MIPS processor, in progress)
52c00a5f 49@end itemize
386405f7 50
3475187d 51For user emulation, x86, PowerPC, ARM, and Sparc32/64 CPUs are supported.
0806e3f6 52
5b9f457a
FB
53@chapter Installation
54
15a34c63
FB
55If you want to compile QEMU yourself, see @ref{compilation}.
56
1f673135
FB
57@section Linux
58
7c3fc84d
FB
59If a precompiled package is available for your distribution - you just
60have to install it. Otherwise, see @ref{compilation}.
5b9f457a 61
1f673135 62@section Windows
8cd0ac2f 63
15a34c63
FB
64Download the experimental binary installer at
65@url{http://www.freeoszoo.org/download.php}.
d691f669 66
1f673135 67@section Mac OS X
d691f669 68
15a34c63
FB
69Download the experimental binary installer at
70@url{http://www.freeoszoo.org/download.php}.
df0f11a0 71
52c00a5f 72@chapter QEMU PC System emulator invocation
1eb20527 73
0806e3f6
FB
74@section Introduction
75
76@c man begin DESCRIPTION
77
7c3fc84d 78The QEMU System emulator simulates the
b671f9ed 79following PC peripherals:
0806e3f6
FB
80
81@itemize @minus
15a34c63
FB
82@item
83i440FX host PCI bridge and PIIX3 PCI to ISA bridge
0806e3f6 84@item
15a34c63
FB
85Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
86extensions (hardware level, including all non standard modes).
0806e3f6
FB
87@item
88PS/2 mouse and keyboard
89@item
15a34c63 902 PCI IDE interfaces with hard disk and CD-ROM support
1f673135
FB
91@item
92Floppy disk
0806e3f6 93@item
15a34c63 94NE2000 PCI network adapters
0806e3f6 95@item
05d5818c
FB
96Serial ports
97@item
c0fe3827
FB
98Creative SoundBlaster 16 sound card
99@item
100ENSONIQ AudioPCI ES1370 sound card
101@item
102Adlib(OPL2) - Yamaha YM3812 compatible chip
b389dbfb
FB
103@item
104PCI UHCI USB controller and a virtual USB hub.
0806e3f6
FB
105@end itemize
106
c0fe3827
FB
107Note that adlib is only available when QEMU was configured with
108-enable-adlib
109
15a34c63
FB
110QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
111VGA BIOS.
112
c0fe3827
FB
113QEMU uses YM3812 emulation by Tatsuyuki Satoh.
114
0806e3f6
FB
115@c man end
116
1eb20527
FB
117@section Quick Start
118
285dc330 119Download and uncompress the linux image (@file{linux.img}) and type:
0806e3f6
FB
120
121@example
285dc330 122qemu linux.img
0806e3f6
FB
123@end example
124
125Linux should boot and give you a prompt.
126
6cc721cf 127@node sec_invocation
ec410fc9
FB
128@section Invocation
129
130@example
0806e3f6
FB
131@c man begin SYNOPSIS
132usage: qemu [options] [disk_image]
133@c man end
ec410fc9
FB
134@end example
135
0806e3f6 136@c man begin OPTIONS
9d4520d0 137@var{disk_image} is a raw hard disk image for IDE hard disk 0.
ec410fc9
FB
138
139General options:
140@table @option
3dbbdc25
FB
141@item -M machine
142Select the emulated machine (@code{-M ?} for list)
143
2be3bc02
FB
144@item -fda file
145@item -fdb file
be3edd95
FB
146Use @var{file} as floppy disk 0/1 image (@xref{disk_images}). You can
147use the host floppy by using @file{/dev/fd0} as filename.
2be3bc02 148
ec410fc9
FB
149@item -hda file
150@item -hdb file
181f1558
FB
151@item -hdc file
152@item -hdd file
2be3bc02 153Use @var{file} as hard disk 0, 1, 2 or 3 image (@xref{disk_images}).
1f47a922 154
181f1558
FB
155@item -cdrom file
156Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and
be3edd95
FB
157@option{-cdrom} at the same time). You can use the host CD-ROM by
158using @file{/dev/cdrom} as filename.
181f1558 159
1f673135
FB
160@item -boot [a|c|d]
161Boot on floppy (a), hard disk (c) or CD-ROM (d). Hard disk boot is
2be3bc02 162the default.
1f47a922 163
181f1558 164@item -snapshot
1f47a922
FB
165Write to temporary files instead of disk image files. In this case,
166the raw disk image you use is not written back. You can however force
167the write back by pressing @key{C-a s} (@xref{disk_images}).
ec410fc9
FB
168
169@item -m megs
15a34c63 170Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
ec410fc9 171
0806e3f6
FB
172@item -nographic
173
174Normally, QEMU uses SDL to display the VGA output. With this option,
175you can totally disable graphical output so that QEMU is a simple
176command line application. The emulated serial port is redirected on
177the console. Therefore, you can still use QEMU to debug a Linux kernel
178with a serial console.
179
3d11d0eb
FB
180@item -k language
181
182Use keyboard layout @var{language} (for example @code{fr} for
183French). This option is only needed where it is not easy to get raw PC
184keycodes (e.g. on Macs or with some X11 servers). You don't need to
185use it on PC/Linux or PC/Windows hosts.
186
187The available layouts are:
188@example
189ar de-ch es fo fr-ca hu ja mk no pt-br sv
190da en-gb et fr fr-ch is lt nl pl ru th
191de en-us fi fr-be hr it lv nl-be pt sl tr
192@end example
193
194The default is @code{en-us}.
195
a8c490cd
FB
196@item -enable-audio
197
1d14ffa9
FB
198Will enable audio and all the sound hardware QEMU was built with.
199
200@item -audio-help
201
202Will show the audio subsystem help: list of drivers, tunable
203parameters.
204
205@item -soundhw card1,card2,...
206
207Enable audio and selected sound hardware. Use ? to print all
208available sound hardware.
209
210@example
211qemu -soundhw sb16,adlib hda
212qemu -soundhw es1370 hda
213qemu -soundhw ?
214@end example
a8c490cd 215
15a34c63
FB
216@item -localtime
217Set the real time clock to local time (the default is to UTC
218time). This option is needed to have correct date in MS-DOS or
219Windows.
220
d63d307f
FB
221@item -full-screen
222Start in full screen.
223
f7cce898
FB
224@item -pidfile file
225Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
226from a script.
227
9d0a8e6f
FB
228@item -win2k-hack
229Use it when installing Windows 2000 to avoid a disk full bug. After
230Windows 2000 is installed, you no longer need this option (this option
231slows down the IDE transfers).
232
0806e3f6
FB
233@end table
234
b389dbfb
FB
235USB options:
236@table @option
237
238@item -usb
239Enable the USB driver (will be the default soon)
240
241@item -usbdevice devname
242Add the USB device @var{devname}. See the monitor command
243@code{usb_add} to have more information.
244@end table
245
1f673135
FB
246Network options:
247
248@table @option
249
250@item -n script
52c00a5f
FB
251Set TUN/TAP network init script [default=/etc/qemu-ifup]. This script
252is launched to configure the host network interface (usually tun0)
1f673135
FB
253corresponding to the virtual NE2000 card.
254
3f1a88f4
FB
255@item -nics n
256
257Simulate @var{n} network cards (the default is 1).
258
1f673135
FB
259@item -macaddr addr
260
261Set the mac address of the first interface (the format is
262aa:bb:cc:dd:ee:ff in hexa). The mac address is incremented for each
263new network interface.
264
52c00a5f
FB
265@item -tun-fd fd
266Assumes @var{fd} talks to a tap/tun host network interface and use
267it. Read @url{http://bellard.org/qemu/tetrinet.html} to have an
268example of its use.
269
270@item -user-net
15a34c63
FB
271Use the user mode network stack. This is the default if no tun/tap
272network init script is found.
52c00a5f 273
9bf05444
FB
274@item -tftp prefix
275When using the user mode network stack, activate a built-in TFTP
276server. All filenames beginning with @var{prefix} can be downloaded
277from the host to the guest using a TFTP client. The TFTP client on the
278guest must be configured in binary mode (use the command @code{bin} of
279the Unix TFTP client). The host IP address on the guest is as usual
28010.0.2.2.
281
2518bd0d
FB
282@item -smb dir
283When using the user mode network stack, activate a built-in SMB
284server so that Windows OSes can access to the host files in @file{dir}
285transparently.
286
287In the guest Windows OS, the line:
288@example
28910.0.2.4 smbserver
290@end example
291must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
292or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
293
294Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
295
296Note that a SAMBA server must be installed on the host OS in
297@file{/usr/sbin/smbd}. QEMU was tested succesfully with smbd version
6cc721cf 2982.2.7a from the Red Hat 9 and version 3.0.10-1.fc3 from Fedora Core 3.
2518bd0d 299
9bf05444
FB
300@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
301
302When using the user mode network stack, redirect incoming TCP or UDP
303connections to the host port @var{host-port} to the guest
304@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
305is not specified, its value is 10.0.2.15 (default address given by the
306built-in DHCP server).
307
308For example, to redirect host X11 connection from screen 1 to guest
309screen 0, use the following:
310
311@example
312# on the host
313qemu -redir tcp:6001::6000 [...]
314# this host xterm should open in the guest X11 server
315xterm -display :1
316@end example
317
318To redirect telnet connections from host port 5555 to telnet port on
319the guest, use the following:
320
321@example
322# on the host
323qemu -redir tcp:5555::23 [...]
324telnet localhost 5555
325@end example
326
327Then when you use on the host @code{telnet localhost 5555}, you
328connect to the guest telnet server.
329
52c00a5f 330@item -dummy-net
15a34c63 331Use the dummy network stack: no packet will be received by the network
52c00a5f 332cards.
1f673135
FB
333
334@end table
335
336Linux boot specific. When using this options, you can use a given
337Linux kernel without installing it in the disk image. It can be useful
338for easier testing of various kernels.
339
0806e3f6
FB
340@table @option
341
342@item -kernel bzImage
343Use @var{bzImage} as kernel image.
344
345@item -append cmdline
346Use @var{cmdline} as kernel command line
347
348@item -initrd file
349Use @var{file} as initial ram disk.
350
ec410fc9
FB
351@end table
352
15a34c63 353Debug/Expert options:
ec410fc9 354@table @option
a0a821a4
FB
355
356@item -serial dev
357Redirect the virtual serial port to host device @var{dev}. Available
358devices are:
359@table @code
360@item vc
361Virtual console
362@item pty
363[Linux only] Pseudo TTY (a new PTY is automatically allocated)
364@item null
365void device
366@item stdio
367[Unix only] standard input/output
368@end table
369The default device is @code{vc} in graphical mode and @code{stdio} in
370non graphical mode.
371
05d5818c
FB
372This option can be used several times to simulate up to 4 serials
373ports.
374
a0a821a4
FB
375@item -monitor dev
376Redirect the monitor to host device @var{dev} (same devices as the
377serial port).
378The default device is @code{vc} in graphical mode and @code{stdio} in
379non graphical mode.
380
ec410fc9 381@item -s
0806e3f6 382Wait gdb connection to port 1234 (@xref{gdb_usage}).
ec410fc9
FB
383@item -p port
384Change gdb connection port.
52c00a5f
FB
385@item -S
386Do not start CPU at startup (you must type 'c' in the monitor).
ec410fc9 387@item -d
9d4520d0 388Output log in /tmp/qemu.log
46d4767d
FB
389@item -hdachs c,h,s,[,t]
390Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
391@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
392translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
393all thoses parameters. This option is useful for old MS-DOS disk
394images.
7c3fc84d 395
15a34c63
FB
396@item -std-vga
397Simulate a standard VGA card with Bochs VBE extensions (default is
398Cirrus Logic GD5446 PCI VGA)
d63d307f
FB
399@item -loadvm file
400Start right away with a saved state (@code{loadvm} in monitor)
ec410fc9
FB
401@end table
402
3e11db9a
FB
403@c man end
404
405@section Keys
406
407@c man begin OPTIONS
408
a1b74fe8
FB
409During the graphical emulation, you can use the following keys:
410@table @key
f9859310 411@item Ctrl-Alt-f
a1b74fe8 412Toggle full screen
a0a821a4 413
f9859310 414@item Ctrl-Alt-n
a0a821a4
FB
415Switch to virtual console 'n'. Standard console mappings are:
416@table @emph
417@item 1
418Target system display
419@item 2
420Monitor
421@item 3
422Serial port
a1b74fe8
FB
423@end table
424
f9859310 425@item Ctrl-Alt
a0a821a4
FB
426Toggle mouse and keyboard grab.
427@end table
428
3e11db9a
FB
429In 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
a0a821a4
FB
432During emulation, if you are using the @option{-nographic} option, use
433@key{Ctrl-a h} to get terminal commands:
ec410fc9
FB
434
435@table @key
a1b74fe8 436@item Ctrl-a h
ec410fc9 437Print this help
a1b74fe8 438@item Ctrl-a x
ec410fc9 439Exit emulatior
a1b74fe8 440@item Ctrl-a s
1f47a922 441Save disk data back to file (if -snapshot)
a1b74fe8 442@item Ctrl-a b
1f673135 443Send break (magic sysrq in Linux)
a1b74fe8 444@item Ctrl-a c
1f673135 445Switch between console and monitor
a1b74fe8
FB
446@item Ctrl-a Ctrl-a
447Send Ctrl-a
ec410fc9 448@end table
0806e3f6
FB
449@c man end
450
451@ignore
452
453@setfilename qemu
454@settitle QEMU System Emulator
455
1f673135
FB
456@c man begin SEEALSO
457The HTML documentation of QEMU for more precise information and Linux
458user mode emulator invocation.
459@c man end
460
461@c man begin AUTHOR
462Fabrice Bellard
463@c man end
464
465@end ignore
466
467@end ignore
468
1f673135
FB
469@section QEMU Monitor
470
471The QEMU monitor is used to give complex commands to the QEMU
472emulator. You can use it to:
473
474@itemize @minus
475
476@item
477Remove or insert removable medias images
478(such as CD-ROM or floppies)
479
480@item
481Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
482from a disk file.
483
484@item Inspect the VM state without an external debugger.
485
486@end itemize
487
488@subsection Commands
489
490The following commands are available:
491
492@table @option
493
494@item help or ? [cmd]
495Show the help for all commands or just for command @var{cmd}.
496
497@item commit
498Commit changes to the disk images (if -snapshot is used)
499
500@item info subcommand
501show various information about the system state
502
503@table @option
504@item info network
505show the network state
506@item info block
507show the block devices
508@item info registers
509show the cpu registers
510@item info history
511show the command line history
b389dbfb
FB
512@item info pci
513show emulated PCI device
514@item info usb
515show USB devices plugged on the virtual USB hub
516@item info usbhost
517show all USB host devices
1f673135
FB
518@end table
519
520@item q or quit
521Quit the emulator.
522
523@item eject [-f] device
524Eject a removable media (use -f to force it).
525
526@item change device filename
527Change a removable media.
528
529@item screendump filename
530Save screen into PPM image @var{filename}.
531
532@item log item1[,...]
533Activate logging of the specified items to @file{/tmp/qemu.log}.
534
535@item savevm filename
536Save the whole virtual machine state to @var{filename}.
537
538@item loadvm filename
539Restore the whole virtual machine state from @var{filename}.
540
541@item stop
542Stop emulation.
543
544@item c or cont
545Resume emulation.
546
547@item gdbserver [port]
548Start gdbserver session (default port=1234)
549
550@item x/fmt addr
551Virtual memory dump starting at @var{addr}.
552
553@item xp /fmt addr
554Physical memory dump starting at @var{addr}.
555
556@var{fmt} is a format which tells the command how to format the
557data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
558
559@table @var
560@item count
561is the number of items to be dumped.
562
563@item format
564can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
565c (char) or i (asm instruction).
566
567@item size
52c00a5f
FB
568can 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
570respectively select 16 or 32 bit code instruction size.
1f673135
FB
571
572@end table
573
574Examples:
575@itemize
576@item
577Dump 10 instructions at the current instruction pointer:
578@example
579(qemu) x/10i $eip
5800x90107063: ret
5810x90107064: sti
5820x90107065: lea 0x0(%esi,1),%esi
5830x90107069: lea 0x0(%edi,1),%edi
5840x90107070: ret
5850x90107071: jmp 0x90107080
5860x90107073: nop
5870x90107074: nop
5880x90107075: nop
5890x90107076: nop
590@end example
591
592@item
593Dump 80 16 bit values at the start of the video memory.
594@example
595(qemu) xp/80hx 0xb8000
5960x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
5970x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
5980x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
5990x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
6000x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
6010x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
6020x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
6030x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
6040x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
6050x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
606@end example
607@end itemize
608
609@item p or print/fmt expr
610
611Print expression value. Only the @var{format} part of @var{fmt} is
612used.
0806e3f6 613
a3a91a35
FB
614@item sendkey keys
615
616Send @var{keys} to the emulator. Use @code{-} to press several keys
617simultaneously. Example:
618@example
619sendkey ctrl-alt-f1
620@end example
621
622This command is useful to send keys that your graphical user interface
623intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
624
15a34c63
FB
625@item system_reset
626
627Reset the system.
628
b389dbfb
FB
629@item usb_add devname
630
631Plug the USB device devname to the QEMU virtual USB hub. @var{devname}
632is either a virtual device name (for example @code{mouse}) or a host
633USB device identifier. Host USB device identifiers have the following
634syntax: @code{host:bus.addr} or @code{host:vendor_id:product_id}.
635
636@item usb_del devname
637
638Remove the USB device @var{devname} from the QEMU virtual USB
639hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
640command @code{info usb} to see the devices you can remove.
641
1f673135 642@end table
0806e3f6 643
1f673135
FB
644@subsection Integer expressions
645
646The monitor understands integers expressions for every integer
647argument. You can use register names to get the value of specifics
648CPU registers by prefixing them with @emph{$}.
ec410fc9 649
1f47a922
FB
650@node disk_images
651@section Disk Images
652
acd935ef
FB
653Since version 0.6.1, QEMU supports many disk image formats, including
654growable disk images (their size increase as non empty sectors are
655written), compressed and encrypted disk images.
1f47a922 656
acd935ef
FB
657@subsection Quick start for disk image creation
658
659You can create a disk image with the command:
1f47a922 660@example
acd935ef 661qemu-img create myimage.img mysize
1f47a922 662@end example
acd935ef
FB
663where @var{myimage.img} is the disk image filename and @var{mysize} is its
664size in kilobytes. You can add an @code{M} suffix to give the size in
665megabytes and a @code{G} suffix for gigabytes.
666
667@xref{qemu_img_invocation} for more information.
1f47a922
FB
668
669@subsection Snapshot mode
670
671If you use the option @option{-snapshot}, all disk images are
672considered as read only. When sectors in written, they are written in
673a temporary file created in @file{/tmp}. You can however force the
acd935ef
FB
674write back to the raw disk images by using the @code{commit} monitor
675command (or @key{C-a s} in the serial console).
1f47a922 676
acd935ef
FB
677@node qemu_img_invocation
678@subsection @code{qemu-img} Invocation
1f47a922 679
acd935ef 680@include qemu-img.texi
05efe46e 681
9d4fb82e
FB
682@section Network emulation
683
684QEMU simulates up to 6 networks cards (NE2000 boards). Each card can
685be connected to a specific host network interface.
686
687@subsection Using tun/tap network interface
688
689This is the standard way to emulate network. QEMU adds a virtual
690network device on your host (called @code{tun0}), and you can then
691configure it as if it was a real ethernet card.
692
693As an example, you can download the @file{linux-test-xxx.tar.gz}
694archive and copy the script @file{qemu-ifup} in @file{/etc} and
695configure properly @code{sudo} so that the command @code{ifconfig}
696contained in @file{qemu-ifup} can be executed as root. You must verify
697that your host kernel supports the TUN/TAP network interfaces: the
698device @file{/dev/net/tun} must be present.
699
700See @ref{direct_linux_boot} to have an example of network use with a
701Linux distribution.
702
703@subsection Using the user mode network stack
704
443f1376
FB
705By using the option @option{-user-net} or if you have no tun/tap init
706script, QEMU uses a completely user mode network stack (you don't need
707root priviledge to use the virtual network). The virtual network
708configuration is the following:
9d4fb82e
FB
709
710@example
711
712QEMU Virtual Machine <------> Firewall/DHCP server <-----> Internet
713 (10.0.2.x) | (10.0.2.2)
714 |
2518bd0d
FB
715 ----> DNS server (10.0.2.3)
716 |
717 ----> SMB server (10.0.2.4)
9d4fb82e
FB
718@end example
719
720The QEMU VM behaves as if it was behind a firewall which blocks all
721incoming connections. You can use a DHCP client to automatically
722configure the network in the QEMU VM.
723
724In order to check that the user mode network is working, you can ping
725the address 10.0.2.2 and verify that you got an address in the range
72610.0.2.x from the QEMU virtual DHCP server.
727
b415a407
FB
728Note that @code{ping} is not supported reliably to the internet as it
729would require root priviledges. It means you can only ping the local
730router (10.0.2.2).
731
9bf05444
FB
732When using the built-in TFTP server, the router is also the TFTP
733server.
734
735When using the @option{-redir} option, TCP or UDP connections can be
736redirected from the host to the guest. It allows for example to
737redirect X11, telnet or SSH connections.
443f1376 738
9d4fb82e
FB
739@node direct_linux_boot
740@section Direct Linux Boot
1f673135
FB
741
742This section explains how to launch a Linux kernel inside QEMU without
743having to make a full bootable image. It is very useful for fast Linux
744kernel testing. The QEMU network configuration is also explained.
745
746@enumerate
747@item
748Download the archive @file{linux-test-xxx.tar.gz} containing a Linux
749kernel and a disk image.
750
751@item Optional: If you want network support (for example to launch X11 examples), you
752must copy the script @file{qemu-ifup} in @file{/etc} and configure
753properly @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
755kernel supports the TUN/TAP network interfaces: the device
756@file{/dev/net/tun} must be present.
757
758When network is enabled, there is a virtual network connection between
759the host kernel and the emulated kernel. The emulated kernel is seen
760from the host kernel at IP address 172.20.0.2 and the host kernel is
761seen 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
767Connected to host network interface: tun0
768Linux 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
769BIOS-provided physical RAM map:
770 BIOS-e801: 0000000000000000 - 000000000009f000 (usable)
771 BIOS-e801: 0000000000100000 - 0000000002000000 (usable)
77232MB LOWMEM available.
773On node 0 totalpages: 8192
774zone(0): 4096 pages.
775zone(1): 4096 pages.
776zone(2): 0 pages.
777Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe console=ttyS0
778ide_setup: ide2=noprobe
779ide_setup: ide3=noprobe
780ide_setup: ide4=noprobe
781ide_setup: ide5=noprobe
782Initializing CPU#0
783Detected 2399.621 MHz processor.
784Console: colour EGA 80x25
785Calibrating delay loop... 4744.80 BogoMIPS
786Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data, 64k init, 0k highmem)
787Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
788Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
789Mount cache hash table entries: 512 (order: 0, 4096 bytes)
790Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
791Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
792CPU: Intel Pentium Pro stepping 03
793Checking 'hlt' instruction... OK.
794POSIX conformance testing by UNIFIX
795Linux NET4.0 for Linux 2.4
796Based upon Swansea University Computer Society NET3.039
797Initializing RT netlink socket
798apm: BIOS not found.
799Starting kswapd
800Journalled Block Device driver loaded
801Detected PS/2 Mouse Port.
802pty: 256 Unix98 ptys configured
803Serial driver version 5.05c (2001-07-08) with no serial options enabled
804ttyS00 at 0x03f8 (irq = 4) is a 16450
805ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
806Last modified Nov 1, 2000 by Paul Gortmaker
807NE*000 ethercard probe at 0x300: 52 54 00 12 34 56
808eth0: NE2000 found at 0x300, using IRQ 9.
809RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
810Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
811ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
812hda: QEMU HARDDISK, ATA DISK drive
813ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
814hda: attached ide-disk driver.
815hda: 20480 sectors (10 MB) w/256KiB Cache, CHS=20/16/63
816Partition check:
817 hda:
818Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996
819NET4: Linux TCP/IP 1.0 for NET4.0
820IP Protocols: ICMP, UDP, TCP, IGMP
821IP: routing cache hash table of 512 buckets, 4Kbytes
822TCP: Hash tables configured (established 2048 bind 4096)
823NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
824EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
825VFS: Mounted root (ext2 filesystem).
826Freeing unused kernel memory: 64k freed
827
828Linux 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
830QEMU Linux test distribution (based on Redhat 9)
831
832Type 'exit' to halt the system
833
834sh-2.05b#
835@end example
836
837@item
838Then you can play with the kernel inside the virtual serial console. You
839can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help
840about the keys you can type inside the virtual serial console. In
841particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as
842the Magic SysRq key.
843
844@item
845If the network is enabled, launch the script @file{/etc/linuxrc} in the
846emulator (don't forget the leading dot):
847@example
848. /etc/linuxrc
849@end example
850
851Then enable X11 connections on your PC from the emulated Linux:
852@example
853xhost +172.20.0.2
854@end example
855
856You can now launch @file{xterm} or @file{xlogo} and verify that you have
857a real Virtual Linux system !
858
859@end enumerate
860
861NOTES:
862@enumerate
863@item
864A 2.5.74 kernel is also included in the archive. Just
865replace the bzImage in qemu.sh to try it.
866
1f673135
FB
867@item
868In order to exit cleanly from qemu, you can do a @emph{shutdown} inside
869qemu. qemu will automatically exit when the Linux shutdown is done.
870
871@item
872You can boot slightly faster by disabling the probe of non present IDE
873interfaces. To do so, add the following options on the kernel command
874line:
875@example
876ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
877@end example
878
879@item
880The example disk image is a modified version of the one made by Kevin
881Lawton for the plex86 Project (@url{www.plex86.org}).
882
883@end enumerate
884
b389dbfb
FB
885@section USB emulation
886
887QEMU emulates a PCI UHCI USB controller and a 8 port USB hub connected
888to it. You can virtually plug to the hub virtual USB devices or real
889host USB devices (experimental, works only on Linux hosts).
890
891@subsection Using virtual USB devices
892
893A virtual USB mouse device is available for testing in QEMU.
894
895You 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
909The 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
914WARNING: this is an experimental feature. QEMU will slow down when
915using it. USB devices requiring real time streaming (i.e. USB Video
916Cameras) are not supported yet.
917
918@enumerate
919@item If you use an early Linux 2.4 kernel, verify that no Linux driver
920is actually using the USB device. A simple way to do that is simply to
921disable the corresponding kernel module by renaming it from @file{mydriver.o}
922to @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
926ls /proc/bus/usb
927001 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
932chown -R myuid /proc/bus/usb
933@end example
934
935@item Launch QEMU and do in the monitor:
936@example
937info usbhost
938 Device 1.2, speed 480 Mb/s
939 Class 00: USB device 1234:5678, USB DISK
940@end example
941You should see the list of the devices you can use (Never try to use
942hubs, it won't work).
943
944@item Add the device in QEMU by using:
945@example
946usb_add host:1234:5678
947@end example
948
949Normally the guest OS should report that a new USB device is
950plugged. 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
956When relaunching QEMU, you may have to unplug and plug again the USB
957device to make it work again (this is a bug).
958
0806e3f6 959@node gdb_usage
da415d54
FB
960@section GDB usage
961
962QEMU has a primitive support to work with gdb, so that you can do
0806e3f6 963'Ctrl-C' while the virtual machine is running and inspect its state.
da415d54 964
9d4520d0 965In order to use gdb, launch qemu with the '-s' option. It will wait for a
da415d54
FB
966gdb connection:
967@example
6c9bf893 968> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
da415d54
FB
969Connected to host network interface: tun0
970Waiting gdb connection on port 1234
971@end example
972
973Then launch gdb on the 'vmlinux' executable:
974@example
975> gdb vmlinux
976@end example
977
978In gdb, connect to QEMU:
979@example
6c9bf893 980(gdb) target remote localhost:1234
da415d54
FB
981@end example
982
983Then you can use gdb normally. For example, type 'c' to launch the kernel:
984@example
985(gdb) c
986@end example
987
0806e3f6
FB
988Here are some useful tips in order to use gdb on system code:
989
990@enumerate
991@item
992Use @code{info reg} to display all the CPU registers.
993@item
994Use @code{x/10i $eip} to display the code at the PC position.
995@item
996Use @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
1a084f3d
FB
1000@section Target OS specific information
1001
1002@subsection Linux
1003
15a34c63
FB
1004To have access to SVGA graphic modes under X11, use the @code{vesa} or
1005the @code{cirrus} X11 driver. For optimal performances, use 16 bit
1006color depth in the guest and the host OS.
1a084f3d 1007
e3371e62
FB
1008When 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
1010kernels make very strict real time clock checks by default that QEMU
1011cannot simulate exactly.
1012
7c3fc84d
FB
1013When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1014not activated because QEMU is slower with this patch. The QEMU
1015Accelerator Module is also much slower in this case. Earlier Fedora
1016Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporte this
1017patch by default. Newer kernels don't have it.
1018
1a084f3d
FB
1019@subsection Windows
1020
1021If you have a slow host, using Windows 95 is better as it gives the
1022best speed. Windows 2000 is also a good choice.
1023
e3371e62
FB
1024@subsubsection SVGA graphic modes support
1025
1026QEMU emulates a Cirrus Logic GD5446 Video
15a34c63
FB
1027card. All Windows versions starting from Windows 95 should recognize
1028and use this graphic card. For optimal performances, use 16 bit color
1029depth in the guest and the host OS.
1a084f3d 1030
e3371e62
FB
1031@subsubsection CPU usage reduction
1032
1033Windows 9x does not correctly use the CPU HLT
15a34c63
FB
1034instruction. The result is that it takes host CPU cycles even when
1035idle. You can install the utility from
1036@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
1037problem. Note that no such tool is needed for NT, 2000 or XP.
1a084f3d 1038
9d0a8e6f 1039@subsubsection Windows 2000 disk full problem
e3371e62 1040
9d0a8e6f
FB
1041Windows 2000 has a bug which gives a disk full problem during its
1042installation. When installing it, use the @option{-win2k-hack} QEMU
1043option to enable a specific workaround. After Windows 2000 is
1044installed, you no longer need this option (this option slows down the
1045IDE transfers).
e3371e62 1046
6cc721cf
FB
1047@subsubsection Windows 2000 shutdown
1048
1049Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1050can. It comes from the fact that Windows 2000 does not automatically
1051use the APM driver provided by the BIOS.
1052
1053In order to correct that, do the following (thanks to Struan
1054Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
1055Add/Troubleshoot a device => Add a new device & Next => No, select the
1056hardware from a list & Next => NT Apm/Legacy Support & Next => Next
1057(again) a few times. Now the driver is installed and Windows 2000 now
1058correctly instructs QEMU to shutdown at the appropriate moment.
1059
1060@subsubsection Share a directory between Unix and Windows
1061
1062See @ref{sec_invocation} about the help of the option @option{-smb}.
1063
e3371e62
FB
1064@subsubsection Windows XP security problems
1065
1066Some releases of Windows XP install correctly but give a security
1067error when booting:
1068@example
1069A problem is preventing Windows from accurately checking the
1070license for this computer. Error code: 0x800703e6.
1071@end example
1072The only known workaround is to boot in Safe mode
1073without networking support.
1074
1075Future QEMU releases are likely to correct this bug.
1076
a0a821a4
FB
1077@subsection MS-DOS and FreeDOS
1078
1079@subsubsection CPU usage reduction
1080
1081DOS does not correctly use the CPU HLT instruction. The result is that
1082it takes host CPU cycles even when idle. You can install the utility
1083from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
1084problem.
1085
15a34c63 1086@chapter QEMU PowerPC System emulator invocation
1a084f3d 1087
15a34c63
FB
1088Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1089or PowerMac PowerPC system.
1a084f3d 1090
b671f9ed 1091QEMU emulates the following PowerMac peripherals:
1a084f3d 1092
15a34c63
FB
1093@itemize @minus
1094@item
1095UniNorth PCI Bridge
1096@item
1097PCI VGA compatible card with VESA Bochs Extensions
1098@item
10992 PMAC IDE interfaces with hard disk and CD-ROM support
1100@item
1101NE2000 PCI adapters
1102@item
1103Non Volatile RAM
1104@item
1105VIA-CUDA with ADB keyboard and mouse.
1a084f3d
FB
1106@end itemize
1107
b671f9ed 1108QEMU emulates the following PREP peripherals:
52c00a5f
FB
1109
1110@itemize @minus
1111@item
15a34c63
FB
1112PCI Bridge
1113@item
1114PCI VGA compatible card with VESA Bochs Extensions
1115@item
52c00a5f
FB
11162 IDE interfaces with hard disk and CD-ROM support
1117@item
1118Floppy disk
1119@item
15a34c63 1120NE2000 network adapters
52c00a5f
FB
1121@item
1122Serial port
1123@item
1124PREP Non Volatile RAM
15a34c63
FB
1125@item
1126PC compatible keyboard and mouse.
52c00a5f
FB
1127@end itemize
1128
15a34c63
FB
1129QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
1130@url{http://site.voila.fr/jmayer/OpenHackWare/index.htm}.
1131
52c00a5f
FB
1132You can read the qemu PC system emulation chapter to have more
1133informations about QEMU usage.
1134
15a34c63
FB
1135@c man begin OPTIONS
1136
1137The following options are specific to the PowerPC emulation:
1138
1139@table @option
1140
15a34c63
FB
1141@item -g WxH[xDEPTH]
1142
1143Set the initial VGA graphic mode. The default is 800x600x15.
1144
1145@end table
1146
1147@c man end
1148
1149
52c00a5f
FB
1150More information is available at
1151@url{http://jocelyn.mayer.free.fr/qemu-ppc/}.
1152
3475187d 1153@chapter Sparc32 System emulator invocation
e80cfcfc
FB
1154
1155Use the executable @file{qemu-system-sparc} to simulate a JavaStation
3475187d 1156(sun4m architecture). The emulation is somewhat complete.
e80cfcfc 1157
b671f9ed 1158QEMU emulates the following sun4m peripherals:
e80cfcfc
FB
1159
1160@itemize @minus
3475187d 1161@item
e80cfcfc
FB
1162IOMMU
1163@item
1164TCX Frame buffer
1165@item
1166Lance (Am7990) Ethernet
1167@item
1168Non Volatile RAM M48T08
1169@item
3475187d
FB
1170Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1171and power/reset logic
1172@item
1173ESP SCSI controller with hard disk and CD-ROM support
1174@item
1175Floppy drive
e80cfcfc
FB
1176@end itemize
1177
3475187d
FB
1178The number of peripherals is fixed in the architecture.
1179
e80cfcfc 1180QEMU uses the Proll, a PROM replacement available at
3475187d
FB
1181@url{http://people.redhat.com/zaitcev/linux/}. The required
1182QEMU-specific patches are included with the sources.
1183
1184A sample Linux 2.6 series kernel and ram disk image are available on
1185the QEMU web site. Please note that currently neither Linux 2.4
1186series, NetBSD, nor OpenBSD kernels work.
1187
1188@c man begin OPTIONS
1189
1190The following options are specific to the Sparc emulation:
1191
1192@table @option
1193
1194@item -g WxH
1195
1196Set 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
e80cfcfc 1203
3475187d
FB
1204Use the executable @file{qemu-system-sparc64} to simulate a Sun4u machine.
1205The emulator is not usable for anything yet.
b756921a 1206
83469015
FB
1207QEMU emulates the following sun4u peripherals:
1208
1209@itemize @minus
1210@item
1211UltraSparc IIi APB PCI Bridge
1212@item
1213PCI VGA compatible card with VESA Bochs Extensions
1214@item
1215Non Volatile RAM M48T59
1216@item
1217PC-compatible serial ports
1218@end itemize
1219
9d0a8e6f
FB
1220@chapter MIPS System emulator invocation
1221
1222Use the executable @file{qemu-system-mips} to simulate a MIPS machine.
1223The emulator begins to launch a Linux kernel.
1224
1f673135 1225@chapter QEMU User space emulator invocation
386405f7 1226
1f673135 1227@section Quick Start
df0f11a0 1228
1f673135
FB
1229In order to launch a Linux process, QEMU needs the process executable
1230itself and all the target (x86) dynamic libraries used by it.
386405f7 1231
1f673135 1232@itemize
386405f7 1233
1f673135
FB
1234@item On x86, you can just try to launch any process by using the native
1235libraries:
386405f7 1236
1f673135
FB
1237@example
1238qemu-i386 -L / /bin/ls
1239@end example
386405f7 1240
1f673135
FB
1241@code{-L /} tells that the x86 dynamic linker must be searched with a
1242@file{/} prefix.
386405f7 1243
1f673135 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):
386405f7 1245
1f673135
FB
1246@example
1247qemu-i386 -L / qemu-i386 -L / /bin/ls
1248@end example
386405f7 1249
1f673135
FB
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:
df0f11a0 1253
1f673135
FB
1254@example
1255unset LD_LIBRARY_PATH
1256@end example
1eb87257 1257
1f673135 1258Then you can launch the precompiled @file{ls} x86 executable:
1eb87257 1259
1f673135
FB
1260@example
1261qemu-i386 tests/i386/ls
1262@end example
1263You can look at @file{qemu-binfmt-conf.sh} so that
1264QEMU is automatically launched by the Linux kernel when you try to
1265launch x86 executables. It requires the @code{binfmt_misc} module in the
1266Linux kernel.
1eb87257 1267
1f673135
FB
1268@item The x86 version of QEMU is also included. You can try weird things such as:
1269@example
1270qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1271@end example
1eb20527 1272
1f673135 1273@end itemize
1eb20527 1274
1f673135 1275@section Wine launch
1eb20527 1276
1f673135 1277@itemize
386405f7 1278
1f673135
FB
1279@item Ensure that you have a working QEMU with the x86 glibc
1280distribution (see previous section). In order to verify it, you must be
1281able to do:
386405f7 1282
1f673135
FB
1283@example
1284qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1285@end example
386405f7 1286
1f673135
FB
1287@item Download the binary x86 Wine install
1288(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
386405f7 1289
1f673135
FB
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}.
386405f7 1293
1f673135 1294@item Then you can try the example @file{putty.exe}:
386405f7 1295
1f673135
FB
1296@example
1297qemu-i386 /usr/local/qemu-i386/wine/bin/wine /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1298@end example
386405f7 1299
1f673135 1300@end itemize
fd429f2f 1301
1f673135 1302@section Command line options
1eb20527 1303
1f673135
FB
1304@example
1305usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1306@end example
1eb20527 1307
1f673135
FB
1308@table @option
1309@item -h
1310Print the help
1311@item -L path
1312Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1313@item -s size
1314Set the x86 stack size in bytes (default=524288)
386405f7
FB
1315@end table
1316
1f673135 1317Debug options:
386405f7 1318
1f673135
FB
1319@table @option
1320@item -d
1321Activate log (logfile=/tmp/qemu.log)
1322@item -p pagesize
1323Act as if the host page size was 'pagesize' bytes
1324@end table
386405f7 1325
15a34c63
FB
1326@node compilation
1327@chapter Compilation from the sources
1328
7c3fc84d
FB
1329@section Linux/Unix
1330
1331@subsection Compilation
1332
1333First you must decompress the sources:
1334@example
1335cd /tmp
1336tar zxvf qemu-x.y.z.tar.gz
1337cd qemu-x.y.z
1338@end example
1339
1340Then you configure QEMU and build it (usually no options are needed):
1341@example
1342./configure
1343make
1344@end example
1345
1346Then type as root user:
1347@example
1348make install
1349@end example
1350to install QEMU in @file{/usr/local}.
1351
7c3fc84d
FB
1352@subsection Tested tool versions
1353
1354In order to compile QEMU succesfully, it is very important that you
1355have the right tools. The most important one is gcc. I cannot guaranty
1356that 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
1358version work.
1359
1360@example
1361host gcc binutils glibc linux distribution
1362----------------------------------------------------------------------
1363x86 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
1367PowerPC 3.3 [4] 2.13.90.0.18 2.3.1 2.4.20briq
1368 3.2
1369
1370Alpha 3.3 [1] 2.14.90.0.4 2.2.5 2.2.20 [2] Debian 3.0
1371
1372Sparc32 2.95.4 2.12.90.0.1 2.2.5 2.4.18 Debian 3.0
1373
1374ARM 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
1383variables. You must use gcc 3.x on PowerPC.
1384@end example
15a34c63
FB
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
1391instructions in the download section and the FAQ.
1392
1393@item Download
1394the 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
1397unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1398directory. Edit the @file{sdl-config} script so that it gives the
1399correct 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
1419Install the MinGW cross compilation tools available at
1420@url{http://www.mingw.org/}.
1421
1422@item
1423Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1424unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1425variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1426the QEMU configuration script.
1427
1428@item
1429Configure QEMU for Windows cross compilation:
1430@example
1431./configure --enable-mingw32
1432@end example
1433If necessary, you can change the cross-prefix according to the prefix
1434choosen 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
1439installation directory.
1440
1441@end itemize
1442
1443Note: Currently, Wine does not seem able to launch
1444QEMU for Win32.
1445
1446@section Mac OS X
1447
1448The Mac OS X patches are not fully merged in QEMU, so you should look
1449at the QEMU mailing list archive to have all the necessary
1450information.
1451