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