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