]> git.proxmox.com Git - qemu.git/blame - qemu-doc.texi
char dev ioctls
[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
f8d179e3
FB
366@item /dev/XXX
367[Linux only]Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
368parameters are set according to the emulated ones.
369@item file:filename
370Write output to filename. No character can be read.
a0a821a4
FB
371@item stdio
372[Unix only] standard input/output
f8d179e3
FB
373@item pipe:filename
374[Unix only] name pipe @var{filename}
a0a821a4
FB
375@end table
376The default device is @code{vc} in graphical mode and @code{stdio} in
377non graphical mode.
378
05d5818c
FB
379This option can be used several times to simulate up to 4 serials
380ports.
381
a0a821a4
FB
382@item -monitor dev
383Redirect the monitor to host device @var{dev} (same devices as the
384serial port).
385The default device is @code{vc} in graphical mode and @code{stdio} in
386non graphical mode.
387
ec410fc9 388@item -s
0806e3f6 389Wait gdb connection to port 1234 (@xref{gdb_usage}).
ec410fc9
FB
390@item -p port
391Change gdb connection port.
52c00a5f
FB
392@item -S
393Do not start CPU at startup (you must type 'c' in the monitor).
ec410fc9 394@item -d
9d4520d0 395Output log in /tmp/qemu.log
46d4767d
FB
396@item -hdachs c,h,s,[,t]
397Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
398@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
399translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
400all thoses parameters. This option is useful for old MS-DOS disk
401images.
7c3fc84d 402
15a34c63
FB
403@item -std-vga
404Simulate a standard VGA card with Bochs VBE extensions (default is
405Cirrus Logic GD5446 PCI VGA)
d63d307f
FB
406@item -loadvm file
407Start right away with a saved state (@code{loadvm} in monitor)
ec410fc9
FB
408@end table
409
3e11db9a
FB
410@c man end
411
412@section Keys
413
414@c man begin OPTIONS
415
a1b74fe8
FB
416During the graphical emulation, you can use the following keys:
417@table @key
f9859310 418@item Ctrl-Alt-f
a1b74fe8 419Toggle full screen
a0a821a4 420
f9859310 421@item Ctrl-Alt-n
a0a821a4
FB
422Switch to virtual console 'n'. Standard console mappings are:
423@table @emph
424@item 1
425Target system display
426@item 2
427Monitor
428@item 3
429Serial port
a1b74fe8
FB
430@end table
431
f9859310 432@item Ctrl-Alt
a0a821a4
FB
433Toggle mouse and keyboard grab.
434@end table
435
3e11db9a
FB
436In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
437@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
438
a0a821a4
FB
439During emulation, if you are using the @option{-nographic} option, use
440@key{Ctrl-a h} to get terminal commands:
ec410fc9
FB
441
442@table @key
a1b74fe8 443@item Ctrl-a h
ec410fc9 444Print this help
a1b74fe8 445@item Ctrl-a x
ec410fc9 446Exit emulatior
a1b74fe8 447@item Ctrl-a s
1f47a922 448Save disk data back to file (if -snapshot)
a1b74fe8 449@item Ctrl-a b
1f673135 450Send break (magic sysrq in Linux)
a1b74fe8 451@item Ctrl-a c
1f673135 452Switch between console and monitor
a1b74fe8
FB
453@item Ctrl-a Ctrl-a
454Send Ctrl-a
ec410fc9 455@end table
0806e3f6
FB
456@c man end
457
458@ignore
459
460@setfilename qemu
461@settitle QEMU System Emulator
462
1f673135
FB
463@c man begin SEEALSO
464The HTML documentation of QEMU for more precise information and Linux
465user mode emulator invocation.
466@c man end
467
468@c man begin AUTHOR
469Fabrice Bellard
470@c man end
471
472@end ignore
473
474@end ignore
475
1f673135
FB
476@section QEMU Monitor
477
478The QEMU monitor is used to give complex commands to the QEMU
479emulator. You can use it to:
480
481@itemize @minus
482
483@item
484Remove or insert removable medias images
485(such as CD-ROM or floppies)
486
487@item
488Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
489from a disk file.
490
491@item Inspect the VM state without an external debugger.
492
493@end itemize
494
495@subsection Commands
496
497The following commands are available:
498
499@table @option
500
501@item help or ? [cmd]
502Show the help for all commands or just for command @var{cmd}.
503
504@item commit
505Commit changes to the disk images (if -snapshot is used)
506
507@item info subcommand
508show various information about the system state
509
510@table @option
511@item info network
512show the network state
513@item info block
514show the block devices
515@item info registers
516show the cpu registers
517@item info history
518show the command line history
b389dbfb
FB
519@item info pci
520show emulated PCI device
521@item info usb
522show USB devices plugged on the virtual USB hub
523@item info usbhost
524show all USB host devices
1f673135
FB
525@end table
526
527@item q or quit
528Quit the emulator.
529
530@item eject [-f] device
531Eject a removable media (use -f to force it).
532
533@item change device filename
534Change a removable media.
535
536@item screendump filename
537Save screen into PPM image @var{filename}.
538
539@item log item1[,...]
540Activate logging of the specified items to @file{/tmp/qemu.log}.
541
542@item savevm filename
543Save the whole virtual machine state to @var{filename}.
544
545@item loadvm filename
546Restore the whole virtual machine state from @var{filename}.
547
548@item stop
549Stop emulation.
550
551@item c or cont
552Resume emulation.
553
554@item gdbserver [port]
555Start gdbserver session (default port=1234)
556
557@item x/fmt addr
558Virtual memory dump starting at @var{addr}.
559
560@item xp /fmt addr
561Physical memory dump starting at @var{addr}.
562
563@var{fmt} is a format which tells the command how to format the
564data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
565
566@table @var
567@item count
568is the number of items to be dumped.
569
570@item format
571can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
572c (char) or i (asm instruction).
573
574@item size
52c00a5f
FB
575can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
576@code{h} or @code{w} can be specified with the @code{i} format to
577respectively select 16 or 32 bit code instruction size.
1f673135
FB
578
579@end table
580
581Examples:
582@itemize
583@item
584Dump 10 instructions at the current instruction pointer:
585@example
586(qemu) x/10i $eip
5870x90107063: ret
5880x90107064: sti
5890x90107065: lea 0x0(%esi,1),%esi
5900x90107069: lea 0x0(%edi,1),%edi
5910x90107070: ret
5920x90107071: jmp 0x90107080
5930x90107073: nop
5940x90107074: nop
5950x90107075: nop
5960x90107076: nop
597@end example
598
599@item
600Dump 80 16 bit values at the start of the video memory.
601@example
602(qemu) xp/80hx 0xb8000
6030x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
6040x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
6050x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
6060x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
6070x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
6080x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
6090x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
6100x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
6110x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
6120x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
613@end example
614@end itemize
615
616@item p or print/fmt expr
617
618Print expression value. Only the @var{format} part of @var{fmt} is
619used.
0806e3f6 620
a3a91a35
FB
621@item sendkey keys
622
623Send @var{keys} to the emulator. Use @code{-} to press several keys
624simultaneously. Example:
625@example
626sendkey ctrl-alt-f1
627@end example
628
629This command is useful to send keys that your graphical user interface
630intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
631
15a34c63
FB
632@item system_reset
633
634Reset the system.
635
b389dbfb
FB
636@item usb_add devname
637
638Plug the USB device devname to the QEMU virtual USB hub. @var{devname}
639is either a virtual device name (for example @code{mouse}) or a host
640USB device identifier. Host USB device identifiers have the following
641syntax: @code{host:bus.addr} or @code{host:vendor_id:product_id}.
642
643@item usb_del devname
644
645Remove the USB device @var{devname} from the QEMU virtual USB
646hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
647command @code{info usb} to see the devices you can remove.
648
1f673135 649@end table
0806e3f6 650
1f673135
FB
651@subsection Integer expressions
652
653The monitor understands integers expressions for every integer
654argument. You can use register names to get the value of specifics
655CPU registers by prefixing them with @emph{$}.
ec410fc9 656
1f47a922
FB
657@node disk_images
658@section Disk Images
659
acd935ef
FB
660Since version 0.6.1, QEMU supports many disk image formats, including
661growable disk images (their size increase as non empty sectors are
662written), compressed and encrypted disk images.
1f47a922 663
acd935ef
FB
664@subsection Quick start for disk image creation
665
666You can create a disk image with the command:
1f47a922 667@example
acd935ef 668qemu-img create myimage.img mysize
1f47a922 669@end example
acd935ef
FB
670where @var{myimage.img} is the disk image filename and @var{mysize} is its
671size in kilobytes. You can add an @code{M} suffix to give the size in
672megabytes and a @code{G} suffix for gigabytes.
673
674@xref{qemu_img_invocation} for more information.
1f47a922
FB
675
676@subsection Snapshot mode
677
678If you use the option @option{-snapshot}, all disk images are
679considered as read only. When sectors in written, they are written in
680a temporary file created in @file{/tmp}. You can however force the
acd935ef
FB
681write back to the raw disk images by using the @code{commit} monitor
682command (or @key{C-a s} in the serial console).
1f47a922 683
acd935ef
FB
684@node qemu_img_invocation
685@subsection @code{qemu-img} Invocation
1f47a922 686
acd935ef 687@include qemu-img.texi
05efe46e 688
9d4fb82e
FB
689@section Network emulation
690
691QEMU simulates up to 6 networks cards (NE2000 boards). Each card can
692be connected to a specific host network interface.
693
694@subsection Using tun/tap network interface
695
696This is the standard way to emulate network. QEMU adds a virtual
697network device on your host (called @code{tun0}), and you can then
698configure it as if it was a real ethernet card.
699
700As an example, you can download the @file{linux-test-xxx.tar.gz}
701archive and copy the script @file{qemu-ifup} in @file{/etc} and
702configure properly @code{sudo} so that the command @code{ifconfig}
703contained in @file{qemu-ifup} can be executed as root. You must verify
704that your host kernel supports the TUN/TAP network interfaces: the
705device @file{/dev/net/tun} must be present.
706
707See @ref{direct_linux_boot} to have an example of network use with a
708Linux distribution.
709
710@subsection Using the user mode network stack
711
443f1376
FB
712By using the option @option{-user-net} or if you have no tun/tap init
713script, QEMU uses a completely user mode network stack (you don't need
714root priviledge to use the virtual network). The virtual network
715configuration is the following:
9d4fb82e
FB
716
717@example
718
719QEMU Virtual Machine <------> Firewall/DHCP server <-----> Internet
720 (10.0.2.x) | (10.0.2.2)
721 |
2518bd0d
FB
722 ----> DNS server (10.0.2.3)
723 |
724 ----> SMB server (10.0.2.4)
9d4fb82e
FB
725@end example
726
727The QEMU VM behaves as if it was behind a firewall which blocks all
728incoming connections. You can use a DHCP client to automatically
729configure the network in the QEMU VM.
730
731In order to check that the user mode network is working, you can ping
732the address 10.0.2.2 and verify that you got an address in the range
73310.0.2.x from the QEMU virtual DHCP server.
734
b415a407
FB
735Note that @code{ping} is not supported reliably to the internet as it
736would require root priviledges. It means you can only ping the local
737router (10.0.2.2).
738
9bf05444
FB
739When using the built-in TFTP server, the router is also the TFTP
740server.
741
742When using the @option{-redir} option, TCP or UDP connections can be
743redirected from the host to the guest. It allows for example to
744redirect X11, telnet or SSH connections.
443f1376 745
9d4fb82e
FB
746@node direct_linux_boot
747@section Direct Linux Boot
1f673135
FB
748
749This section explains how to launch a Linux kernel inside QEMU without
750having to make a full bootable image. It is very useful for fast Linux
751kernel testing. The QEMU network configuration is also explained.
752
753@enumerate
754@item
755Download the archive @file{linux-test-xxx.tar.gz} containing a Linux
756kernel and a disk image.
757
758@item Optional: If you want network support (for example to launch X11 examples), you
759must copy the script @file{qemu-ifup} in @file{/etc} and configure
760properly @code{sudo} so that the command @code{ifconfig} contained in
761@file{qemu-ifup} can be executed as root. You must verify that your host
762kernel supports the TUN/TAP network interfaces: the device
763@file{/dev/net/tun} must be present.
764
765When network is enabled, there is a virtual network connection between
766the host kernel and the emulated kernel. The emulated kernel is seen
767from the host kernel at IP address 172.20.0.2 and the host kernel is
768seen from the emulated kernel at IP address 172.20.0.1.
769
770@item Launch @code{qemu.sh}. You should have the following output:
771
772@example
773> ./qemu.sh
774Connected to host network interface: tun0
775Linux 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
776BIOS-provided physical RAM map:
777 BIOS-e801: 0000000000000000 - 000000000009f000 (usable)
778 BIOS-e801: 0000000000100000 - 0000000002000000 (usable)
77932MB LOWMEM available.
780On node 0 totalpages: 8192
781zone(0): 4096 pages.
782zone(1): 4096 pages.
783zone(2): 0 pages.
784Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe console=ttyS0
785ide_setup: ide2=noprobe
786ide_setup: ide3=noprobe
787ide_setup: ide4=noprobe
788ide_setup: ide5=noprobe
789Initializing CPU#0
790Detected 2399.621 MHz processor.
791Console: colour EGA 80x25
792Calibrating delay loop... 4744.80 BogoMIPS
793Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data, 64k init, 0k highmem)
794Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
795Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
796Mount cache hash table entries: 512 (order: 0, 4096 bytes)
797Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
798Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
799CPU: Intel Pentium Pro stepping 03
800Checking 'hlt' instruction... OK.
801POSIX conformance testing by UNIFIX
802Linux NET4.0 for Linux 2.4
803Based upon Swansea University Computer Society NET3.039
804Initializing RT netlink socket
805apm: BIOS not found.
806Starting kswapd
807Journalled Block Device driver loaded
808Detected PS/2 Mouse Port.
809pty: 256 Unix98 ptys configured
810Serial driver version 5.05c (2001-07-08) with no serial options enabled
811ttyS00 at 0x03f8 (irq = 4) is a 16450
812ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
813Last modified Nov 1, 2000 by Paul Gortmaker
814NE*000 ethercard probe at 0x300: 52 54 00 12 34 56
815eth0: NE2000 found at 0x300, using IRQ 9.
816RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
817Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
818ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
819hda: QEMU HARDDISK, ATA DISK drive
820ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
821hda: attached ide-disk driver.
822hda: 20480 sectors (10 MB) w/256KiB Cache, CHS=20/16/63
823Partition check:
824 hda:
825Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996
826NET4: Linux TCP/IP 1.0 for NET4.0
827IP Protocols: ICMP, UDP, TCP, IGMP
828IP: routing cache hash table of 512 buckets, 4Kbytes
829TCP: Hash tables configured (established 2048 bind 4096)
830NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
831EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
832VFS: Mounted root (ext2 filesystem).
833Freeing unused kernel memory: 64k freed
834
835Linux 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
836
837QEMU Linux test distribution (based on Redhat 9)
838
839Type 'exit' to halt the system
840
841sh-2.05b#
842@end example
843
844@item
845Then you can play with the kernel inside the virtual serial console. You
846can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help
847about the keys you can type inside the virtual serial console. In
848particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as
849the Magic SysRq key.
850
851@item
852If the network is enabled, launch the script @file{/etc/linuxrc} in the
853emulator (don't forget the leading dot):
854@example
855. /etc/linuxrc
856@end example
857
858Then enable X11 connections on your PC from the emulated Linux:
859@example
860xhost +172.20.0.2
861@end example
862
863You can now launch @file{xterm} or @file{xlogo} and verify that you have
864a real Virtual Linux system !
865
866@end enumerate
867
868NOTES:
869@enumerate
870@item
871A 2.5.74 kernel is also included in the archive. Just
872replace the bzImage in qemu.sh to try it.
873
1f673135
FB
874@item
875In order to exit cleanly from qemu, you can do a @emph{shutdown} inside
876qemu. qemu will automatically exit when the Linux shutdown is done.
877
878@item
879You can boot slightly faster by disabling the probe of non present IDE
880interfaces. To do so, add the following options on the kernel command
881line:
882@example
883ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
884@end example
885
886@item
887The example disk image is a modified version of the one made by Kevin
888Lawton for the plex86 Project (@url{www.plex86.org}).
889
890@end enumerate
891
b389dbfb
FB
892@section USB emulation
893
894QEMU emulates a PCI UHCI USB controller and a 8 port USB hub connected
895to it. You can virtually plug to the hub virtual USB devices or real
896host USB devices (experimental, works only on Linux hosts).
897
898@subsection Using virtual USB devices
899
900A virtual USB mouse device is available for testing in QEMU.
901
902You can try it with the following monitor commands:
903
904@example
905# add the mouse device
906(qemu) usb_add mouse
907
908# show the virtual USB devices plugged on the QEMU Virtual USB hub
909(qemu) info usb
910 Device 0.3, speed 12 Mb/s
911
912# after some time you can try to remove the mouse
913(qemu) usb_del 0.3
914@end example
915
916The option @option{-usbdevice} is similar to the monitor command
917@code{usb_add}.
918
919@subsection Using host USB devices on a Linux host
920
921WARNING: this is an experimental feature. QEMU will slow down when
922using it. USB devices requiring real time streaming (i.e. USB Video
923Cameras) are not supported yet.
924
925@enumerate
926@item If you use an early Linux 2.4 kernel, verify that no Linux driver
927is actually using the USB device. A simple way to do that is simply to
928disable the corresponding kernel module by renaming it from @file{mydriver.o}
929to @file{mydriver.o.disabled}.
930
931@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
932@example
933ls /proc/bus/usb
934001 devices drivers
935@end example
936
937@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:
938@example
939chown -R myuid /proc/bus/usb
940@end example
941
942@item Launch QEMU and do in the monitor:
943@example
944info usbhost
945 Device 1.2, speed 480 Mb/s
946 Class 00: USB device 1234:5678, USB DISK
947@end example
948You should see the list of the devices you can use (Never try to use
949hubs, it won't work).
950
951@item Add the device in QEMU by using:
952@example
953usb_add host:1234:5678
954@end example
955
956Normally the guest OS should report that a new USB device is
957plugged. You can use the option @option{-usbdevice} to do the same.
958
959@item Now you can try to use the host USB device in QEMU.
960
961@end enumerate
962
963When relaunching QEMU, you may have to unplug and plug again the USB
964device to make it work again (this is a bug).
965
0806e3f6 966@node gdb_usage
da415d54
FB
967@section GDB usage
968
969QEMU has a primitive support to work with gdb, so that you can do
0806e3f6 970'Ctrl-C' while the virtual machine is running and inspect its state.
da415d54 971
9d4520d0 972In order to use gdb, launch qemu with the '-s' option. It will wait for a
da415d54
FB
973gdb connection:
974@example
6c9bf893 975> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
da415d54
FB
976Connected to host network interface: tun0
977Waiting gdb connection on port 1234
978@end example
979
980Then launch gdb on the 'vmlinux' executable:
981@example
982> gdb vmlinux
983@end example
984
985In gdb, connect to QEMU:
986@example
6c9bf893 987(gdb) target remote localhost:1234
da415d54
FB
988@end example
989
990Then you can use gdb normally. For example, type 'c' to launch the kernel:
991@example
992(gdb) c
993@end example
994
0806e3f6
FB
995Here are some useful tips in order to use gdb on system code:
996
997@enumerate
998@item
999Use @code{info reg} to display all the CPU registers.
1000@item
1001Use @code{x/10i $eip} to display the code at the PC position.
1002@item
1003Use @code{set architecture i8086} to dump 16 bit code. Then use
1004@code{x/10i $cs*16+*eip} to dump the code at the PC position.
1005@end enumerate
1006
1a084f3d
FB
1007@section Target OS specific information
1008
1009@subsection Linux
1010
15a34c63
FB
1011To have access to SVGA graphic modes under X11, use the @code{vesa} or
1012the @code{cirrus} X11 driver. For optimal performances, use 16 bit
1013color depth in the guest and the host OS.
1a084f3d 1014
e3371e62
FB
1015When using a 2.6 guest Linux kernel, you should add the option
1016@code{clock=pit} on the kernel command line because the 2.6 Linux
1017kernels make very strict real time clock checks by default that QEMU
1018cannot simulate exactly.
1019
7c3fc84d
FB
1020When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1021not activated because QEMU is slower with this patch. The QEMU
1022Accelerator Module is also much slower in this case. Earlier Fedora
1023Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporte this
1024patch by default. Newer kernels don't have it.
1025
1a084f3d
FB
1026@subsection Windows
1027
1028If you have a slow host, using Windows 95 is better as it gives the
1029best speed. Windows 2000 is also a good choice.
1030
e3371e62
FB
1031@subsubsection SVGA graphic modes support
1032
1033QEMU emulates a Cirrus Logic GD5446 Video
15a34c63
FB
1034card. All Windows versions starting from Windows 95 should recognize
1035and use this graphic card. For optimal performances, use 16 bit color
1036depth in the guest and the host OS.
1a084f3d 1037
e3371e62
FB
1038@subsubsection CPU usage reduction
1039
1040Windows 9x does not correctly use the CPU HLT
15a34c63
FB
1041instruction. The result is that it takes host CPU cycles even when
1042idle. You can install the utility from
1043@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
1044problem. Note that no such tool is needed for NT, 2000 or XP.
1a084f3d 1045
9d0a8e6f 1046@subsubsection Windows 2000 disk full problem
e3371e62 1047
9d0a8e6f
FB
1048Windows 2000 has a bug which gives a disk full problem during its
1049installation. When installing it, use the @option{-win2k-hack} QEMU
1050option to enable a specific workaround. After Windows 2000 is
1051installed, you no longer need this option (this option slows down the
1052IDE transfers).
e3371e62 1053
6cc721cf
FB
1054@subsubsection Windows 2000 shutdown
1055
1056Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1057can. It comes from the fact that Windows 2000 does not automatically
1058use the APM driver provided by the BIOS.
1059
1060In order to correct that, do the following (thanks to Struan
1061Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
1062Add/Troubleshoot a device => Add a new device & Next => No, select the
1063hardware from a list & Next => NT Apm/Legacy Support & Next => Next
1064(again) a few times. Now the driver is installed and Windows 2000 now
1065correctly instructs QEMU to shutdown at the appropriate moment.
1066
1067@subsubsection Share a directory between Unix and Windows
1068
1069See @ref{sec_invocation} about the help of the option @option{-smb}.
1070
e3371e62
FB
1071@subsubsection Windows XP security problems
1072
1073Some releases of Windows XP install correctly but give a security
1074error when booting:
1075@example
1076A problem is preventing Windows from accurately checking the
1077license for this computer. Error code: 0x800703e6.
1078@end example
1079The only known workaround is to boot in Safe mode
1080without networking support.
1081
1082Future QEMU releases are likely to correct this bug.
1083
a0a821a4
FB
1084@subsection MS-DOS and FreeDOS
1085
1086@subsubsection CPU usage reduction
1087
1088DOS does not correctly use the CPU HLT instruction. The result is that
1089it takes host CPU cycles even when idle. You can install the utility
1090from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
1091problem.
1092
15a34c63 1093@chapter QEMU PowerPC System emulator invocation
1a084f3d 1094
15a34c63
FB
1095Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1096or PowerMac PowerPC system.
1a084f3d 1097
b671f9ed 1098QEMU emulates the following PowerMac peripherals:
1a084f3d 1099
15a34c63
FB
1100@itemize @minus
1101@item
1102UniNorth PCI Bridge
1103@item
1104PCI VGA compatible card with VESA Bochs Extensions
1105@item
11062 PMAC IDE interfaces with hard disk and CD-ROM support
1107@item
1108NE2000 PCI adapters
1109@item
1110Non Volatile RAM
1111@item
1112VIA-CUDA with ADB keyboard and mouse.
1a084f3d
FB
1113@end itemize
1114
b671f9ed 1115QEMU emulates the following PREP peripherals:
52c00a5f
FB
1116
1117@itemize @minus
1118@item
15a34c63
FB
1119PCI Bridge
1120@item
1121PCI VGA compatible card with VESA Bochs Extensions
1122@item
52c00a5f
FB
11232 IDE interfaces with hard disk and CD-ROM support
1124@item
1125Floppy disk
1126@item
15a34c63 1127NE2000 network adapters
52c00a5f
FB
1128@item
1129Serial port
1130@item
1131PREP Non Volatile RAM
15a34c63
FB
1132@item
1133PC compatible keyboard and mouse.
52c00a5f
FB
1134@end itemize
1135
15a34c63
FB
1136QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
1137@url{http://site.voila.fr/jmayer/OpenHackWare/index.htm}.
1138
52c00a5f
FB
1139You can read the qemu PC system emulation chapter to have more
1140informations about QEMU usage.
1141
15a34c63
FB
1142@c man begin OPTIONS
1143
1144The following options are specific to the PowerPC emulation:
1145
1146@table @option
1147
15a34c63
FB
1148@item -g WxH[xDEPTH]
1149
1150Set the initial VGA graphic mode. The default is 800x600x15.
1151
1152@end table
1153
1154@c man end
1155
1156
52c00a5f
FB
1157More information is available at
1158@url{http://jocelyn.mayer.free.fr/qemu-ppc/}.
1159
3475187d 1160@chapter Sparc32 System emulator invocation
e80cfcfc
FB
1161
1162Use the executable @file{qemu-system-sparc} to simulate a JavaStation
3475187d 1163(sun4m architecture). The emulation is somewhat complete.
e80cfcfc 1164
b671f9ed 1165QEMU emulates the following sun4m peripherals:
e80cfcfc
FB
1166
1167@itemize @minus
3475187d 1168@item
e80cfcfc
FB
1169IOMMU
1170@item
1171TCX Frame buffer
1172@item
1173Lance (Am7990) Ethernet
1174@item
1175Non Volatile RAM M48T08
1176@item
3475187d
FB
1177Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1178and power/reset logic
1179@item
1180ESP SCSI controller with hard disk and CD-ROM support
1181@item
1182Floppy drive
e80cfcfc
FB
1183@end itemize
1184
3475187d
FB
1185The number of peripherals is fixed in the architecture.
1186
e80cfcfc 1187QEMU uses the Proll, a PROM replacement available at
3475187d
FB
1188@url{http://people.redhat.com/zaitcev/linux/}. The required
1189QEMU-specific patches are included with the sources.
1190
1191A sample Linux 2.6 series kernel and ram disk image are available on
1192the QEMU web site. Please note that currently neither Linux 2.4
1193series, NetBSD, nor OpenBSD kernels work.
1194
1195@c man begin OPTIONS
1196
1197The following options are specific to the Sparc emulation:
1198
1199@table @option
1200
1201@item -g WxH
1202
1203Set the initial TCX graphic mode. The default is 1024x768.
1204
1205@end table
1206
1207@c man end
1208
1209@chapter Sparc64 System emulator invocation
e80cfcfc 1210
3475187d
FB
1211Use the executable @file{qemu-system-sparc64} to simulate a Sun4u machine.
1212The emulator is not usable for anything yet.
b756921a 1213
83469015
FB
1214QEMU emulates the following sun4u peripherals:
1215
1216@itemize @minus
1217@item
1218UltraSparc IIi APB PCI Bridge
1219@item
1220PCI VGA compatible card with VESA Bochs Extensions
1221@item
1222Non Volatile RAM M48T59
1223@item
1224PC-compatible serial ports
1225@end itemize
1226
9d0a8e6f
FB
1227@chapter MIPS System emulator invocation
1228
1229Use the executable @file{qemu-system-mips} to simulate a MIPS machine.
1230The emulator begins to launch a Linux kernel.
1231
1f673135 1232@chapter QEMU User space emulator invocation
386405f7 1233
1f673135 1234@section Quick Start
df0f11a0 1235
1f673135
FB
1236In order to launch a Linux process, QEMU needs the process executable
1237itself and all the target (x86) dynamic libraries used by it.
386405f7 1238
1f673135 1239@itemize
386405f7 1240
1f673135
FB
1241@item On x86, you can just try to launch any process by using the native
1242libraries:
386405f7 1243
1f673135
FB
1244@example
1245qemu-i386 -L / /bin/ls
1246@end example
386405f7 1247
1f673135
FB
1248@code{-L /} tells that the x86 dynamic linker must be searched with a
1249@file{/} prefix.
386405f7 1250
1f673135 1251@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 1252
1f673135
FB
1253@example
1254qemu-i386 -L / qemu-i386 -L / /bin/ls
1255@end example
386405f7 1256
1f673135
FB
1257@item On non x86 CPUs, you need first to download at least an x86 glibc
1258(@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
1259@code{LD_LIBRARY_PATH} is not set:
df0f11a0 1260
1f673135
FB
1261@example
1262unset LD_LIBRARY_PATH
1263@end example
1eb87257 1264
1f673135 1265Then you can launch the precompiled @file{ls} x86 executable:
1eb87257 1266
1f673135
FB
1267@example
1268qemu-i386 tests/i386/ls
1269@end example
1270You can look at @file{qemu-binfmt-conf.sh} so that
1271QEMU is automatically launched by the Linux kernel when you try to
1272launch x86 executables. It requires the @code{binfmt_misc} module in the
1273Linux kernel.
1eb87257 1274
1f673135
FB
1275@item The x86 version of QEMU is also included. You can try weird things such as:
1276@example
1277qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1278@end example
1eb20527 1279
1f673135 1280@end itemize
1eb20527 1281
1f673135 1282@section Wine launch
1eb20527 1283
1f673135 1284@itemize
386405f7 1285
1f673135
FB
1286@item Ensure that you have a working QEMU with the x86 glibc
1287distribution (see previous section). In order to verify it, you must be
1288able to do:
386405f7 1289
1f673135
FB
1290@example
1291qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1292@end example
386405f7 1293
1f673135
FB
1294@item Download the binary x86 Wine install
1295(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
386405f7 1296
1f673135
FB
1297@item Configure Wine on your account. Look at the provided script
1298@file{/usr/local/qemu-i386/bin/wine-conf.sh}. Your previous
1299@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
386405f7 1300
1f673135 1301@item Then you can try the example @file{putty.exe}:
386405f7 1302
1f673135
FB
1303@example
1304qemu-i386 /usr/local/qemu-i386/wine/bin/wine /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1305@end example
386405f7 1306
1f673135 1307@end itemize
fd429f2f 1308
1f673135 1309@section Command line options
1eb20527 1310
1f673135
FB
1311@example
1312usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1313@end example
1eb20527 1314
1f673135
FB
1315@table @option
1316@item -h
1317Print the help
1318@item -L path
1319Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1320@item -s size
1321Set the x86 stack size in bytes (default=524288)
386405f7
FB
1322@end table
1323
1f673135 1324Debug options:
386405f7 1325
1f673135
FB
1326@table @option
1327@item -d
1328Activate log (logfile=/tmp/qemu.log)
1329@item -p pagesize
1330Act as if the host page size was 'pagesize' bytes
1331@end table
386405f7 1332
15a34c63
FB
1333@node compilation
1334@chapter Compilation from the sources
1335
7c3fc84d
FB
1336@section Linux/Unix
1337
1338@subsection Compilation
1339
1340First you must decompress the sources:
1341@example
1342cd /tmp
1343tar zxvf qemu-x.y.z.tar.gz
1344cd qemu-x.y.z
1345@end example
1346
1347Then you configure QEMU and build it (usually no options are needed):
1348@example
1349./configure
1350make
1351@end example
1352
1353Then type as root user:
1354@example
1355make install
1356@end example
1357to install QEMU in @file{/usr/local}.
1358
7c3fc84d
FB
1359@subsection Tested tool versions
1360
1361In order to compile QEMU succesfully, it is very important that you
1362have the right tools. The most important one is gcc. I cannot guaranty
1363that QEMU works if you do not use a tested gcc version. Look at
1364'configure' and 'Makefile' if you want to make a different gcc
1365version work.
1366
1367@example
1368host gcc binutils glibc linux distribution
1369----------------------------------------------------------------------
1370x86 3.2 2.13.2 2.1.3 2.4.18
1371 2.96 2.11.93.0.2 2.2.5 2.4.18 Red Hat 7.3
1372 3.2.2 2.13.90.0.18 2.3.2 2.4.20 Red Hat 9
1373
1374PowerPC 3.3 [4] 2.13.90.0.18 2.3.1 2.4.20briq
1375 3.2
1376
1377Alpha 3.3 [1] 2.14.90.0.4 2.2.5 2.2.20 [2] Debian 3.0
1378
1379Sparc32 2.95.4 2.12.90.0.1 2.2.5 2.4.18 Debian 3.0
1380
1381ARM 2.95.4 2.12.90.0.1 2.2.5 2.4.9 [3] Debian 3.0
1382
1383[1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
1384 for gcc version >= 3.3.
1385[2] Linux >= 2.4.20 is necessary for precise exception support
1386 (untested).
1387[3] 2.4.9-ac10-rmk2-np1-cerf2
1388
1389[4] gcc 2.95.x generates invalid code when using too many register
1390variables. You must use gcc 3.x on PowerPC.
1391@end example
15a34c63
FB
1392
1393@section Windows
1394
1395@itemize
1396@item Install the current versions of MSYS and MinGW from
1397@url{http://www.mingw.org/}. You can find detailed installation
1398instructions in the download section and the FAQ.
1399
1400@item Download
1401the MinGW development library of SDL 1.2.x
1402(@file{SDL-devel-1.2.x-mingw32.tar.gz}) from
1403@url{http://www.libsdl.org}. Unpack it in a temporary place, and
1404unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1405directory. Edit the @file{sdl-config} script so that it gives the
1406correct SDL directory when invoked.
1407
1408@item Extract the current version of QEMU.
1409
1410@item Start the MSYS shell (file @file{msys.bat}).
1411
1412@item Change to the QEMU directory. Launch @file{./configure} and
1413@file{make}. If you have problems using SDL, verify that
1414@file{sdl-config} can be launched from the MSYS command line.
1415
1416@item You can install QEMU in @file{Program Files/Qemu} by typing
1417@file{make install}. Don't forget to copy @file{SDL.dll} in
1418@file{Program Files/Qemu}.
1419
1420@end itemize
1421
1422@section Cross compilation for Windows with Linux
1423
1424@itemize
1425@item
1426Install the MinGW cross compilation tools available at
1427@url{http://www.mingw.org/}.
1428
1429@item
1430Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1431unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1432variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1433the QEMU configuration script.
1434
1435@item
1436Configure QEMU for Windows cross compilation:
1437@example
1438./configure --enable-mingw32
1439@end example
1440If necessary, you can change the cross-prefix according to the prefix
1441choosen for the MinGW tools with --cross-prefix. You can also use
1442--prefix to set the Win32 install path.
1443
1444@item You can install QEMU in the installation directory by typing
1445@file{make install}. Don't forget to copy @file{SDL.dll} in the
1446installation directory.
1447
1448@end itemize
1449
1450Note: Currently, Wine does not seem able to launch
1451QEMU for Win32.
1452
1453@section Mac OS X
1454
1455The Mac OS X patches are not fully merged in QEMU, so you should look
1456at the QEMU mailing list archive to have all the necessary
1457information.
1458