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