blob: 2693db7b5b75510437902617384e6e378cee3c29 [file] [log] [blame]
bellard386405f2003-03-23 21:28:45 +00001\input texinfo @c -*- texinfo -*-
2
bellard0806e3f2003-10-01 00:15:32 +00003@iftex
bellard1f673132004-04-04 15:21:17 +00004@settitle QEMU CPU Emulator User Documentation
bellard386405f2003-03-23 21:28:45 +00005@titlepage
6@sp 7
bellard1f673132004-04-04 15:21:17 +00007@center @titlefont{QEMU CPU Emulator User Documentation}
bellard386405f2003-03-23 21:28:45 +00008@sp 3
9@end titlepage
bellard0806e3f2003-10-01 00:15:32 +000010@end iftex
bellard386405f2003-03-23 21:28:45 +000011
12@chapter Introduction
13
bellard322d0c62003-06-15 23:29:28 +000014@section Features
bellard386405f2003-03-23 21:28:45 +000015
bellard1f673132004-04-04 15:21:17 +000016QEMU is a FAST! processor emulator using dynamic translation to
17achieve good emulation speed.
bellard1eb20522003-06-25 16:21:49 +000018
19QEMU has two operating modes:
bellard0806e3f2003-10-01 00:15:32 +000020
21@itemize @minus
22
23@item
bellard1f673132004-04-04 15:21:17 +000024Full system emulation. In this mode, QEMU emulates a full system (for
bellardb671f9e2005-04-30 15:08:33 +000025example a PC), including a processor and various peripherals. It can
bellard1f673132004-04-04 15:21:17 +000026be used to launch different Operating Systems without rebooting the
27PC or to debug system code.
bellard1eb20522003-06-25 16:21:49 +000028
bellard0806e3f2003-10-01 00:15:32 +000029@item
bellard1f673132004-04-04 15:21:17 +000030User 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.
bellard1eb20522003-06-25 16:21:49 +000034
35@end itemize
36
bellard7c3fc842005-02-10 21:46:47 +000037QEMU can run without an host kernel driver and yet gives acceptable
bellard6f2f2b22005-02-20 19:09:44 +000038performance.
bellard322d0c62003-06-15 23:29:28 +000039
bellard52c00a52004-04-25 21:27:03 +000040For system emulation, the following hardware targets are supported:
41@itemize
42@item PC (x86 processor)
43@item PREP (PowerPC processor)
bellard15a34c62004-07-08 21:26:26 +000044@item PowerMac (PowerPC processor, in progress)
bellardb7569212005-03-13 09:43:05 +000045@item Sun4m (Sparc processor, in progress)
bellard52c00a52004-04-25 21:27:03 +000046@end itemize
bellard386405f2003-03-23 21:28:45 +000047
bellard1f673132004-04-04 15:21:17 +000048For user emulation, x86, PowerPC, ARM, and SPARC CPUs are supported.
bellard0806e3f2003-10-01 00:15:32 +000049
bellard5b9f4572003-10-28 00:49:54 +000050@chapter Installation
51
bellard15a34c62004-07-08 21:26:26 +000052If you want to compile QEMU yourself, see @ref{compilation}.
53
bellard1f673132004-04-04 15:21:17 +000054@section Linux
55
bellard7c3fc842005-02-10 21:46:47 +000056If a precompiled package is available for your distribution - you just
57have to install it. Otherwise, see @ref{compilation}.
bellard5b9f4572003-10-28 00:49:54 +000058
bellard1f673132004-04-04 15:21:17 +000059@section Windows
bellard8cd0ac22004-05-12 19:09:16 +000060
bellard15a34c62004-07-08 21:26:26 +000061Download the experimental binary installer at
62@url{http://www.freeoszoo.org/download.php}.
bellardd691f662003-03-24 21:58:34 +000063
bellard1f673132004-04-04 15:21:17 +000064@section Mac OS X
bellardd691f662003-03-24 21:58:34 +000065
bellard15a34c62004-07-08 21:26:26 +000066Download the experimental binary installer at
67@url{http://www.freeoszoo.org/download.php}.
bellarddf0f11a2003-05-28 00:27:57 +000068
bellard52c00a52004-04-25 21:27:03 +000069@chapter QEMU PC System emulator invocation
bellard1eb20522003-06-25 16:21:49 +000070
bellard0806e3f2003-10-01 00:15:32 +000071@section Introduction
72
73@c man begin DESCRIPTION
74
bellard7c3fc842005-02-10 21:46:47 +000075The QEMU System emulator simulates the
bellardb671f9e2005-04-30 15:08:33 +000076following PC peripherals:
bellard0806e3f2003-10-01 00:15:32 +000077
78@itemize @minus
bellard15a34c62004-07-08 21:26:26 +000079@item
80i440FX host PCI bridge and PIIX3 PCI to ISA bridge
bellard0806e3f2003-10-01 00:15:32 +000081@item
bellard15a34c62004-07-08 21:26:26 +000082Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
83extensions (hardware level, including all non standard modes).
bellard0806e3f2003-10-01 00:15:32 +000084@item
85PS/2 mouse and keyboard
86@item
bellard15a34c62004-07-08 21:26:26 +0000872 PCI IDE interfaces with hard disk and CD-ROM support
bellard1f673132004-04-04 15:21:17 +000088@item
89Floppy disk
bellard0806e3f2003-10-01 00:15:32 +000090@item
bellard15a34c62004-07-08 21:26:26 +000091NE2000 PCI network adapters
bellard0806e3f2003-10-01 00:15:32 +000092@item
bellard05d58182004-08-24 21:12:04 +000093Serial ports
94@item
bellard181f1552003-11-13 01:47:16 +000095Soundblaster 16 card
bellard0806e3f2003-10-01 00:15:32 +000096@end itemize
97
bellard15a34c62004-07-08 21:26:26 +000098QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
99VGA BIOS.
100
bellard0806e3f2003-10-01 00:15:32 +0000101@c man end
102
bellard1eb20522003-06-25 16:21:49 +0000103@section Quick Start
104
bellard285dc332003-10-27 23:58:04 +0000105Download and uncompress the linux image (@file{linux.img}) and type:
bellard0806e3f2003-10-01 00:15:32 +0000106
107@example
bellard285dc332003-10-27 23:58:04 +0000108qemu linux.img
bellard0806e3f2003-10-01 00:15:32 +0000109@end example
110
111Linux should boot and give you a prompt.
112
bellard1f673132004-04-04 15:21:17 +0000113@section Invocation
114
115@example
116@c man begin SYNOPSIS
117usage: qemu [options] [disk_image]
118@c man end
119@end example
120
121@c man begin OPTIONS
122@var{disk_image} is a raw hard disk image for IDE hard disk 0.
123
124General options:
125@table @option
126@item -fda file
127@item -fdb file
bellardbe3edd92004-06-03 12:48:45 +0000128Use @var{file} as floppy disk 0/1 image (@xref{disk_images}). You can
129use the host floppy by using @file{/dev/fd0} as filename.
bellard1f673132004-04-04 15:21:17 +0000130
131@item -hda file
132@item -hdb file
133@item -hdc file
134@item -hdd file
135Use @var{file} as hard disk 0, 1, 2 or 3 image (@xref{disk_images}).
136
137@item -cdrom file
138Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and
bellardbe3edd92004-06-03 12:48:45 +0000139@option{-cdrom} at the same time). You can use the host CD-ROM by
140using @file{/dev/cdrom} as filename.
bellard1f673132004-04-04 15:21:17 +0000141
142@item -boot [a|c|d]
143Boot on floppy (a), hard disk (c) or CD-ROM (d). Hard disk boot is
144the default.
145
146@item -snapshot
147Write to temporary files instead of disk image files. In this case,
148the raw disk image you use is not written back. You can however force
149the write back by pressing @key{C-a s} (@xref{disk_images}).
150
151@item -m megs
bellard15a34c62004-07-08 21:26:26 +0000152Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
bellard1f673132004-04-04 15:21:17 +0000153
bellard1f673132004-04-04 15:21:17 +0000154@item -nographic
155
156Normally, QEMU uses SDL to display the VGA output. With this option,
157you can totally disable graphical output so that QEMU is a simple
158command line application. The emulated serial port is redirected on
159the console. Therefore, you can still use QEMU to debug a Linux kernel
160with a serial console.
161
bellard3d11d0e2004-12-12 16:56:30 +0000162@item -k language
163
164Use keyboard layout @var{language} (for example @code{fr} for
165French). This option is only needed where it is not easy to get raw PC
166keycodes (e.g. on Macs or with some X11 servers). You don't need to
167use it on PC/Linux or PC/Windows hosts.
168
169The available layouts are:
170@example
171ar de-ch es fo fr-ca hu ja mk no pt-br sv
172da en-gb et fr fr-ch is lt nl pl ru th
173de en-us fi fr-be hr it lv nl-be pt sl tr
174@end example
175
176The default is @code{en-us}.
177
bellarda8c490c2004-04-26 20:59:17 +0000178@item -enable-audio
179
180The SB16 emulation is disabled by default as it may give problems with
181Windows. You can enable it manually with this option.
182
bellard15a34c62004-07-08 21:26:26 +0000183@item -localtime
184Set the real time clock to local time (the default is to UTC
185time). This option is needed to have correct date in MS-DOS or
186Windows.
187
bellardd63d3072004-10-03 13:29:03 +0000188@item -full-screen
189Start in full screen.
190
bellardf7cce892004-12-08 22:21:25 +0000191@item -pidfile file
192Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
193from a script.
194
bellard1f673132004-04-04 15:21:17 +0000195@end table
196
197Network options:
198
199@table @option
200
201@item -n script
bellard52c00a52004-04-25 21:27:03 +0000202Set TUN/TAP network init script [default=/etc/qemu-ifup]. This script
203is launched to configure the host network interface (usually tun0)
bellard1f673132004-04-04 15:21:17 +0000204corresponding to the virtual NE2000 card.
205
bellard1f673132004-04-04 15:21:17 +0000206@item -macaddr addr
207
208Set the mac address of the first interface (the format is
209aa:bb:cc:dd:ee:ff in hexa). The mac address is incremented for each
210new network interface.
211
bellard52c00a52004-04-25 21:27:03 +0000212@item -tun-fd fd
213Assumes @var{fd} talks to a tap/tun host network interface and use
214it. Read @url{http://bellard.org/qemu/tetrinet.html} to have an
215example of its use.
216
217@item -user-net
bellard15a34c62004-07-08 21:26:26 +0000218Use the user mode network stack. This is the default if no tun/tap
219network init script is found.
bellard52c00a52004-04-25 21:27:03 +0000220
bellard9bf05442004-08-25 22:12:49 +0000221@item -tftp prefix
222When using the user mode network stack, activate a built-in TFTP
223server. All filenames beginning with @var{prefix} can be downloaded
224from the host to the guest using a TFTP client. The TFTP client on the
225guest must be configured in binary mode (use the command @code{bin} of
226the Unix TFTP client). The host IP address on the guest is as usual
22710.0.2.2.
228
bellard2518bd02004-09-30 22:35:13 +0000229@item -smb dir
230When using the user mode network stack, activate a built-in SMB
231server so that Windows OSes can access to the host files in @file{dir}
232transparently.
233
234In the guest Windows OS, the line:
235@example
23610.0.2.4 smbserver
237@end example
238must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
239or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
240
241Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
242
243Note that a SAMBA server must be installed on the host OS in
244@file{/usr/sbin/smbd}. QEMU was tested succesfully with smbd version
2452.2.7a from the Red Hat 9.
246
bellard9bf05442004-08-25 22:12:49 +0000247@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
248
249When using the user mode network stack, redirect incoming TCP or UDP
250connections to the host port @var{host-port} to the guest
251@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
252is not specified, its value is 10.0.2.15 (default address given by the
253built-in DHCP server).
254
255For example, to redirect host X11 connection from screen 1 to guest
256screen 0, use the following:
257
258@example
259# on the host
260qemu -redir tcp:6001::6000 [...]
261# this host xterm should open in the guest X11 server
262xterm -display :1
263@end example
264
265To redirect telnet connections from host port 5555 to telnet port on
266the guest, use the following:
267
268@example
269# on the host
270qemu -redir tcp:5555::23 [...]
271telnet localhost 5555
272@end example
273
274Then when you use on the host @code{telnet localhost 5555}, you
275connect to the guest telnet server.
276
bellard52c00a52004-04-25 21:27:03 +0000277@item -dummy-net
bellard15a34c62004-07-08 21:26:26 +0000278Use the dummy network stack: no packet will be received by the network
bellard52c00a52004-04-25 21:27:03 +0000279cards.
bellard1f673132004-04-04 15:21:17 +0000280
281@end table
282
283Linux boot specific. When using this options, you can use a given
284Linux kernel without installing it in the disk image. It can be useful
285for easier testing of various kernels.
286
287@table @option
288
289@item -kernel bzImage
290Use @var{bzImage} as kernel image.
291
292@item -append cmdline
293Use @var{cmdline} as kernel command line
294
295@item -initrd file
296Use @var{file} as initial ram disk.
297
298@end table
299
bellard15a34c62004-07-08 21:26:26 +0000300Debug/Expert options:
bellard1f673132004-04-04 15:21:17 +0000301@table @option
bellarda0a821a2004-07-14 17:38:57 +0000302
303@item -serial dev
304Redirect the virtual serial port to host device @var{dev}. Available
305devices are:
306@table @code
307@item vc
308Virtual console
309@item pty
310[Linux only] Pseudo TTY (a new PTY is automatically allocated)
311@item null
312void device
313@item stdio
314[Unix only] standard input/output
315@end table
316The default device is @code{vc} in graphical mode and @code{stdio} in
317non graphical mode.
318
bellard05d58182004-08-24 21:12:04 +0000319This option can be used several times to simulate up to 4 serials
320ports.
321
bellarda0a821a2004-07-14 17:38:57 +0000322@item -monitor dev
323Redirect the monitor to host device @var{dev} (same devices as the
324serial port).
325The default device is @code{vc} in graphical mode and @code{stdio} in
326non graphical mode.
327
bellard1f673132004-04-04 15:21:17 +0000328@item -s
329Wait gdb connection to port 1234 (@xref{gdb_usage}).
330@item -p port
331Change gdb connection port.
bellard52c00a52004-04-25 21:27:03 +0000332@item -S
333Do not start CPU at startup (you must type 'c' in the monitor).
bellard1f673132004-04-04 15:21:17 +0000334@item -d
335Output log in /tmp/qemu.log
bellard46d47672004-11-16 01:45:27 +0000336@item -hdachs c,h,s,[,t]
337Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
338@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
339translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
340all thoses parameters. This option is useful for old MS-DOS disk
341images.
bellard7c3fc842005-02-10 21:46:47 +0000342
bellard15a34c62004-07-08 21:26:26 +0000343@item -isa
344Simulate an ISA-only system (default is PCI system).
345@item -std-vga
346Simulate a standard VGA card with Bochs VBE extensions (default is
347Cirrus Logic GD5446 PCI VGA)
bellardd63d3072004-10-03 13:29:03 +0000348@item -loadvm file
349Start right away with a saved state (@code{loadvm} in monitor)
bellard1f673132004-04-04 15:21:17 +0000350@end table
351
bellard3e11db92004-07-14 17:47:14 +0000352@c man end
353
354@section Keys
355
356@c man begin OPTIONS
357
bellarda1b74fe2004-05-08 13:26:35 +0000358During the graphical emulation, you can use the following keys:
359@table @key
bellardf9859312004-10-03 14:33:10 +0000360@item Ctrl-Alt-f
bellarda1b74fe2004-05-08 13:26:35 +0000361Toggle full screen
bellarda0a821a2004-07-14 17:38:57 +0000362
bellardf9859312004-10-03 14:33:10 +0000363@item Ctrl-Alt-n
bellarda0a821a2004-07-14 17:38:57 +0000364Switch to virtual console 'n'. Standard console mappings are:
365@table @emph
366@item 1
367Target system display
368@item 2
369Monitor
370@item 3
371Serial port
bellarda1b74fe2004-05-08 13:26:35 +0000372@end table
373
bellardf9859312004-10-03 14:33:10 +0000374@item Ctrl-Alt
bellarda0a821a2004-07-14 17:38:57 +0000375Toggle mouse and keyboard grab.
376@end table
377
bellard3e11db92004-07-14 17:47:14 +0000378In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
379@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
380
bellarda0a821a2004-07-14 17:38:57 +0000381During emulation, if you are using the @option{-nographic} option, use
382@key{Ctrl-a h} to get terminal commands:
bellard1f673132004-04-04 15:21:17 +0000383
384@table @key
bellarda1b74fe2004-05-08 13:26:35 +0000385@item Ctrl-a h
bellard1f673132004-04-04 15:21:17 +0000386Print this help
bellarda1b74fe2004-05-08 13:26:35 +0000387@item Ctrl-a x
bellard1f673132004-04-04 15:21:17 +0000388Exit emulatior
bellarda1b74fe2004-05-08 13:26:35 +0000389@item Ctrl-a s
bellard1f673132004-04-04 15:21:17 +0000390Save disk data back to file (if -snapshot)
bellarda1b74fe2004-05-08 13:26:35 +0000391@item Ctrl-a b
bellard1f673132004-04-04 15:21:17 +0000392Send break (magic sysrq in Linux)
bellarda1b74fe2004-05-08 13:26:35 +0000393@item Ctrl-a c
bellard1f673132004-04-04 15:21:17 +0000394Switch between console and monitor
bellarda1b74fe2004-05-08 13:26:35 +0000395@item Ctrl-a Ctrl-a
396Send Ctrl-a
bellard1f673132004-04-04 15:21:17 +0000397@end table
398@c man end
399
400@ignore
401
402@setfilename qemu
403@settitle QEMU System Emulator
404
405@c man begin SEEALSO
406The HTML documentation of QEMU for more precise information and Linux
407user mode emulator invocation.
408@c man end
409
410@c man begin AUTHOR
411Fabrice Bellard
412@c man end
413
414@end ignore
415
416@end ignore
417
bellard1f673132004-04-04 15:21:17 +0000418@section QEMU Monitor
419
420The QEMU monitor is used to give complex commands to the QEMU
421emulator. You can use it to:
422
423@itemize @minus
424
425@item
426Remove or insert removable medias images
427(such as CD-ROM or floppies)
428
429@item
430Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
431from a disk file.
432
433@item Inspect the VM state without an external debugger.
434
435@end itemize
436
437@subsection Commands
438
439The following commands are available:
440
441@table @option
442
443@item help or ? [cmd]
444Show the help for all commands or just for command @var{cmd}.
445
446@item commit
447Commit changes to the disk images (if -snapshot is used)
448
449@item info subcommand
450show various information about the system state
451
452@table @option
453@item info network
454show the network state
455@item info block
456show the block devices
457@item info registers
458show the cpu registers
459@item info history
460show the command line history
461@end table
462
463@item q or quit
464Quit the emulator.
465
466@item eject [-f] device
467Eject a removable media (use -f to force it).
468
469@item change device filename
470Change a removable media.
471
472@item screendump filename
473Save screen into PPM image @var{filename}.
474
475@item log item1[,...]
476Activate logging of the specified items to @file{/tmp/qemu.log}.
477
478@item savevm filename
479Save the whole virtual machine state to @var{filename}.
480
481@item loadvm filename
482Restore the whole virtual machine state from @var{filename}.
483
484@item stop
485Stop emulation.
486
487@item c or cont
488Resume emulation.
489
490@item gdbserver [port]
491Start gdbserver session (default port=1234)
492
493@item x/fmt addr
494Virtual memory dump starting at @var{addr}.
495
496@item xp /fmt addr
497Physical memory dump starting at @var{addr}.
498
499@var{fmt} is a format which tells the command how to format the
500data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
501
502@table @var
503@item count
504is the number of items to be dumped.
505
506@item format
507can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
508c (char) or i (asm instruction).
509
510@item size
bellard52c00a52004-04-25 21:27:03 +0000511can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
512@code{h} or @code{w} can be specified with the @code{i} format to
513respectively select 16 or 32 bit code instruction size.
bellard1f673132004-04-04 15:21:17 +0000514
515@end table
516
517Examples:
518@itemize
519@item
520Dump 10 instructions at the current instruction pointer:
521@example
522(qemu) x/10i $eip
5230x90107063: ret
5240x90107064: sti
5250x90107065: lea 0x0(%esi,1),%esi
5260x90107069: lea 0x0(%edi,1),%edi
5270x90107070: ret
5280x90107071: jmp 0x90107080
5290x90107073: nop
5300x90107074: nop
5310x90107075: nop
5320x90107076: nop
533@end example
534
535@item
536Dump 80 16 bit values at the start of the video memory.
537@example
538(qemu) xp/80hx 0xb8000
5390x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
5400x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
5410x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
5420x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
5430x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
5440x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
5450x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
5460x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
5470x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
5480x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
549@end example
550@end itemize
551
552@item p or print/fmt expr
553
554Print expression value. Only the @var{format} part of @var{fmt} is
555used.
556
bellarda3a91a32004-06-04 11:06:21 +0000557@item sendkey keys
558
559Send @var{keys} to the emulator. Use @code{-} to press several keys
560simultaneously. Example:
561@example
562sendkey ctrl-alt-f1
563@end example
564
565This command is useful to send keys that your graphical user interface
566intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
567
bellard15a34c62004-07-08 21:26:26 +0000568@item system_reset
569
570Reset the system.
571
bellard1f673132004-04-04 15:21:17 +0000572@end table
573
574@subsection Integer expressions
575
576The monitor understands integers expressions for every integer
577argument. You can use register names to get the value of specifics
578CPU registers by prefixing them with @emph{$}.
579
580@node disk_images
581@section Disk Images
582
bellardacd935e2004-11-15 22:57:26 +0000583Since version 0.6.1, QEMU supports many disk image formats, including
584growable disk images (their size increase as non empty sectors are
585written), compressed and encrypted disk images.
bellard1f673132004-04-04 15:21:17 +0000586
bellardacd935e2004-11-15 22:57:26 +0000587@subsection Quick start for disk image creation
588
589You can create a disk image with the command:
bellard1f673132004-04-04 15:21:17 +0000590@example
bellardacd935e2004-11-15 22:57:26 +0000591qemu-img create myimage.img mysize
bellard1f673132004-04-04 15:21:17 +0000592@end example
bellardacd935e2004-11-15 22:57:26 +0000593where @var{myimage.img} is the disk image filename and @var{mysize} is its
594size in kilobytes. You can add an @code{M} suffix to give the size in
595megabytes and a @code{G} suffix for gigabytes.
596
597@xref{qemu_img_invocation} for more information.
bellard1f673132004-04-04 15:21:17 +0000598
599@subsection Snapshot mode
600
601If you use the option @option{-snapshot}, all disk images are
602considered as read only. When sectors in written, they are written in
603a temporary file created in @file{/tmp}. You can however force the
bellardacd935e2004-11-15 22:57:26 +0000604write back to the raw disk images by using the @code{commit} monitor
605command (or @key{C-a s} in the serial console).
bellard1f673132004-04-04 15:21:17 +0000606
bellardacd935e2004-11-15 22:57:26 +0000607@node qemu_img_invocation
608@subsection @code{qemu-img} Invocation
bellard1f673132004-04-04 15:21:17 +0000609
bellardacd935e2004-11-15 22:57:26 +0000610@include qemu-img.texi
bellard05efe462004-06-16 20:34:33 +0000611
bellard9d4fb822004-04-26 20:55:38 +0000612@section Network emulation
613
614QEMU simulates up to 6 networks cards (NE2000 boards). Each card can
615be connected to a specific host network interface.
616
617@subsection Using tun/tap network interface
618
619This is the standard way to emulate network. QEMU adds a virtual
620network device on your host (called @code{tun0}), and you can then
621configure it as if it was a real ethernet card.
622
623As an example, you can download the @file{linux-test-xxx.tar.gz}
624archive and copy the script @file{qemu-ifup} in @file{/etc} and
625configure properly @code{sudo} so that the command @code{ifconfig}
626contained in @file{qemu-ifup} can be executed as root. You must verify
627that your host kernel supports the TUN/TAP network interfaces: the
628device @file{/dev/net/tun} must be present.
629
630See @ref{direct_linux_boot} to have an example of network use with a
631Linux distribution.
632
633@subsection Using the user mode network stack
634
bellard443f1372004-06-04 11:13:20 +0000635By using the option @option{-user-net} or if you have no tun/tap init
636script, QEMU uses a completely user mode network stack (you don't need
637root priviledge to use the virtual network). The virtual network
638configuration is the following:
bellard9d4fb822004-04-26 20:55:38 +0000639
640@example
641
642QEMU Virtual Machine <------> Firewall/DHCP server <-----> Internet
643 (10.0.2.x) | (10.0.2.2)
644 |
bellard2518bd02004-09-30 22:35:13 +0000645 ----> DNS server (10.0.2.3)
646 |
647 ----> SMB server (10.0.2.4)
bellard9d4fb822004-04-26 20:55:38 +0000648@end example
649
650The QEMU VM behaves as if it was behind a firewall which blocks all
651incoming connections. You can use a DHCP client to automatically
652configure the network in the QEMU VM.
653
654In order to check that the user mode network is working, you can ping
655the address 10.0.2.2 and verify that you got an address in the range
65610.0.2.x from the QEMU virtual DHCP server.
657
bellardb415a402004-05-23 21:04:06 +0000658Note that @code{ping} is not supported reliably to the internet as it
659would require root priviledges. It means you can only ping the local
660router (10.0.2.2).
661
bellard9bf05442004-08-25 22:12:49 +0000662When using the built-in TFTP server, the router is also the TFTP
663server.
664
665When using the @option{-redir} option, TCP or UDP connections can be
666redirected from the host to the guest. It allows for example to
667redirect X11, telnet or SSH connections.
bellard443f1372004-06-04 11:13:20 +0000668
bellard9d4fb822004-04-26 20:55:38 +0000669@node direct_linux_boot
670@section Direct Linux Boot
bellard0806e3f2003-10-01 00:15:32 +0000671
672This section explains how to launch a Linux kernel inside QEMU without
673having to make a full bootable image. It is very useful for fast Linux
674kernel testing. The QEMU network configuration is also explained.
bellard1eb20522003-06-25 16:21:49 +0000675
676@enumerate
677@item
bellard0806e3f2003-10-01 00:15:32 +0000678Download the archive @file{linux-test-xxx.tar.gz} containing a Linux
679kernel and a disk image.
bellard1eb20522003-06-25 16:21:49 +0000680
681@item Optional: If you want network support (for example to launch X11 examples), you
bellard0806e3f2003-10-01 00:15:32 +0000682must copy the script @file{qemu-ifup} in @file{/etc} and configure
bellard1eb20522003-06-25 16:21:49 +0000683properly @code{sudo} so that the command @code{ifconfig} contained in
bellard0806e3f2003-10-01 00:15:32 +0000684@file{qemu-ifup} can be executed as root. You must verify that your host
bellard1eb20522003-06-25 16:21:49 +0000685kernel supports the TUN/TAP network interfaces: the device
686@file{/dev/net/tun} must be present.
687
688When network is enabled, there is a virtual network connection between
689the host kernel and the emulated kernel. The emulated kernel is seen
690from the host kernel at IP address 172.20.0.2 and the host kernel is
691seen from the emulated kernel at IP address 172.20.0.1.
692
bellard0806e3f2003-10-01 00:15:32 +0000693@item Launch @code{qemu.sh}. You should have the following output:
bellard1eb20522003-06-25 16:21:49 +0000694
695@example
bellard0806e3f2003-10-01 00:15:32 +0000696> ./qemu.sh
bellard181f1552003-11-13 01:47:16 +0000697Connected to host network interface: tun0
698Linux 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
bellard1eb20522003-06-25 16:21:49 +0000699BIOS-provided physical RAM map:
bellard46907642003-07-07 12:17:46 +0000700 BIOS-e801: 0000000000000000 - 000000000009f000 (usable)
701 BIOS-e801: 0000000000100000 - 0000000002000000 (usable)
bellard1eb20522003-06-25 16:21:49 +000070232MB LOWMEM available.
703On node 0 totalpages: 8192
704zone(0): 4096 pages.
705zone(1): 4096 pages.
706zone(2): 0 pages.
bellard181f1552003-11-13 01:47:16 +0000707Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe console=ttyS0
bellard46907642003-07-07 12:17:46 +0000708ide_setup: ide2=noprobe
709ide_setup: ide3=noprobe
710ide_setup: ide4=noprobe
711ide_setup: ide5=noprobe
bellard1eb20522003-06-25 16:21:49 +0000712Initializing CPU#0
bellard181f1552003-11-13 01:47:16 +0000713Detected 2399.621 MHz processor.
714Console: colour EGA 80x25
715Calibrating delay loop... 4744.80 BogoMIPS
716Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data, 64k init, 0k highmem)
bellard1eb20522003-06-25 16:21:49 +0000717Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
718Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
bellard181f1552003-11-13 01:47:16 +0000719Mount cache hash table entries: 512 (order: 0, 4096 bytes)
bellard1eb20522003-06-25 16:21:49 +0000720Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
721Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
722CPU: Intel Pentium Pro stepping 03
723Checking 'hlt' instruction... OK.
724POSIX conformance testing by UNIFIX
725Linux NET4.0 for Linux 2.4
726Based upon Swansea University Computer Society NET3.039
727Initializing RT netlink socket
728apm: BIOS not found.
729Starting kswapd
bellard46907642003-07-07 12:17:46 +0000730Journalled Block Device driver loaded
bellard181f1552003-11-13 01:47:16 +0000731Detected PS/2 Mouse Port.
bellard1eb20522003-06-25 16:21:49 +0000732pty: 256 Unix98 ptys configured
733Serial driver version 5.05c (2001-07-08) with no serial options enabled
734ttyS00 at 0x03f8 (irq = 4) is a 16450
735ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
736Last modified Nov 1, 2000 by Paul Gortmaker
737NE*000 ethercard probe at 0x300: 52 54 00 12 34 56
738eth0: NE2000 found at 0x300, using IRQ 9.
bellard46907642003-07-07 12:17:46 +0000739RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
bellard181f1552003-11-13 01:47:16 +0000740Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
741ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
742hda: QEMU HARDDISK, ATA DISK drive
743ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
744hda: attached ide-disk driver.
745hda: 20480 sectors (10 MB) w/256KiB Cache, CHS=20/16/63
746Partition check:
747 hda:
748Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996
bellard1eb20522003-06-25 16:21:49 +0000749NET4: Linux TCP/IP 1.0 for NET4.0
750IP Protocols: ICMP, UDP, TCP, IGMP
751IP: routing cache hash table of 512 buckets, 4Kbytes
bellard46907642003-07-07 12:17:46 +0000752TCP: Hash tables configured (established 2048 bind 4096)
bellard1eb20522003-06-25 16:21:49 +0000753NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
bellard46907642003-07-07 12:17:46 +0000754EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
bellard1eb20522003-06-25 16:21:49 +0000755VFS: Mounted root (ext2 filesystem).
bellard181f1552003-11-13 01:47:16 +0000756Freeing unused kernel memory: 64k freed
757
758Linux 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
759
760QEMU Linux test distribution (based on Redhat 9)
761
762Type 'exit' to halt the system
763
764sh-2.05b#
bellard1eb20522003-06-25 16:21:49 +0000765@end example
766
767@item
768Then you can play with the kernel inside the virtual serial console. You
769can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help
770about the keys you can type inside the virtual serial console. In
bellardd5a0b502003-06-27 12:02:03 +0000771particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as
772the Magic SysRq key.
bellard1eb20522003-06-25 16:21:49 +0000773
774@item
775If the network is enabled, launch the script @file{/etc/linuxrc} in the
776emulator (don't forget the leading dot):
777@example
778. /etc/linuxrc
779@end example
780
781Then enable X11 connections on your PC from the emulated Linux:
782@example
783xhost +172.20.0.2
784@end example
785
786You can now launch @file{xterm} or @file{xlogo} and verify that you have
787a real Virtual Linux system !
788
789@end enumerate
790
bellardd5a0b502003-06-27 12:02:03 +0000791NOTES:
792@enumerate
793@item
bellard0806e3f2003-10-01 00:15:32 +0000794A 2.5.74 kernel is also included in the archive. Just
795replace the bzImage in qemu.sh to try it.
bellardd5a0b502003-06-27 12:02:03 +0000796
797@item
bellard9d4520d2003-10-28 01:38:57 +0000798In order to exit cleanly from qemu, you can do a @emph{shutdown} inside
799qemu. qemu will automatically exit when the Linux shutdown is done.
bellard46907642003-07-07 12:17:46 +0000800
801@item
802You can boot slightly faster by disabling the probe of non present IDE
803interfaces. To do so, add the following options on the kernel command
804line:
805@example
806ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
807@end example
808
809@item
810The example disk image is a modified version of the one made by Kevin
bellard1eb20522003-06-25 16:21:49 +0000811Lawton for the plex86 Project (@url{www.plex86.org}).
812
bellardd5a0b502003-06-27 12:02:03 +0000813@end enumerate
814
bellard0806e3f2003-10-01 00:15:32 +0000815@node gdb_usage
bellardda415d52003-06-27 18:50:50 +0000816@section GDB usage
817
818QEMU has a primitive support to work with gdb, so that you can do
bellard0806e3f2003-10-01 00:15:32 +0000819'Ctrl-C' while the virtual machine is running and inspect its state.
bellardda415d52003-06-27 18:50:50 +0000820
bellard9d4520d2003-10-28 01:38:57 +0000821In order to use gdb, launch qemu with the '-s' option. It will wait for a
bellardda415d52003-06-27 18:50:50 +0000822gdb connection:
823@example
bellard6c9bf892004-01-24 13:46:56 +0000824> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
bellardda415d52003-06-27 18:50:50 +0000825Connected to host network interface: tun0
826Waiting gdb connection on port 1234
827@end example
828
829Then launch gdb on the 'vmlinux' executable:
830@example
831> gdb vmlinux
832@end example
833
834In gdb, connect to QEMU:
835@example
bellard6c9bf892004-01-24 13:46:56 +0000836(gdb) target remote localhost:1234
bellardda415d52003-06-27 18:50:50 +0000837@end example
838
839Then you can use gdb normally. For example, type 'c' to launch the kernel:
840@example
841(gdb) c
842@end example
843
bellard0806e3f2003-10-01 00:15:32 +0000844Here are some useful tips in order to use gdb on system code:
845
846@enumerate
847@item
848Use @code{info reg} to display all the CPU registers.
849@item
850Use @code{x/10i $eip} to display the code at the PC position.
851@item
852Use @code{set architecture i8086} to dump 16 bit code. Then use
853@code{x/10i $cs*16+*eip} to dump the code at the PC position.
854@end enumerate
855
bellard1a084f32004-05-13 22:34:49 +0000856@section Target OS specific information
857
858@subsection Linux
859
bellard15a34c62004-07-08 21:26:26 +0000860To have access to SVGA graphic modes under X11, use the @code{vesa} or
861the @code{cirrus} X11 driver. For optimal performances, use 16 bit
862color depth in the guest and the host OS.
bellard1a084f32004-05-13 22:34:49 +0000863
bellarde3371e62004-07-10 16:26:02 +0000864When using a 2.6 guest Linux kernel, you should add the option
865@code{clock=pit} on the kernel command line because the 2.6 Linux
866kernels make very strict real time clock checks by default that QEMU
867cannot simulate exactly.
868
bellard7c3fc842005-02-10 21:46:47 +0000869When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
870not activated because QEMU is slower with this patch. The QEMU
871Accelerator Module is also much slower in this case. Earlier Fedora
872Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporte this
873patch by default. Newer kernels don't have it.
874
bellard1a084f32004-05-13 22:34:49 +0000875@subsection Windows
876
877If you have a slow host, using Windows 95 is better as it gives the
878best speed. Windows 2000 is also a good choice.
879
bellarde3371e62004-07-10 16:26:02 +0000880@subsubsection SVGA graphic modes support
881
882QEMU emulates a Cirrus Logic GD5446 Video
bellard15a34c62004-07-08 21:26:26 +0000883card. All Windows versions starting from Windows 95 should recognize
884and use this graphic card. For optimal performances, use 16 bit color
885depth in the guest and the host OS.
bellard1a084f32004-05-13 22:34:49 +0000886
bellarde3371e62004-07-10 16:26:02 +0000887@subsubsection CPU usage reduction
888
889Windows 9x does not correctly use the CPU HLT
bellard15a34c62004-07-08 21:26:26 +0000890instruction. The result is that it takes host CPU cycles even when
891idle. You can install the utility from
892@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
893problem. Note that no such tool is needed for NT, 2000 or XP.
bellard1a084f32004-05-13 22:34:49 +0000894
bellarde3371e62004-07-10 16:26:02 +0000895@subsubsection Windows 2000 disk full problems
896
897Currently (release 0.6.0) QEMU has a bug which gives a @code{disk
898full} error during installation of some releases of Windows 2000. The
899workaround is to stop QEMU as soon as you notice that your disk image
900size is growing too fast (monitor it with @code{ls -ls}). Then
901relaunch QEMU to continue the installation. If you still experience
902the problem, relaunch QEMU again.
903
904Future QEMU releases are likely to correct this bug.
905
906@subsubsection Windows XP security problems
907
908Some releases of Windows XP install correctly but give a security
909error when booting:
910@example
911A problem is preventing Windows from accurately checking the
912license for this computer. Error code: 0x800703e6.
913@end example
914The only known workaround is to boot in Safe mode
915without networking support.
916
917Future QEMU releases are likely to correct this bug.
918
bellarda0a821a2004-07-14 17:38:57 +0000919@subsection MS-DOS and FreeDOS
920
921@subsubsection CPU usage reduction
922
923DOS does not correctly use the CPU HLT instruction. The result is that
924it takes host CPU cycles even when idle. You can install the utility
925from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
926problem.
927
bellard15a34c62004-07-08 21:26:26 +0000928@chapter QEMU PowerPC System emulator invocation
bellard52c00a52004-04-25 21:27:03 +0000929
930Use the executable @file{qemu-system-ppc} to simulate a complete PREP
bellard15a34c62004-07-08 21:26:26 +0000931or PowerMac PowerPC system.
932
bellardb671f9e2005-04-30 15:08:33 +0000933QEMU emulates the following PowerMac peripherals:
bellard15a34c62004-07-08 21:26:26 +0000934
935@itemize @minus
936@item
937UniNorth PCI Bridge
938@item
939PCI VGA compatible card with VESA Bochs Extensions
940@item
9412 PMAC IDE interfaces with hard disk and CD-ROM support
942@item
943NE2000 PCI adapters
944@item
945Non Volatile RAM
946@item
947VIA-CUDA with ADB keyboard and mouse.
948@end itemize
bellard52c00a52004-04-25 21:27:03 +0000949
bellardb671f9e2005-04-30 15:08:33 +0000950QEMU emulates the following PREP peripherals:
bellard52c00a52004-04-25 21:27:03 +0000951
952@itemize @minus
953@item
bellard15a34c62004-07-08 21:26:26 +0000954PCI Bridge
955@item
956PCI VGA compatible card with VESA Bochs Extensions
957@item
bellard52c00a52004-04-25 21:27:03 +00009582 IDE interfaces with hard disk and CD-ROM support
959@item
960Floppy disk
961@item
bellard15a34c62004-07-08 21:26:26 +0000962NE2000 network adapters
bellard52c00a52004-04-25 21:27:03 +0000963@item
964Serial port
965@item
966PREP Non Volatile RAM
bellard15a34c62004-07-08 21:26:26 +0000967@item
968PC compatible keyboard and mouse.
bellard52c00a52004-04-25 21:27:03 +0000969@end itemize
970
bellard15a34c62004-07-08 21:26:26 +0000971QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
972@url{http://site.voila.fr/jmayer/OpenHackWare/index.htm}.
973
bellard52c00a52004-04-25 21:27:03 +0000974You can read the qemu PC system emulation chapter to have more
975informations about QEMU usage.
976
bellard15a34c62004-07-08 21:26:26 +0000977@c man begin OPTIONS
978
979The following options are specific to the PowerPC emulation:
980
981@table @option
982
983@item -prep
984Simulate a PREP system (default is PowerMAC)
985
986@item -g WxH[xDEPTH]
987
988Set the initial VGA graphic mode. The default is 800x600x15.
989
990@end table
991
992@c man end
993
994
bellard52c00a52004-04-25 21:27:03 +0000995More information is available at
996@url{http://jocelyn.mayer.free.fr/qemu-ppc/}.
997
bellarde80cfcf2004-12-19 23:18:01 +0000998@chapter Sparc System emulator invocation
999
1000Use the executable @file{qemu-system-sparc} to simulate a JavaStation
1001(sun4m architecture). The emulation is far from complete.
1002
bellardb671f9e2005-04-30 15:08:33 +00001003QEMU emulates the following sun4m peripherals:
bellarde80cfcf2004-12-19 23:18:01 +00001004
1005@itemize @minus
1006@item
1007IOMMU
1008@item
1009TCX Frame buffer
1010@item
1011Lance (Am7990) Ethernet
1012@item
1013Non Volatile RAM M48T08
1014@item
1015Slave I/O: timers, interrupt controllers, Zilog serial ports
1016@end itemize
1017
1018QEMU uses the Proll, a PROM replacement available at
1019@url{http://people.redhat.com/zaitcev/linux/}.
1020
bellardb7569212005-03-13 09:43:05 +00001021A sample Linux kernel and ram disk image are available on the QEMU web
1022site.
1023
bellard1f673132004-04-04 15:21:17 +00001024@chapter QEMU User space emulator invocation
bellard386405f2003-03-23 21:28:45 +00001025
bellard1f673132004-04-04 15:21:17 +00001026@section Quick Start
bellard386405f2003-03-23 21:28:45 +00001027
bellard1f673132004-04-04 15:21:17 +00001028In order to launch a Linux process, QEMU needs the process executable
1029itself and all the target (x86) dynamic libraries used by it.
bellard386405f2003-03-23 21:28:45 +00001030
bellard1f673132004-04-04 15:21:17 +00001031@itemize
bellard386405f2003-03-23 21:28:45 +00001032
bellard1f673132004-04-04 15:21:17 +00001033@item On x86, you can just try to launch any process by using the native
1034libraries:
bellard386405f2003-03-23 21:28:45 +00001035
bellard1f673132004-04-04 15:21:17 +00001036@example
1037qemu-i386 -L / /bin/ls
1038@end example
bellardfd429f22003-03-30 20:59:46 +00001039
bellard1f673132004-04-04 15:21:17 +00001040@code{-L /} tells that the x86 dynamic linker must be searched with a
1041@file{/} prefix.
bellard1eb20522003-06-25 16:21:49 +00001042
bellard1f673132004-04-04 15:21:17 +00001043@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):
bellard1eb20522003-06-25 16:21:49 +00001044
bellard1f673132004-04-04 15:21:17 +00001045@example
1046qemu-i386 -L / qemu-i386 -L / /bin/ls
1047@end example
bellard386405f2003-03-23 21:28:45 +00001048
bellard1f673132004-04-04 15:21:17 +00001049@item On non x86 CPUs, you need first to download at least an x86 glibc
1050(@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
1051@code{LD_LIBRARY_PATH} is not set:
bellard386405f2003-03-23 21:28:45 +00001052
bellard1f673132004-04-04 15:21:17 +00001053@example
1054unset LD_LIBRARY_PATH
1055@end example
bellard386405f2003-03-23 21:28:45 +00001056
bellard1f673132004-04-04 15:21:17 +00001057Then you can launch the precompiled @file{ls} x86 executable:
bellard386405f2003-03-23 21:28:45 +00001058
bellard1f673132004-04-04 15:21:17 +00001059@example
1060qemu-i386 tests/i386/ls
1061@end example
1062You can look at @file{qemu-binfmt-conf.sh} so that
1063QEMU is automatically launched by the Linux kernel when you try to
1064launch x86 executables. It requires the @code{binfmt_misc} module in the
1065Linux kernel.
bellard386405f2003-03-23 21:28:45 +00001066
bellard1f673132004-04-04 15:21:17 +00001067@item The x86 version of QEMU is also included. You can try weird things such as:
1068@example
1069qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1070@end example
bellard386405f2003-03-23 21:28:45 +00001071
bellard1f673132004-04-04 15:21:17 +00001072@end itemize
bellard386405f2003-03-23 21:28:45 +00001073
bellard1f673132004-04-04 15:21:17 +00001074@section Wine launch
bellard386405f2003-03-23 21:28:45 +00001075
bellard1f673132004-04-04 15:21:17 +00001076@itemize
bellard386405f2003-03-23 21:28:45 +00001077
bellard1f673132004-04-04 15:21:17 +00001078@item Ensure that you have a working QEMU with the x86 glibc
1079distribution (see previous section). In order to verify it, you must be
1080able to do:
bellard386405f2003-03-23 21:28:45 +00001081
bellard1f673132004-04-04 15:21:17 +00001082@example
1083qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1084@end example
bellard386405f2003-03-23 21:28:45 +00001085
bellard1f673132004-04-04 15:21:17 +00001086@item Download the binary x86 Wine install
1087(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
bellard386405f2003-03-23 21:28:45 +00001088
bellard1f673132004-04-04 15:21:17 +00001089@item Configure Wine on your account. Look at the provided script
1090@file{/usr/local/qemu-i386/bin/wine-conf.sh}. Your previous
1091@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
bellard386405f2003-03-23 21:28:45 +00001092
bellard1f673132004-04-04 15:21:17 +00001093@item Then you can try the example @file{putty.exe}:
bellard386405f2003-03-23 21:28:45 +00001094
bellard1f673132004-04-04 15:21:17 +00001095@example
1096qemu-i386 /usr/local/qemu-i386/wine/bin/wine /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1097@end example
bellard386405f2003-03-23 21:28:45 +00001098
bellard1f673132004-04-04 15:21:17 +00001099@end itemize
bellard386405f2003-03-23 21:28:45 +00001100
bellard1f673132004-04-04 15:21:17 +00001101@section Command line options
bellard386405f2003-03-23 21:28:45 +00001102
bellard1f673132004-04-04 15:21:17 +00001103@example
1104usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1105@end example
bellard386405f2003-03-23 21:28:45 +00001106
bellard1f673132004-04-04 15:21:17 +00001107@table @option
1108@item -h
1109Print the help
1110@item -L path
1111Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1112@item -s size
1113Set the x86 stack size in bytes (default=524288)
bellard386405f2003-03-23 21:28:45 +00001114@end table
1115
bellard1f673132004-04-04 15:21:17 +00001116Debug options:
bellard386405f2003-03-23 21:28:45 +00001117
bellard1f673132004-04-04 15:21:17 +00001118@table @option
1119@item -d
1120Activate log (logfile=/tmp/qemu.log)
1121@item -p pagesize
1122Act as if the host page size was 'pagesize' bytes
1123@end table
bellard386405f2003-03-23 21:28:45 +00001124
bellard15a34c62004-07-08 21:26:26 +00001125@node compilation
1126@chapter Compilation from the sources
1127
bellard7c3fc842005-02-10 21:46:47 +00001128@section Linux/Unix
bellard15a34c62004-07-08 21:26:26 +00001129
bellard7c3fc842005-02-10 21:46:47 +00001130@subsection Compilation
1131
1132First you must decompress the sources:
1133@example
1134cd /tmp
1135tar zxvf qemu-x.y.z.tar.gz
1136cd qemu-x.y.z
1137@end example
1138
1139Then you configure QEMU and build it (usually no options are needed):
1140@example
1141./configure
1142make
1143@end example
1144
1145Then type as root user:
1146@example
1147make install
1148@end example
1149to install QEMU in @file{/usr/local}.
1150
bellard7c3fc842005-02-10 21:46:47 +00001151@subsection Tested tool versions
1152
1153In order to compile QEMU succesfully, it is very important that you
1154have the right tools. The most important one is gcc. I cannot guaranty
1155that QEMU works if you do not use a tested gcc version. Look at
1156'configure' and 'Makefile' if you want to make a different gcc
1157version work.
1158
1159@example
1160host gcc binutils glibc linux distribution
1161----------------------------------------------------------------------
1162x86 3.2 2.13.2 2.1.3 2.4.18
1163 2.96 2.11.93.0.2 2.2.5 2.4.18 Red Hat 7.3
1164 3.2.2 2.13.90.0.18 2.3.2 2.4.20 Red Hat 9
1165
1166PowerPC 3.3 [4] 2.13.90.0.18 2.3.1 2.4.20briq
1167 3.2
1168
1169Alpha 3.3 [1] 2.14.90.0.4 2.2.5 2.2.20 [2] Debian 3.0
1170
1171Sparc32 2.95.4 2.12.90.0.1 2.2.5 2.4.18 Debian 3.0
1172
1173ARM 2.95.4 2.12.90.0.1 2.2.5 2.4.9 [3] Debian 3.0
1174
1175[1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
1176 for gcc version >= 3.3.
1177[2] Linux >= 2.4.20 is necessary for precise exception support
1178 (untested).
1179[3] 2.4.9-ac10-rmk2-np1-cerf2
1180
1181[4] gcc 2.95.x generates invalid code when using too many register
1182variables. You must use gcc 3.x on PowerPC.
1183@end example
bellard15a34c62004-07-08 21:26:26 +00001184
1185@section Windows
1186
1187@itemize
1188@item Install the current versions of MSYS and MinGW from
1189@url{http://www.mingw.org/}. You can find detailed installation
1190instructions in the download section and the FAQ.
1191
1192@item Download
1193the MinGW development library of SDL 1.2.x
1194(@file{SDL-devel-1.2.x-mingw32.tar.gz}) from
1195@url{http://www.libsdl.org}. Unpack it in a temporary place, and
1196unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1197directory. Edit the @file{sdl-config} script so that it gives the
1198correct SDL directory when invoked.
1199
1200@item Extract the current version of QEMU.
1201
1202@item Start the MSYS shell (file @file{msys.bat}).
1203
1204@item Change to the QEMU directory. Launch @file{./configure} and
1205@file{make}. If you have problems using SDL, verify that
1206@file{sdl-config} can be launched from the MSYS command line.
1207
1208@item You can install QEMU in @file{Program Files/Qemu} by typing
1209@file{make install}. Don't forget to copy @file{SDL.dll} in
1210@file{Program Files/Qemu}.
1211
1212@end itemize
1213
1214@section Cross compilation for Windows with Linux
1215
1216@itemize
1217@item
1218Install the MinGW cross compilation tools available at
1219@url{http://www.mingw.org/}.
1220
1221@item
1222Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1223unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1224variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1225the QEMU configuration script.
1226
1227@item
1228Configure QEMU for Windows cross compilation:
1229@example
1230./configure --enable-mingw32
1231@end example
1232If necessary, you can change the cross-prefix according to the prefix
1233choosen for the MinGW tools with --cross-prefix. You can also use
1234--prefix to set the Win32 install path.
1235
1236@item You can install QEMU in the installation directory by typing
1237@file{make install}. Don't forget to copy @file{SDL.dll} in the
1238installation directory.
1239
1240@end itemize
1241
1242Note: Currently, Wine does not seem able to launch
1243QEMU for Win32.
1244
1245@section Mac OS X
1246
1247The Mac OS X patches are not fully merged in QEMU, so you should look
1248at the QEMU mailing list archive to have all the necessary
1249information.
1250