]> git.proxmox.com Git - qemu.git/blame - qemu-doc.texi
Spelling fix (Mark Glines)
[qemu.git] / qemu-doc.texi
CommitLineData
386405f7 1\input texinfo @c -*- texinfo -*-
debc7065
FB
2@c %**start of header
3@setfilename qemu-doc.info
8f40c388 4@settitle QEMU Emulator User Documentation
debc7065
FB
5@exampleindent 0
6@paragraphindent 0
7@c %**end of header
386405f7 8
0806e3f6 9@iftex
386405f7
FB
10@titlepage
11@sp 7
8f40c388 12@center @titlefont{QEMU Emulator}
debc7065
FB
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::
83195237 28* QEMU User space emulator::
debc7065
FB
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
83195237
FB
60User mode emulation. In this mode, QEMU can launch
61processes compiled for one CPU on another CPU. It can be used to
1f673135
FB
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)
ce819861 80@item ARM Integrator/CP (ARM926E, 1026E or 946E processor)
00a9bf19 81@item ARM Versatile baseboard (ARM926E)
d7739d75 82@item ARM RealView Emulation baseboard (ARM926EJ-S)
b00052e4 83@item Spitz, Akita, Borzoi and Terrier PDAs (PXA270 processor)
209a4e69 84@item Arnewsh MCF5206 evaluation board (ColdFire V2).
52c00a5f 85@end itemize
386405f7 86
e6e5906b 87For user emulation, x86, PowerPC, ARM, MIPS, Sparc32/64 and ColdFire(m68k) CPUs are supported.
0806e3f6 88
debc7065 89@node Installation
5b9f457a
FB
90@chapter Installation
91
15a34c63
FB
92If you want to compile QEMU yourself, see @ref{compilation}.
93
debc7065
FB
94@menu
95* install_linux:: Linux
96* install_windows:: Windows
97* install_mac:: Macintosh
98@end menu
99
100@node install_linux
1f673135
FB
101@section Linux
102
7c3fc84d
FB
103If a precompiled package is available for your distribution - you just
104have to install it. Otherwise, see @ref{compilation}.
5b9f457a 105
debc7065 106@node install_windows
1f673135 107@section Windows
8cd0ac2f 108
15a34c63 109Download the experimental binary installer at
debc7065 110@url{http://www.free.oszoo.org/@/download.html}.
d691f669 111
debc7065 112@node install_mac
1f673135 113@section Mac OS X
d691f669 114
15a34c63 115Download the experimental binary installer at
debc7065 116@url{http://www.free.oszoo.org/@/download.html}.
df0f11a0 117
debc7065 118@node QEMU PC System emulator
3f9f3aa1 119@chapter QEMU PC System emulator
1eb20527 120
debc7065
FB
121@menu
122* pcsys_introduction:: Introduction
123* pcsys_quickstart:: Quick Start
124* sec_invocation:: Invocation
125* pcsys_keys:: Keys
126* pcsys_monitor:: QEMU Monitor
127* disk_images:: Disk Images
128* pcsys_network:: Network emulation
129* direct_linux_boot:: Direct Linux Boot
130* pcsys_usb:: USB emulation
131* gdb_usage:: GDB usage
132* pcsys_os_specific:: Target OS specific information
133@end menu
134
135@node pcsys_introduction
0806e3f6
FB
136@section Introduction
137
138@c man begin DESCRIPTION
139
3f9f3aa1
FB
140The QEMU PC System emulator simulates the
141following peripherals:
0806e3f6
FB
142
143@itemize @minus
15a34c63
FB
144@item
145i440FX host PCI bridge and PIIX3 PCI to ISA bridge
0806e3f6 146@item
15a34c63
FB
147Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
148extensions (hardware level, including all non standard modes).
0806e3f6
FB
149@item
150PS/2 mouse and keyboard
151@item
15a34c63 1522 PCI IDE interfaces with hard disk and CD-ROM support
1f673135
FB
153@item
154Floppy disk
0806e3f6 155@item
15a34c63 156NE2000 PCI network adapters
0806e3f6 157@item
05d5818c
FB
158Serial ports
159@item
c0fe3827
FB
160Creative SoundBlaster 16 sound card
161@item
162ENSONIQ AudioPCI ES1370 sound card
163@item
164Adlib(OPL2) - Yamaha YM3812 compatible chip
b389dbfb
FB
165@item
166PCI UHCI USB controller and a virtual USB hub.
0806e3f6
FB
167@end itemize
168
3f9f3aa1
FB
169SMP is supported with up to 255 CPUs.
170
c0fe3827
FB
171Note that adlib is only available when QEMU was configured with
172-enable-adlib
173
15a34c63
FB
174QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
175VGA BIOS.
176
c0fe3827
FB
177QEMU uses YM3812 emulation by Tatsuyuki Satoh.
178
0806e3f6
FB
179@c man end
180
debc7065 181@node pcsys_quickstart
1eb20527
FB
182@section Quick Start
183
285dc330 184Download and uncompress the linux image (@file{linux.img}) and type:
0806e3f6
FB
185
186@example
285dc330 187qemu linux.img
0806e3f6
FB
188@end example
189
190Linux should boot and give you a prompt.
191
6cc721cf 192@node sec_invocation
ec410fc9
FB
193@section Invocation
194
195@example
0806e3f6
FB
196@c man begin SYNOPSIS
197usage: qemu [options] [disk_image]
198@c man end
ec410fc9
FB
199@end example
200
0806e3f6 201@c man begin OPTIONS
9d4520d0 202@var{disk_image} is a raw hard disk image for IDE hard disk 0.
ec410fc9
FB
203
204General options:
205@table @option
3dbbdc25
FB
206@item -M machine
207Select the emulated machine (@code{-M ?} for list)
208
2be3bc02
FB
209@item -fda file
210@item -fdb file
debc7065 211Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can
19cb3738 212use the host floppy by using @file{/dev/fd0} as filename (@pxref{host_drives}).
2be3bc02 213
ec410fc9
FB
214@item -hda file
215@item -hdb file
181f1558
FB
216@item -hdc file
217@item -hdd file
debc7065 218Use @var{file} as hard disk 0, 1, 2 or 3 image (@pxref{disk_images}).
1f47a922 219
181f1558
FB
220@item -cdrom file
221Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and
be3edd95 222@option{-cdrom} at the same time). You can use the host CD-ROM by
19cb3738 223using @file{/dev/cdrom} as filename (@pxref{host_drives}).
181f1558 224
eec85c2a
TS
225@item -boot [a|c|d|n]
226Boot on floppy (a), hard disk (c), CD-ROM (d), or Etherboot (n). Hard disk boot
227is the default.
1f47a922 228
181f1558 229@item -snapshot
1f47a922
FB
230Write to temporary files instead of disk image files. In this case,
231the raw disk image you use is not written back. You can however force
42550fde 232the write back by pressing @key{C-a s} (@pxref{disk_images}).
ec410fc9 233
52ca8d6a
FB
234@item -no-fd-bootchk
235Disable boot signature checking for floppy disks in Bochs BIOS. It may
236be needed to boot from old floppy disks.
237
ec410fc9 238@item -m megs
15a34c63 239Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
ec410fc9 240
3f9f3aa1
FB
241@item -smp n
242Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
243CPUs are supported.
244
0806e3f6
FB
245@item -nographic
246
247Normally, QEMU uses SDL to display the VGA output. With this option,
248you can totally disable graphical output so that QEMU is a simple
249command line application. The emulated serial port is redirected on
250the console. Therefore, you can still use QEMU to debug a Linux kernel
251with a serial console.
252
5f189496
TS
253@item -no-frame
254
255Do not use decorations for SDL windows and start them using the whole
256available screen space. This makes the using QEMU in a dedicated desktop
257workspace more convenient.
258
73fc9742 259@item -vnc display
24236869
FB
260
261Normally, QEMU uses SDL to display the VGA output. With this option,
73fc9742 262you can have QEMU listen on VNC display @var{display} and redirect the VGA
3c656346
FB
263display over the VNC session. It is very useful to enable the usb
264tablet device when using this option (option @option{-usbdevice
265tablet}). When using the VNC display, you must use the @option{-k}
73fc9742
TS
266option to set the keyboard layout if you are not using en-us.
267
268@var{display} may be in the form @var{interface:d}, in which case connections
269will only be allowed from @var{interface} on display @var{d}. Optionally,
270@var{interface} can be omitted. @var{display} can also be in the form
271@var{unix:path} where @var{path} is the location of a unix socket to listen for
272connections on.
273
24236869 274
3d11d0eb
FB
275@item -k language
276
277Use keyboard layout @var{language} (for example @code{fr} for
278French). This option is only needed where it is not easy to get raw PC
3c656346
FB
279keycodes (e.g. on Macs, with some X11 servers or with a VNC
280display). You don't normally need to use it on PC/Linux or PC/Windows
281hosts.
3d11d0eb
FB
282
283The available layouts are:
284@example
285ar de-ch es fo fr-ca hu ja mk no pt-br sv
286da en-gb et fr fr-ch is lt nl pl ru th
287de en-us fi fr-be hr it lv nl-be pt sl tr
288@end example
289
290The default is @code{en-us}.
291
1d14ffa9
FB
292@item -audio-help
293
294Will show the audio subsystem help: list of drivers, tunable
295parameters.
296
6a36d84e 297@item -soundhw card1,card2,... or -soundhw all
1d14ffa9
FB
298
299Enable audio and selected sound hardware. Use ? to print all
300available sound hardware.
301
302@example
303qemu -soundhw sb16,adlib hda
304qemu -soundhw es1370 hda
6a36d84e 305qemu -soundhw all hda
1d14ffa9
FB
306qemu -soundhw ?
307@end example
a8c490cd 308
15a34c63
FB
309@item -localtime
310Set the real time clock to local time (the default is to UTC
311time). This option is needed to have correct date in MS-DOS or
312Windows.
313
d63d307f
FB
314@item -full-screen
315Start in full screen.
316
f7cce898
FB
317@item -pidfile file
318Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
319from a script.
320
71e3ceb8
TS
321@item -daemonize
322Daemonize the QEMU process after initialization. QEMU will not detach from
323standard IO until it is ready to receive connections on any of its devices.
324This option is a useful way for external programs to launch QEMU without having
325to cope with initialization race conditions.
326
9d0a8e6f
FB
327@item -win2k-hack
328Use it when installing Windows 2000 to avoid a disk full bug. After
329Windows 2000 is installed, you no longer need this option (this option
330slows down the IDE transfers).
331
9ae02555
TS
332@item -option-rom file
333Load the contents of file as an option ROM. This option is useful to load
334things like EtherBoot.
335
c35734b2
TS
336@item -name string
337Sets the name of the guest. This name will be display in the SDL window
338caption. The name will also be used for the VNC server.
339
0806e3f6
FB
340@end table
341
b389dbfb
FB
342USB options:
343@table @option
344
345@item -usb
346Enable the USB driver (will be the default soon)
347
348@item -usbdevice devname
0aff66b5 349Add the USB device @var{devname}. @xref{usb_devices}.
b389dbfb
FB
350@end table
351
1f673135
FB
352Network options:
353
354@table @option
355
a41b2ff2 356@item -net nic[,vlan=n][,macaddr=addr][,model=type]
41d03949
FB
357Create a new Network Interface Card and connect it to VLAN @var{n} (@var{n}
358= 0 is the default). The NIC is currently an NE2000 on the PC
359target. Optionally, the MAC address can be changed. If no
360@option{-net} option is specified, a single NIC is created.
549444e1
AZ
361Qemu can emulate several different models of network card.
362Valid values for @var{type} are
363@code{i82551}, @code{i82557b}, @code{i82559er},
364@code{ne2k_pci}, @code{ne2k_isa}, @code{pcnet}, @code{rtl8139},
365@code{smc91c111} and @code{lance}.
366Not all devices are supported on all targets.
41d03949 367
115defd1 368@item -net user[,vlan=n][,hostname=name]
7e89463d 369Use the user mode network stack which requires no administrator
a03a6053 370priviledge to run. @option{hostname=name} can be used to specify the client
115defd1 371hostname reported by the builtin DHCP server.
41d03949
FB
372
373@item -net tap[,vlan=n][,fd=h][,ifname=name][,script=file]
374Connect the host TAP network interface @var{name} to VLAN @var{n} and
375use the network script @var{file} to configure it. The default
6a1cbf68
TS
376network script is @file{/etc/qemu-ifup}. Use @option{script=no} to
377disable script execution. If @var{name} is not
41d03949
FB
378provided, the OS automatically provides one. @option{fd=h} can be
379used to specify the handle of an already opened host TAP interface. Example:
1f673135 380
41d03949
FB
381@example
382qemu linux.img -net nic -net tap
383@end example
384
385More complicated example (two NICs, each one connected to a TAP device)
386@example
387qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
388 -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
389@end example
3f1a88f4 390
3f1a88f4 391
41d03949 392@item -net socket[,vlan=n][,fd=h][,listen=[host]:port][,connect=host:port]
1f673135 393
41d03949
FB
394Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual
395machine using a TCP socket connection. If @option{listen} is
396specified, QEMU waits for incoming connections on @var{port}
397(@var{host} is optional). @option{connect} is used to connect to
3d830459
FB
398another QEMU instance using the @option{listen} option. @option{fd=h}
399specifies an already opened TCP socket.
1f673135 400
41d03949
FB
401Example:
402@example
403# launch a first QEMU instance
debc7065
FB
404qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
405 -net socket,listen=:1234
406# connect the VLAN 0 of this instance to the VLAN 0
407# of the first instance
408qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
409 -net socket,connect=127.0.0.1:1234
41d03949 410@end example
52c00a5f 411
3d830459
FB
412@item -net socket[,vlan=n][,fd=h][,mcast=maddr:port]
413
414Create a VLAN @var{n} shared with another QEMU virtual
415machines using a UDP multicast socket, effectively making a bus for
416every QEMU with same multicast address @var{maddr} and @var{port}.
417NOTES:
418@enumerate
419@item
420Several QEMU can be running on different hosts and share same bus (assuming
421correct multicast setup for these hosts).
422@item
423mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see
424@url{http://user-mode-linux.sf.net}.
425@item Use @option{fd=h} to specify an already opened UDP multicast socket.
426@end enumerate
427
428Example:
429@example
430# launch one QEMU instance
debc7065
FB
431qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
432 -net socket,mcast=230.0.0.1:1234
3d830459 433# launch another QEMU instance on same "bus"
debc7065
FB
434qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
435 -net socket,mcast=230.0.0.1:1234
3d830459 436# launch yet another QEMU instance on same "bus"
debc7065
FB
437qemu linux.img -net nic,macaddr=52:54:00:12:34:58 \
438 -net socket,mcast=230.0.0.1:1234
3d830459
FB
439@end example
440
441Example (User Mode Linux compat.):
442@example
debc7065
FB
443# launch QEMU instance (note mcast address selected
444# is UML's default)
445qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
446 -net socket,mcast=239.192.168.1:1102
3d830459
FB
447# launch UML
448/path/to/linux ubd0=/path/to/root_fs eth0=mcast
449@end example
450
41d03949
FB
451@item -net none
452Indicate that no network devices should be configured. It is used to
039af320
FB
453override the default configuration (@option{-net nic -net user}) which
454is activated if no @option{-net} options are provided.
52c00a5f 455
0db1137d 456@item -tftp dir
9bf05444 457When using the user mode network stack, activate a built-in TFTP
0db1137d
TS
458server. The files in @var{dir} will be exposed as the root of a TFTP server.
459The TFTP client on the guest must be configured in binary mode (use the command
460@code{bin} of the Unix TFTP client). The host IP address on the guest is as
461usual 10.0.2.2.
9bf05444 462
47d5d01a
TS
463@item -bootp file
464When using the user mode network stack, broadcast @var{file} as the BOOTP
465filename. In conjunction with @option{-tftp}, this can be used to network boot
466a guest from a local directory.
467
468Example (using pxelinux):
469@example
470qemu -hda linux.img -boot n -tftp /path/to/tftp/files -bootp /pxelinux.0
471@end example
472
2518bd0d
FB
473@item -smb dir
474When using the user mode network stack, activate a built-in SMB
475server so that Windows OSes can access to the host files in @file{dir}
476transparently.
477
478In the guest Windows OS, the line:
479@example
48010.0.2.4 smbserver
481@end example
482must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
483or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
484
485Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
486
487Note that a SAMBA server must be installed on the host OS in
366dfc52 488@file{/usr/sbin/smbd}. QEMU was tested successfully with smbd version
6cc721cf 4892.2.7a from the Red Hat 9 and version 3.0.10-1.fc3 from Fedora Core 3.
2518bd0d 490
9bf05444
FB
491@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
492
493When using the user mode network stack, redirect incoming TCP or UDP
494connections to the host port @var{host-port} to the guest
495@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
496is not specified, its value is 10.0.2.15 (default address given by the
497built-in DHCP server).
498
499For example, to redirect host X11 connection from screen 1 to guest
500screen 0, use the following:
501
502@example
503# on the host
504qemu -redir tcp:6001::6000 [...]
505# this host xterm should open in the guest X11 server
506xterm -display :1
507@end example
508
509To redirect telnet connections from host port 5555 to telnet port on
510the guest, use the following:
511
512@example
513# on the host
514qemu -redir tcp:5555::23 [...]
515telnet localhost 5555
516@end example
517
518Then when you use on the host @code{telnet localhost 5555}, you
519connect to the guest telnet server.
520
1f673135
FB
521@end table
522
41d03949 523Linux boot specific: When using these options, you can use a given
1f673135
FB
524Linux kernel without installing it in the disk image. It can be useful
525for easier testing of various kernels.
526
0806e3f6
FB
527@table @option
528
529@item -kernel bzImage
530Use @var{bzImage} as kernel image.
531
532@item -append cmdline
533Use @var{cmdline} as kernel command line
534
535@item -initrd file
536Use @var{file} as initial ram disk.
537
ec410fc9
FB
538@end table
539
15a34c63 540Debug/Expert options:
ec410fc9 541@table @option
a0a821a4
FB
542
543@item -serial dev
0bab00f3
FB
544Redirect the virtual serial port to host character device
545@var{dev}. The default device is @code{vc} in graphical mode and
546@code{stdio} in non graphical mode.
547
548This option can be used several times to simulate up to 4 serials
549ports.
550
c03b0f0f
FB
551Use @code{-serial none} to disable all serial ports.
552
0bab00f3 553Available character devices are:
a0a821a4
FB
554@table @code
555@item vc
556Virtual console
557@item pty
558[Linux only] Pseudo TTY (a new PTY is automatically allocated)
c03b0f0f
FB
559@item none
560No device is allocated.
a0a821a4
FB
561@item null
562void device
f8d179e3 563@item /dev/XXX
e57a8c0e 564[Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
f8d179e3 565parameters are set according to the emulated ones.
e57a8c0e
FB
566@item /dev/parportN
567[Linux only, parallel port only] Use host parallel port
5867c88a 568@var{N}. Currently SPP and EPP parallel port features can be used.
f8d179e3
FB
569@item file:filename
570Write output to filename. No character can be read.
a0a821a4
FB
571@item stdio
572[Unix only] standard input/output
f8d179e3 573@item pipe:filename
0bab00f3
FB
574name pipe @var{filename}
575@item COMn
576[Windows only] Use host serial port @var{n}
951f1351
FB
577@item udp:[remote_host]:remote_port[@@[src_ip]:src_port]
578This implements UDP Net Console. When @var{remote_host} or @var{src_ip} are not specified they default to @code{0.0.0.0}. When not using a specifed @var{src_port} a random port is automatically chosen.
579
580If you just want a simple readonly console you can use @code{netcat} or
581@code{nc}, by starting qemu with: @code{-serial udp::4555} and nc as:
582@code{nc -u -l -p 4555}. Any time qemu writes something to that port it
583will appear in the netconsole session.
0bab00f3
FB
584
585If you plan to send characters back via netconsole or you want to stop
586and start qemu a lot of times, you should have qemu use the same
587source port each time by using something like @code{-serial
951f1351 588udp::4555@@:4556} to qemu. Another approach is to use a patched
0bab00f3
FB
589version of netcat which can listen to a TCP port and send and receive
590characters via udp. If you have a patched version of netcat which
591activates telnet remote echo and single char transfer, then you can
592use the following options to step up a netcat redirector to allow
593telnet on port 5555 to access the qemu port.
594@table @code
951f1351
FB
595@item Qemu Options:
596-serial udp::4555@@:4556
597@item netcat options:
598-u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
599@item telnet options:
600localhost 5555
601@end table
602
603
f7499989 604@item tcp:[host]:port[,server][,nowait][,nodelay]
951f1351
FB
605The TCP Net Console has two modes of operation. It can send the serial
606I/O to a location or wait for a connection from a location. By default
607the TCP Net Console is sent to @var{host} at the @var{port}. If you use
f542086d
FB
608the @var{server} option QEMU will wait for a client socket application
609to connect to the port before continuing, unless the @code{nowait}
f7499989
PB
610option was specified. The @code{nodelay} option disables the Nagle buffering
611algoritm. If @var{host} is omitted, 0.0.0.0 is assumed. Only
951f1351
FB
612one TCP connection at a time is accepted. You can use @code{telnet} to
613connect to the corresponding character device.
614@table @code
615@item Example to send tcp console to 192.168.0.2 port 4444
616-serial tcp:192.168.0.2:4444
617@item Example to listen and wait on port 4444 for connection
618-serial tcp::4444,server
619@item Example to not wait and listen on ip 192.168.0.100 port 4444
620-serial tcp:192.168.0.100:4444,server,nowait
a0a821a4 621@end table
a0a821a4 622
f7499989 623@item telnet:host:port[,server][,nowait][,nodelay]
951f1351
FB
624The telnet protocol is used instead of raw tcp sockets. The options
625work the same as if you had specified @code{-serial tcp}. The
626difference is that the port acts like a telnet server or client using
627telnet option negotiation. This will also allow you to send the
628MAGIC_SYSRQ sequence if you use a telnet that supports sending the break
629sequence. Typically in unix telnet you do it with Control-] and then
630type "send break" followed by pressing the enter key.
0bab00f3 631
ffd843bc
TS
632@item unix:path[,server][,nowait]
633A unix domain socket is used instead of a tcp socket. The option works the
634same as if you had specified @code{-serial tcp} except the unix domain socket
635@var{path} is used for connections.
636
20d8a3ed
TS
637@item mon:dev_string
638This is a special option to allow the monitor to be multiplexed onto
639another serial port. The monitor is accessed with key sequence of
640@key{Control-a} and then pressing @key{c}. See monitor access
641@ref{pcsys_keys} in the -nographic section for more keys.
642@var{dev_string} should be any one of the serial devices specified
643above. An example to multiplex the monitor onto a telnet server
644listening on port 4444 would be:
645@table @code
646@item -serial mon:telnet::4444,server,nowait
647@end table
648
0bab00f3 649@end table
05d5818c 650
e57a8c0e
FB
651@item -parallel dev
652Redirect the virtual parallel port to host device @var{dev} (same
653devices as the serial port). On Linux hosts, @file{/dev/parportN} can
654be used to use hardware devices connected on the corresponding host
655parallel port.
656
657This option can be used several times to simulate up to 3 parallel
658ports.
659
c03b0f0f
FB
660Use @code{-parallel none} to disable all parallel ports.
661
a0a821a4
FB
662@item -monitor dev
663Redirect the monitor to host device @var{dev} (same devices as the
664serial port).
665The default device is @code{vc} in graphical mode and @code{stdio} in
666non graphical mode.
667
20d8a3ed
TS
668@item -echr numeric_ascii_value
669Change the escape character used for switching to the monitor when using
670monitor and serial sharing. The default is @code{0x01} when using the
671@code{-nographic} option. @code{0x01} is equal to pressing
672@code{Control-a}. You can select a different character from the ascii
673control keys where 1 through 26 map to Control-a through Control-z. For
674instance you could use the either of the following to change the escape
675character to Control-t.
676@table @code
677@item -echr 0x14
678@item -echr 20
679@end table
680
ec410fc9 681@item -s
debc7065 682Wait gdb connection to port 1234 (@pxref{gdb_usage}).
ec410fc9 683@item -p port
4046d913
PB
684Change gdb connection port. @var{port} can be either a decimal number
685to specify a TCP port, or a host device (same devices as the serial port).
52c00a5f
FB
686@item -S
687Do not start CPU at startup (you must type 'c' in the monitor).
ec410fc9 688@item -d
9d4520d0 689Output log in /tmp/qemu.log
46d4767d
FB
690@item -hdachs c,h,s,[,t]
691Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
692@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
693translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
694all thoses parameters. This option is useful for old MS-DOS disk
695images.
7c3fc84d 696
87b47350
FB
697@item -L path
698Set the directory for the BIOS, VGA BIOS and keymaps.
699
15a34c63
FB
700@item -std-vga
701Simulate a standard VGA card with Bochs VBE extensions (default is
3cb0853a
FB
702Cirrus Logic GD5446 PCI VGA). If your guest OS supports the VESA 2.0
703VBE extensions (e.g. Windows XP) and if you want to use high
704resolution modes (>= 1280x1024x16) then you should use this option.
705
3c656346
FB
706@item -no-acpi
707Disable ACPI (Advanced Configuration and Power Interface) support. Use
708it if your guest OS complains about ACPI problems (PC target machine
709only).
710
d1beab82
FB
711@item -no-reboot
712Exit instead of rebooting.
713
d63d307f
FB
714@item -loadvm file
715Start right away with a saved state (@code{loadvm} in monitor)
8e71621f
PB
716
717@item -semihosting
a87295e8
PB
718Enable semihosting syscall emulation (ARM and M68K target machines only).
719
720On ARM this implements the "Angel" interface.
721On M68K this implements the "ColdFire GDB" interface used by libgloss.
722
8e71621f
PB
723Note that this allows guest direct access to the host filesystem,
724so should only be used with trusted guest OS.
ec410fc9
FB
725@end table
726
3e11db9a
FB
727@c man end
728
debc7065 729@node pcsys_keys
3e11db9a
FB
730@section Keys
731
732@c man begin OPTIONS
733
a1b74fe8
FB
734During the graphical emulation, you can use the following keys:
735@table @key
f9859310 736@item Ctrl-Alt-f
a1b74fe8 737Toggle full screen
a0a821a4 738
f9859310 739@item Ctrl-Alt-n
a0a821a4
FB
740Switch to virtual console 'n'. Standard console mappings are:
741@table @emph
742@item 1
743Target system display
744@item 2
745Monitor
746@item 3
747Serial port
a1b74fe8
FB
748@end table
749
f9859310 750@item Ctrl-Alt
a0a821a4
FB
751Toggle mouse and keyboard grab.
752@end table
753
3e11db9a
FB
754In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
755@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
756
a0a821a4
FB
757During emulation, if you are using the @option{-nographic} option, use
758@key{Ctrl-a h} to get terminal commands:
ec410fc9
FB
759
760@table @key
a1b74fe8 761@item Ctrl-a h
ec410fc9 762Print this help
a1b74fe8 763@item Ctrl-a x
366dfc52 764Exit emulator
a1b74fe8 765@item Ctrl-a s
1f47a922 766Save disk data back to file (if -snapshot)
20d8a3ed
TS
767@item Ctrl-a t
768toggle console timestamps
a1b74fe8 769@item Ctrl-a b
1f673135 770Send break (magic sysrq in Linux)
a1b74fe8 771@item Ctrl-a c
1f673135 772Switch between console and monitor
a1b74fe8
FB
773@item Ctrl-a Ctrl-a
774Send Ctrl-a
ec410fc9 775@end table
0806e3f6
FB
776@c man end
777
778@ignore
779
1f673135
FB
780@c man begin SEEALSO
781The HTML documentation of QEMU for more precise information and Linux
782user mode emulator invocation.
783@c man end
784
785@c man begin AUTHOR
786Fabrice Bellard
787@c man end
788
789@end ignore
790
debc7065 791@node pcsys_monitor
1f673135
FB
792@section QEMU Monitor
793
794The QEMU monitor is used to give complex commands to the QEMU
795emulator. You can use it to:
796
797@itemize @minus
798
799@item
e598752a 800Remove or insert removable media images
1f673135
FB
801(such as CD-ROM or floppies)
802
803@item
804Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
805from a disk file.
806
807@item Inspect the VM state without an external debugger.
808
809@end itemize
810
811@subsection Commands
812
813The following commands are available:
814
815@table @option
816
817@item help or ? [cmd]
818Show the help for all commands or just for command @var{cmd}.
819
820@item commit
821Commit changes to the disk images (if -snapshot is used)
822
823@item info subcommand
824show various information about the system state
825
826@table @option
827@item info network
41d03949 828show the various VLANs and the associated devices
1f673135
FB
829@item info block
830show the block devices
831@item info registers
832show the cpu registers
833@item info history
834show the command line history
b389dbfb
FB
835@item info pci
836show emulated PCI device
837@item info usb
838show USB devices plugged on the virtual USB hub
839@item info usbhost
840show all USB host devices
a3c25997
FB
841@item info capture
842show information about active capturing
13a2e80f
FB
843@item info snapshots
844show list of VM snapshots
455204eb
TS
845@item info mice
846show which guest mouse is receiving events
1f673135
FB
847@end table
848
849@item q or quit
850Quit the emulator.
851
852@item eject [-f] device
e598752a 853Eject a removable medium (use -f to force it).
1f673135
FB
854
855@item change device filename
e598752a 856Change a removable medium.
1f673135
FB
857
858@item screendump filename
859Save screen into PPM image @var{filename}.
860
455204eb
TS
861@item mouse_move dx dy [dz]
862Move the active mouse to the specified coordinates @var{dx} @var{dy}
863with optional scroll axis @var{dz}.
864
865@item mouse_button val
866Change the active mouse button state @var{val} (1=L, 2=M, 4=R).
867
868@item mouse_set index
869Set which mouse device receives events at given @var{index}, index
870can be obtained with
871@example
872info mice
873@end example
874
a3c25997
FB
875@item wavcapture filename [frequency [bits [channels]]]
876Capture audio into @var{filename}. Using sample rate @var{frequency}
877bits per sample @var{bits} and number of channels @var{channels}.
878
879Defaults:
880@itemize @minus
881@item Sample rate = 44100 Hz - CD quality
882@item Bits = 16
883@item Number of channels = 2 - Stereo
884@end itemize
885
886@item stopcapture index
887Stop capture with a given @var{index}, index can be obtained with
888@example
889info capture
890@end example
891
1f673135
FB
892@item log item1[,...]
893Activate logging of the specified items to @file{/tmp/qemu.log}.
894
13a2e80f
FB
895@item savevm [tag|id]
896Create a snapshot of the whole virtual machine. If @var{tag} is
897provided, it is used as human readable identifier. If there is already
898a snapshot with the same tag or ID, it is replaced. More info at
899@ref{vm_snapshots}.
1f673135 900
13a2e80f
FB
901@item loadvm tag|id
902Set the whole virtual machine to the snapshot identified by the tag
903@var{tag} or the unique snapshot ID @var{id}.
904
905@item delvm tag|id
906Delete the snapshot identified by @var{tag} or @var{id}.
1f673135
FB
907
908@item stop
909Stop emulation.
910
911@item c or cont
912Resume emulation.
913
914@item gdbserver [port]
915Start gdbserver session (default port=1234)
916
917@item x/fmt addr
918Virtual memory dump starting at @var{addr}.
919
920@item xp /fmt addr
921Physical memory dump starting at @var{addr}.
922
923@var{fmt} is a format which tells the command how to format the
924data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
925
926@table @var
927@item count
928is the number of items to be dumped.
929
930@item format
931can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
932c (char) or i (asm instruction).
933
934@item size
52c00a5f
FB
935can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
936@code{h} or @code{w} can be specified with the @code{i} format to
937respectively select 16 or 32 bit code instruction size.
1f673135
FB
938
939@end table
940
941Examples:
942@itemize
943@item
944Dump 10 instructions at the current instruction pointer:
945@example
946(qemu) x/10i $eip
9470x90107063: ret
9480x90107064: sti
9490x90107065: lea 0x0(%esi,1),%esi
9500x90107069: lea 0x0(%edi,1),%edi
9510x90107070: ret
9520x90107071: jmp 0x90107080
9530x90107073: nop
9540x90107074: nop
9550x90107075: nop
9560x90107076: nop
957@end example
958
959@item
960Dump 80 16 bit values at the start of the video memory.
debc7065 961@smallexample
1f673135
FB
962(qemu) xp/80hx 0xb8000
9630x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
9640x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
9650x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
9660x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
9670x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
9680x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
9690x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
9700x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
9710x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
9720x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
debc7065 973@end smallexample
1f673135
FB
974@end itemize
975
976@item p or print/fmt expr
977
978Print expression value. Only the @var{format} part of @var{fmt} is
979used.
0806e3f6 980
a3a91a35
FB
981@item sendkey keys
982
983Send @var{keys} to the emulator. Use @code{-} to press several keys
984simultaneously. Example:
985@example
986sendkey ctrl-alt-f1
987@end example
988
989This command is useful to send keys that your graphical user interface
990intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
991
15a34c63
FB
992@item system_reset
993
994Reset the system.
995
b389dbfb
FB
996@item usb_add devname
997
0aff66b5
PB
998Add the USB device @var{devname}. For details of available devices see
999@ref{usb_devices}
b389dbfb
FB
1000
1001@item usb_del devname
1002
1003Remove the USB device @var{devname} from the QEMU virtual USB
1004hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
1005command @code{info usb} to see the devices you can remove.
1006
1f673135 1007@end table
0806e3f6 1008
1f673135
FB
1009@subsection Integer expressions
1010
1011The monitor understands integers expressions for every integer
1012argument. You can use register names to get the value of specifics
1013CPU registers by prefixing them with @emph{$}.
ec410fc9 1014
1f47a922
FB
1015@node disk_images
1016@section Disk Images
1017
acd935ef
FB
1018Since version 0.6.1, QEMU supports many disk image formats, including
1019growable disk images (their size increase as non empty sectors are
13a2e80f
FB
1020written), compressed and encrypted disk images. Version 0.8.3 added
1021the new qcow2 disk image format which is essential to support VM
1022snapshots.
1f47a922 1023
debc7065
FB
1024@menu
1025* disk_images_quickstart:: Quick start for disk image creation
1026* disk_images_snapshot_mode:: Snapshot mode
13a2e80f 1027* vm_snapshots:: VM snapshots
debc7065 1028* qemu_img_invocation:: qemu-img Invocation
19cb3738 1029* host_drives:: Using host drives
debc7065
FB
1030* disk_images_fat_images:: Virtual FAT disk images
1031@end menu
1032
1033@node disk_images_quickstart
acd935ef
FB
1034@subsection Quick start for disk image creation
1035
1036You can create a disk image with the command:
1f47a922 1037@example
acd935ef 1038qemu-img create myimage.img mysize
1f47a922 1039@end example
acd935ef
FB
1040where @var{myimage.img} is the disk image filename and @var{mysize} is its
1041size in kilobytes. You can add an @code{M} suffix to give the size in
1042megabytes and a @code{G} suffix for gigabytes.
1043
debc7065 1044See @ref{qemu_img_invocation} for more information.
1f47a922 1045
debc7065 1046@node disk_images_snapshot_mode
1f47a922
FB
1047@subsection Snapshot mode
1048
1049If you use the option @option{-snapshot}, all disk images are
1050considered as read only. When sectors in written, they are written in
1051a temporary file created in @file{/tmp}. You can however force the
acd935ef
FB
1052write back to the raw disk images by using the @code{commit} monitor
1053command (or @key{C-a s} in the serial console).
1f47a922 1054
13a2e80f
FB
1055@node vm_snapshots
1056@subsection VM snapshots
1057
1058VM snapshots are snapshots of the complete virtual machine including
1059CPU state, RAM, device state and the content of all the writable
1060disks. In order to use VM snapshots, you must have at least one non
1061removable and writable block device using the @code{qcow2} disk image
1062format. Normally this device is the first virtual hard drive.
1063
1064Use the monitor command @code{savevm} to create a new VM snapshot or
1065replace an existing one. A human readable name can be assigned to each
19d36792 1066snapshot in addition to its numerical ID.
13a2e80f
FB
1067
1068Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
1069a VM snapshot. @code{info snapshots} lists the available snapshots
1070with their associated information:
1071
1072@example
1073(qemu) info snapshots
1074Snapshot devices: hda
1075Snapshot list (from hda):
1076ID TAG VM SIZE DATE VM CLOCK
10771 start 41M 2006-08-06 12:38:02 00:00:14.954
10782 40M 2006-08-06 12:43:29 00:00:18.633
10793 msys 40M 2006-08-06 12:44:04 00:00:23.514
1080@end example
1081
1082A VM snapshot is made of a VM state info (its size is shown in
1083@code{info snapshots}) and a snapshot of every writable disk image.
1084The VM state info is stored in the first @code{qcow2} non removable
1085and writable block device. The disk image snapshots are stored in
1086every disk image. The size of a snapshot in a disk image is difficult
1087to evaluate and is not shown by @code{info snapshots} because the
1088associated disk sectors are shared among all the snapshots to save
19d36792
FB
1089disk space (otherwise each snapshot would need a full copy of all the
1090disk images).
13a2e80f
FB
1091
1092When using the (unrelated) @code{-snapshot} option
1093(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
1094but they are deleted as soon as you exit QEMU.
1095
1096VM snapshots currently have the following known limitations:
1097@itemize
1098@item
1099They cannot cope with removable devices if they are removed or
1100inserted after a snapshot is done.
1101@item
1102A few device drivers still have incomplete snapshot support so their
1103state is not saved or restored properly (in particular USB).
1104@end itemize
1105
acd935ef
FB
1106@node qemu_img_invocation
1107@subsection @code{qemu-img} Invocation
1f47a922 1108
acd935ef 1109@include qemu-img.texi
05efe46e 1110
19cb3738
FB
1111@node host_drives
1112@subsection Using host drives
1113
1114In addition to disk image files, QEMU can directly access host
1115devices. We describe here the usage for QEMU version >= 0.8.3.
1116
1117@subsubsection Linux
1118
1119On Linux, you can directly use the host device filename instead of a
1120disk image filename provided you have enough proviledge to access
1121it. For example, use @file{/dev/cdrom} to access to the CDROM or
1122@file{/dev/fd0} for the floppy.
1123
f542086d 1124@table @code
19cb3738
FB
1125@item CD
1126You can specify a CDROM device even if no CDROM is loaded. QEMU has
1127specific code to detect CDROM insertion or removal. CDROM ejection by
1128the guest OS is supported. Currently only data CDs are supported.
1129@item Floppy
1130You can specify a floppy device even if no floppy is loaded. Floppy
1131removal is currently not detected accurately (if you change floppy
1132without doing floppy access while the floppy is not loaded, the guest
1133OS will think that the same floppy is loaded).
1134@item Hard disks
1135Hard disks can be used. Normally you must specify the whole disk
1136(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
1137see it as a partitioned disk. WARNING: unless you know what you do, it
1138is better to only make READ-ONLY accesses to the hard disk otherwise
1139you may corrupt your host data (use the @option{-snapshot} command
1140line option or modify the device permissions accordingly).
1141@end table
1142
1143@subsubsection Windows
1144
01781963
FB
1145@table @code
1146@item CD
1147The prefered syntax is the drive letter (e.g. @file{d:}). The
1148alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
1149supported as an alias to the first CDROM drive.
19cb3738 1150
e598752a 1151Currently there is no specific code to handle removable media, so it
19cb3738
FB
1152is better to use the @code{change} or @code{eject} monitor commands to
1153change or eject media.
01781963
FB
1154@item Hard disks
1155Hard disks can be used with the syntax: @file{\\.\PhysicalDriveN}
1156where @var{N} is the drive number (0 is the first hard disk).
1157
1158WARNING: unless you know what you do, it is better to only make
1159READ-ONLY accesses to the hard disk otherwise you may corrupt your
1160host data (use the @option{-snapshot} command line so that the
1161modifications are written in a temporary file).
1162@end table
1163
19cb3738
FB
1164
1165@subsubsection Mac OS X
1166
1167@file{/dev/cdrom} is an alias to the first CDROM.
1168
e598752a 1169Currently there is no specific code to handle removable media, so it
19cb3738
FB
1170is better to use the @code{change} or @code{eject} monitor commands to
1171change or eject media.
1172
debc7065 1173@node disk_images_fat_images
2c6cadd4
FB
1174@subsection Virtual FAT disk images
1175
1176QEMU can automatically create a virtual FAT disk image from a
1177directory tree. In order to use it, just type:
1178
1179@example
1180qemu linux.img -hdb fat:/my_directory
1181@end example
1182
1183Then you access access to all the files in the @file{/my_directory}
1184directory without having to copy them in a disk image or to export
1185them via SAMBA or NFS. The default access is @emph{read-only}.
1186
1187Floppies can be emulated with the @code{:floppy:} option:
1188
1189@example
1190qemu linux.img -fda fat:floppy:/my_directory
1191@end example
1192
1193A read/write support is available for testing (beta stage) with the
1194@code{:rw:} option:
1195
1196@example
1197qemu linux.img -fda fat:floppy:rw:/my_directory
1198@end example
1199
1200What you should @emph{never} do:
1201@itemize
1202@item use non-ASCII filenames ;
1203@item use "-snapshot" together with ":rw:" ;
85b2c688
FB
1204@item expect it to work when loadvm'ing ;
1205@item write to the FAT directory on the host system while accessing it with the guest system.
2c6cadd4
FB
1206@end itemize
1207
debc7065 1208@node pcsys_network
9d4fb82e
FB
1209@section Network emulation
1210
41d03949
FB
1211QEMU can simulate several networks cards (NE2000 boards on the PC
1212target) and can connect them to an arbitrary number of Virtual Local
1213Area Networks (VLANs). Host TAP devices can be connected to any QEMU
1214VLAN. VLAN can be connected between separate instances of QEMU to
1215simulate large networks. For simpler usage, a non priviledged user mode
1216network stack can replace the TAP device to have a basic network
1217connection.
1218
1219@subsection VLANs
9d4fb82e 1220
41d03949
FB
1221QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
1222connection between several network devices. These devices can be for
1223example QEMU virtual Ethernet cards or virtual Host ethernet devices
1224(TAP devices).
9d4fb82e 1225
41d03949
FB
1226@subsection Using TAP network interfaces
1227
1228This is the standard way to connect QEMU to a real network. QEMU adds
1229a virtual network device on your host (called @code{tapN}), and you
1230can then configure it as if it was a real ethernet card.
9d4fb82e 1231
8f40c388
FB
1232@subsubsection Linux host
1233
9d4fb82e
FB
1234As an example, you can download the @file{linux-test-xxx.tar.gz}
1235archive and copy the script @file{qemu-ifup} in @file{/etc} and
1236configure properly @code{sudo} so that the command @code{ifconfig}
1237contained in @file{qemu-ifup} can be executed as root. You must verify
41d03949 1238that your host kernel supports the TAP network interfaces: the
9d4fb82e
FB
1239device @file{/dev/net/tun} must be present.
1240
ee0f4751
FB
1241See @ref{sec_invocation} to have examples of command lines using the
1242TAP network interfaces.
9d4fb82e 1243
8f40c388
FB
1244@subsubsection Windows host
1245
1246There is a virtual ethernet driver for Windows 2000/XP systems, called
1247TAP-Win32. But it is not included in standard QEMU for Windows,
1248so you will need to get it separately. It is part of OpenVPN package,
1249so download OpenVPN from : @url{http://openvpn.net/}.
1250
9d4fb82e
FB
1251@subsection Using the user mode network stack
1252
41d03949
FB
1253By using the option @option{-net user} (default configuration if no
1254@option{-net} option is specified), QEMU uses a completely user mode
1255network stack (you don't need root priviledge to use the virtual
1256network). The virtual network configuration is the following:
9d4fb82e
FB
1257
1258@example
1259
41d03949
FB
1260 QEMU VLAN <------> Firewall/DHCP server <-----> Internet
1261 | (10.0.2.2)
9d4fb82e 1262 |
2518bd0d
FB
1263 ----> DNS server (10.0.2.3)
1264 |
1265 ----> SMB server (10.0.2.4)
9d4fb82e
FB
1266@end example
1267
1268The QEMU VM behaves as if it was behind a firewall which blocks all
1269incoming connections. You can use a DHCP client to automatically
41d03949
FB
1270configure the network in the QEMU VM. The DHCP server assign addresses
1271to the hosts starting from 10.0.2.15.
9d4fb82e
FB
1272
1273In order to check that the user mode network is working, you can ping
1274the address 10.0.2.2 and verify that you got an address in the range
127510.0.2.x from the QEMU virtual DHCP server.
1276
b415a407
FB
1277Note that @code{ping} is not supported reliably to the internet as it
1278would require root priviledges. It means you can only ping the local
1279router (10.0.2.2).
1280
9bf05444
FB
1281When using the built-in TFTP server, the router is also the TFTP
1282server.
1283
1284When using the @option{-redir} option, TCP or UDP connections can be
1285redirected from the host to the guest. It allows for example to
1286redirect X11, telnet or SSH connections.
443f1376 1287
41d03949
FB
1288@subsection Connecting VLANs between QEMU instances
1289
1290Using the @option{-net socket} option, it is possible to make VLANs
1291that span several QEMU instances. See @ref{sec_invocation} to have a
1292basic example.
1293
9d4fb82e
FB
1294@node direct_linux_boot
1295@section Direct Linux Boot
1f673135
FB
1296
1297This section explains how to launch a Linux kernel inside QEMU without
1298having to make a full bootable image. It is very useful for fast Linux
ee0f4751 1299kernel testing.
1f673135 1300
ee0f4751 1301The syntax is:
1f673135 1302@example
ee0f4751 1303qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1f673135
FB
1304@end example
1305
ee0f4751
FB
1306Use @option{-kernel} to provide the Linux kernel image and
1307@option{-append} to give the kernel command line arguments. The
1308@option{-initrd} option can be used to provide an INITRD image.
1f673135 1309
ee0f4751
FB
1310When using the direct Linux boot, a disk image for the first hard disk
1311@file{hda} is required because its boot sector is used to launch the
1312Linux kernel.
1f673135 1313
ee0f4751
FB
1314If you do not need graphical output, you can disable it and redirect
1315the virtual serial port and the QEMU monitor to the console with the
1316@option{-nographic} option. The typical command line is:
1f673135 1317@example
ee0f4751
FB
1318qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1319 -append "root=/dev/hda console=ttyS0" -nographic
1f673135
FB
1320@end example
1321
ee0f4751
FB
1322Use @key{Ctrl-a c} to switch between the serial console and the
1323monitor (@pxref{pcsys_keys}).
1f673135 1324
debc7065 1325@node pcsys_usb
b389dbfb
FB
1326@section USB emulation
1327
0aff66b5
PB
1328QEMU emulates a PCI UHCI USB controller. You can virtually plug
1329virtual USB devices or real host USB devices (experimental, works only
1330on Linux hosts). Qemu will automatically create and connect virtual USB hubs
f542086d 1331as necessary to connect multiple USB devices.
b389dbfb 1332
0aff66b5
PB
1333@menu
1334* usb_devices::
1335* host_usb_devices::
1336@end menu
1337@node usb_devices
1338@subsection Connecting USB devices
b389dbfb 1339
0aff66b5
PB
1340USB devices can be connected with the @option{-usbdevice} commandline option
1341or the @code{usb_add} monitor command. Available devices are:
b389dbfb 1342
0aff66b5
PB
1343@table @var
1344@item @code{mouse}
1345Virtual Mouse. This will override the PS/2 mouse emulation when activated.
1346@item @code{tablet}
c6d46c20 1347Pointer device that uses absolute coordinates (like a touchscreen).
0aff66b5
PB
1348This means qemu is able to report the mouse position without having
1349to grab the mouse. Also overrides the PS/2 mouse emulation when activated.
1350@item @code{disk:file}
1351Mass storage device based on @var{file} (@pxref{disk_images})
1352@item @code{host:bus.addr}
1353Pass through the host device identified by @var{bus.addr}
1354(Linux only)
1355@item @code{host:vendor_id:product_id}
1356Pass through the host device identified by @var{vendor_id:product_id}
1357(Linux only)
1358@end table
b389dbfb 1359
0aff66b5 1360@node host_usb_devices
b389dbfb
FB
1361@subsection Using host USB devices on a Linux host
1362
1363WARNING: this is an experimental feature. QEMU will slow down when
1364using it. USB devices requiring real time streaming (i.e. USB Video
1365Cameras) are not supported yet.
1366
1367@enumerate
1368@item If you use an early Linux 2.4 kernel, verify that no Linux driver
1369is actually using the USB device. A simple way to do that is simply to
1370disable the corresponding kernel module by renaming it from @file{mydriver.o}
1371to @file{mydriver.o.disabled}.
1372
1373@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1374@example
1375ls /proc/bus/usb
1376001 devices drivers
1377@end example
1378
1379@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:
1380@example
1381chown -R myuid /proc/bus/usb
1382@end example
1383
1384@item Launch QEMU and do in the monitor:
1385@example
1386info usbhost
1387 Device 1.2, speed 480 Mb/s
1388 Class 00: USB device 1234:5678, USB DISK
1389@end example
1390You should see the list of the devices you can use (Never try to use
1391hubs, it won't work).
1392
1393@item Add the device in QEMU by using:
1394@example
1395usb_add host:1234:5678
1396@end example
1397
1398Normally the guest OS should report that a new USB device is
1399plugged. You can use the option @option{-usbdevice} to do the same.
1400
1401@item Now you can try to use the host USB device in QEMU.
1402
1403@end enumerate
1404
1405When relaunching QEMU, you may have to unplug and plug again the USB
1406device to make it work again (this is a bug).
1407
0806e3f6 1408@node gdb_usage
da415d54
FB
1409@section GDB usage
1410
1411QEMU has a primitive support to work with gdb, so that you can do
0806e3f6 1412'Ctrl-C' while the virtual machine is running and inspect its state.
da415d54 1413
9d4520d0 1414In order to use gdb, launch qemu with the '-s' option. It will wait for a
da415d54
FB
1415gdb connection:
1416@example
debc7065
FB
1417> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1418 -append "root=/dev/hda"
da415d54
FB
1419Connected to host network interface: tun0
1420Waiting gdb connection on port 1234
1421@end example
1422
1423Then launch gdb on the 'vmlinux' executable:
1424@example
1425> gdb vmlinux
1426@end example
1427
1428In gdb, connect to QEMU:
1429@example
6c9bf893 1430(gdb) target remote localhost:1234
da415d54
FB
1431@end example
1432
1433Then you can use gdb normally. For example, type 'c' to launch the kernel:
1434@example
1435(gdb) c
1436@end example
1437
0806e3f6
FB
1438Here are some useful tips in order to use gdb on system code:
1439
1440@enumerate
1441@item
1442Use @code{info reg} to display all the CPU registers.
1443@item
1444Use @code{x/10i $eip} to display the code at the PC position.
1445@item
1446Use @code{set architecture i8086} to dump 16 bit code. Then use
294e8637 1447@code{x/10i $cs*16+$eip} to dump the code at the PC position.
0806e3f6
FB
1448@end enumerate
1449
debc7065 1450@node pcsys_os_specific
1a084f3d
FB
1451@section Target OS specific information
1452
1453@subsection Linux
1454
15a34c63
FB
1455To have access to SVGA graphic modes under X11, use the @code{vesa} or
1456the @code{cirrus} X11 driver. For optimal performances, use 16 bit
1457color depth in the guest and the host OS.
1a084f3d 1458
e3371e62
FB
1459When using a 2.6 guest Linux kernel, you should add the option
1460@code{clock=pit} on the kernel command line because the 2.6 Linux
1461kernels make very strict real time clock checks by default that QEMU
1462cannot simulate exactly.
1463
7c3fc84d
FB
1464When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1465not activated because QEMU is slower with this patch. The QEMU
1466Accelerator Module is also much slower in this case. Earlier Fedora
1467Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporte this
1468patch by default. Newer kernels don't have it.
1469
1a084f3d
FB
1470@subsection Windows
1471
1472If you have a slow host, using Windows 95 is better as it gives the
1473best speed. Windows 2000 is also a good choice.
1474
e3371e62
FB
1475@subsubsection SVGA graphic modes support
1476
1477QEMU emulates a Cirrus Logic GD5446 Video
15a34c63
FB
1478card. All Windows versions starting from Windows 95 should recognize
1479and use this graphic card. For optimal performances, use 16 bit color
1480depth in the guest and the host OS.
1a084f3d 1481
3cb0853a
FB
1482If you are using Windows XP as guest OS and if you want to use high
1483resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
14841280x1024x16), then you should use the VESA VBE virtual graphic card
1485(option @option{-std-vga}).
1486
e3371e62
FB
1487@subsubsection CPU usage reduction
1488
1489Windows 9x does not correctly use the CPU HLT
15a34c63
FB
1490instruction. The result is that it takes host CPU cycles even when
1491idle. You can install the utility from
1492@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
1493problem. Note that no such tool is needed for NT, 2000 or XP.
1a084f3d 1494
9d0a8e6f 1495@subsubsection Windows 2000 disk full problem
e3371e62 1496
9d0a8e6f
FB
1497Windows 2000 has a bug which gives a disk full problem during its
1498installation. When installing it, use the @option{-win2k-hack} QEMU
1499option to enable a specific workaround. After Windows 2000 is
1500installed, you no longer need this option (this option slows down the
1501IDE transfers).
e3371e62 1502
6cc721cf
FB
1503@subsubsection Windows 2000 shutdown
1504
1505Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1506can. It comes from the fact that Windows 2000 does not automatically
1507use the APM driver provided by the BIOS.
1508
1509In order to correct that, do the following (thanks to Struan
1510Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
1511Add/Troubleshoot a device => Add a new device & Next => No, select the
1512hardware from a list & Next => NT Apm/Legacy Support & Next => Next
1513(again) a few times. Now the driver is installed and Windows 2000 now
1514correctly instructs QEMU to shutdown at the appropriate moment.
1515
1516@subsubsection Share a directory between Unix and Windows
1517
1518See @ref{sec_invocation} about the help of the option @option{-smb}.
1519
2192c332 1520@subsubsection Windows XP security problem
e3371e62
FB
1521
1522Some releases of Windows XP install correctly but give a security
1523error when booting:
1524@example
1525A problem is preventing Windows from accurately checking the
1526license for this computer. Error code: 0x800703e6.
1527@end example
e3371e62 1528
2192c332
FB
1529The workaround is to install a service pack for XP after a boot in safe
1530mode. Then reboot, and the problem should go away. Since there is no
1531network while in safe mode, its recommended to download the full
1532installation of SP1 or SP2 and transfer that via an ISO or using the
1533vvfat block device ("-hdb fat:directory_which_holds_the_SP").
e3371e62 1534
a0a821a4
FB
1535@subsection MS-DOS and FreeDOS
1536
1537@subsubsection CPU usage reduction
1538
1539DOS does not correctly use the CPU HLT instruction. The result is that
1540it takes host CPU cycles even when idle. You can install the utility
1541from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
1542problem.
1543
debc7065 1544@node QEMU System emulator for non PC targets
3f9f3aa1
FB
1545@chapter QEMU System emulator for non PC targets
1546
1547QEMU is a generic emulator and it emulates many non PC
1548machines. Most of the options are similar to the PC emulator. The
1549differences are mentionned in the following sections.
1550
debc7065
FB
1551@menu
1552* QEMU PowerPC System emulator::
1553* Sparc32 System emulator invocation::
1554* Sparc64 System emulator invocation::
1555* MIPS System emulator invocation::
1556* ARM System emulator invocation::
209a4e69 1557* ColdFire System emulator invocation::
debc7065
FB
1558@end menu
1559
1560@node QEMU PowerPC System emulator
3f9f3aa1 1561@section QEMU PowerPC System emulator
1a084f3d 1562
15a34c63
FB
1563Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1564or PowerMac PowerPC system.
1a084f3d 1565
b671f9ed 1566QEMU emulates the following PowerMac peripherals:
1a084f3d 1567
15a34c63
FB
1568@itemize @minus
1569@item
1570UniNorth PCI Bridge
1571@item
1572PCI VGA compatible card with VESA Bochs Extensions
1573@item
15742 PMAC IDE interfaces with hard disk and CD-ROM support
1575@item
1576NE2000 PCI adapters
1577@item
1578Non Volatile RAM
1579@item
1580VIA-CUDA with ADB keyboard and mouse.
1a084f3d
FB
1581@end itemize
1582
b671f9ed 1583QEMU emulates the following PREP peripherals:
52c00a5f
FB
1584
1585@itemize @minus
1586@item
15a34c63
FB
1587PCI Bridge
1588@item
1589PCI VGA compatible card with VESA Bochs Extensions
1590@item
52c00a5f
FB
15912 IDE interfaces with hard disk and CD-ROM support
1592@item
1593Floppy disk
1594@item
15a34c63 1595NE2000 network adapters
52c00a5f
FB
1596@item
1597Serial port
1598@item
1599PREP Non Volatile RAM
15a34c63
FB
1600@item
1601PC compatible keyboard and mouse.
52c00a5f
FB
1602@end itemize
1603
15a34c63 1604QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
3f9f3aa1 1605@url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
52c00a5f 1606
15a34c63
FB
1607@c man begin OPTIONS
1608
1609The following options are specific to the PowerPC emulation:
1610
1611@table @option
1612
15a34c63
FB
1613@item -g WxH[xDEPTH]
1614
1615Set the initial VGA graphic mode. The default is 800x600x15.
1616
1617@end table
1618
1619@c man end
1620
1621
52c00a5f 1622More information is available at
3f9f3aa1 1623@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
52c00a5f 1624
debc7065 1625@node Sparc32 System emulator invocation
3f9f3aa1 1626@section Sparc32 System emulator invocation
e80cfcfc 1627
0986ac3b 1628Use the executable @file{qemu-system-sparc} to simulate a SparcStation 5
3475187d 1629(sun4m architecture). The emulation is somewhat complete.
e80cfcfc 1630
b671f9ed 1631QEMU emulates the following sun4m peripherals:
e80cfcfc
FB
1632
1633@itemize @minus
3475187d 1634@item
e80cfcfc
FB
1635IOMMU
1636@item
1637TCX Frame buffer
1638@item
1639Lance (Am7990) Ethernet
1640@item
1641Non Volatile RAM M48T08
1642@item
3475187d
FB
1643Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1644and power/reset logic
1645@item
1646ESP SCSI controller with hard disk and CD-ROM support
1647@item
1648Floppy drive
e80cfcfc
FB
1649@end itemize
1650
3475187d
FB
1651The number of peripherals is fixed in the architecture.
1652
30a604f3 1653Since version 0.8.2, QEMU uses OpenBIOS
0986ac3b
FB
1654@url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
1655firmware implementation. The goal is to implement a 100% IEEE
16561275-1994 (referred to as Open Firmware) compliant firmware.
3475187d
FB
1657
1658A sample Linux 2.6 series kernel and ram disk image are available on
0986ac3b
FB
1659the QEMU web site. Please note that currently NetBSD, OpenBSD or
1660Solaris kernels don't work.
3475187d
FB
1661
1662@c man begin OPTIONS
1663
1664The following options are specific to the Sparc emulation:
1665
1666@table @option
1667
1668@item -g WxH
1669
1670Set the initial TCX graphic mode. The default is 1024x768.
1671
66508601
BS
1672@item -prom-env string
1673
1674Set OpenBIOS variables in NVRAM, for example:
1675
1676@example
1677qemu-system-sparc -prom-env 'auto-boot?=false' \
1678 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
1679@end example
1680
3475187d
FB
1681@end table
1682
1683@c man end
1684
debc7065 1685@node Sparc64 System emulator invocation
3f9f3aa1 1686@section Sparc64 System emulator invocation
e80cfcfc 1687
3475187d
FB
1688Use the executable @file{qemu-system-sparc64} to simulate a Sun4u machine.
1689The emulator is not usable for anything yet.
b756921a 1690
83469015
FB
1691QEMU emulates the following sun4u peripherals:
1692
1693@itemize @minus
1694@item
1695UltraSparc IIi APB PCI Bridge
1696@item
1697PCI VGA compatible card with VESA Bochs Extensions
1698@item
1699Non Volatile RAM M48T59
1700@item
1701PC-compatible serial ports
1702@end itemize
1703
debc7065 1704@node MIPS System emulator invocation
3f9f3aa1 1705@section MIPS System emulator invocation
9d0a8e6f
FB
1706
1707Use the executable @file{qemu-system-mips} to simulate a MIPS machine.
3f9f3aa1
FB
1708The emulator is able to boot a Linux kernel and to run a Linux Debian
1709installation from NFS. The following devices are emulated:
1710
1711@itemize @minus
1712@item
1713MIPS R4K CPU
1714@item
1715PC style serial port
1716@item
1717NE2000 network card
1718@end itemize
1719
1720More information is available in the QEMU mailing-list archive.
1721
debc7065 1722@node ARM System emulator invocation
3f9f3aa1
FB
1723@section ARM System emulator invocation
1724
1725Use the executable @file{qemu-system-arm} to simulate a ARM
1726machine. The ARM Integrator/CP board is emulated with the following
1727devices:
1728
1729@itemize @minus
1730@item
ce819861 1731ARM926E, ARM1026E or ARM946E CPU
3f9f3aa1
FB
1732@item
1733Two PL011 UARTs
1734@item
1735SMC 91c111 Ethernet adapter
00a9bf19
PB
1736@item
1737PL110 LCD controller
1738@item
1739PL050 KMI with PS/2 keyboard and mouse.
a1bb27b1
PB
1740@item
1741PL181 MultiMedia Card Interface with SD card.
00a9bf19
PB
1742@end itemize
1743
1744The ARM Versatile baseboard is emulated with the following devices:
1745
1746@itemize @minus
1747@item
1748ARM926E CPU
1749@item
1750PL190 Vectored Interrupt Controller
1751@item
1752Four PL011 UARTs
1753@item
1754SMC 91c111 Ethernet adapter
1755@item
1756PL110 LCD controller
1757@item
1758PL050 KMI with PS/2 keyboard and mouse.
1759@item
1760PCI host bridge. Note the emulated PCI bridge only provides access to
1761PCI memory space. It does not provide access to PCI IO space.
1762This means some devices (eg. ne2k_pci NIC) are not useable, and others
1763(eg. rtl8139 NIC) are only useable when the guest drivers use the memory
1764mapped control registers.
e6de1bad
PB
1765@item
1766PCI OHCI USB controller.
1767@item
1768LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
a1bb27b1
PB
1769@item
1770PL181 MultiMedia Card Interface with SD card.
3f9f3aa1
FB
1771@end itemize
1772
d7739d75
PB
1773The ARM RealView Emulation baseboard is emulated with the following devices:
1774
1775@itemize @minus
1776@item
1777ARM926E CPU
1778@item
1779ARM AMBA Generic/Distributed Interrupt Controller
1780@item
1781Four PL011 UARTs
1782@item
1783SMC 91c111 Ethernet adapter
1784@item
1785PL110 LCD controller
1786@item
1787PL050 KMI with PS/2 keyboard and mouse
1788@item
1789PCI host bridge
1790@item
1791PCI OHCI USB controller
1792@item
1793LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
a1bb27b1
PB
1794@item
1795PL181 MultiMedia Card Interface with SD card.
d7739d75
PB
1796@end itemize
1797
b00052e4
AZ
1798The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
1799and "Terrier") emulation includes the following peripherals:
1800
1801@itemize @minus
1802@item
1803Intel PXA270 System-on-chip (ARM V5TE core)
1804@item
1805NAND Flash memory
1806@item
1807IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
1808@item
1809On-chip OHCI USB controller
1810@item
1811On-chip LCD controller
1812@item
1813On-chip Real Time Clock
1814@item
1815TI ADS7846 touchscreen controller on SSP bus
1816@item
1817Maxim MAX1111 analog-digital converter on I@math{^2}C bus
1818@item
1819GPIO-connected keyboard controller and LEDs
1820@item
549444e1 1821Secure Digital card connected to PXA MMC/SD host
b00052e4
AZ
1822@item
1823Three on-chip UARTs
1824@item
1825WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
1826@end itemize
1827
3f9f3aa1
FB
1828A Linux 2.6 test image is available on the QEMU web site. More
1829information is available in the QEMU mailing-list archive.
9d0a8e6f 1830
209a4e69
PB
1831@node ColdFire System emulator invocation
1832@section ColdFire System emulator invocation
1833
1834Use the executable @file{qemu-system-m68k} to simulate a ColdFire machine.
1835The emulator is able to boot a uClinux kernel.
1836The following devices are emulated:
1837
1838@itemize @minus
1839@item
1840MCF5206 ColdFire V2 Microprocessor.
1841@item
1842Two on-chip UARTs.
1843@end itemize
1844
83195237
FB
1845@node QEMU User space emulator
1846@chapter QEMU User space emulator
1847
1848@menu
1849* Supported Operating Systems ::
1850* Linux User space emulator::
1851* Mac OS X/Darwin User space emulator ::
1852@end menu
1853
1854@node Supported Operating Systems
1855@section Supported Operating Systems
1856
1857The following OS are supported in user space emulation:
1858
1859@itemize @minus
1860@item
1861Linux (refered as qemu-linux-user)
1862@item
1863Mac OS X/Darwin (refered as qemu-darwin-user)
1864@end itemize
1865
1866@node Linux User space emulator
1867@section Linux User space emulator
386405f7 1868
debc7065
FB
1869@menu
1870* Quick Start::
1871* Wine launch::
1872* Command line options::
79737e4a 1873* Other binaries::
debc7065
FB
1874@end menu
1875
1876@node Quick Start
83195237 1877@subsection Quick Start
df0f11a0 1878
1f673135
FB
1879In order to launch a Linux process, QEMU needs the process executable
1880itself and all the target (x86) dynamic libraries used by it.
386405f7 1881
1f673135 1882@itemize
386405f7 1883
1f673135
FB
1884@item On x86, you can just try to launch any process by using the native
1885libraries:
386405f7 1886
1f673135
FB
1887@example
1888qemu-i386 -L / /bin/ls
1889@end example
386405f7 1890
1f673135
FB
1891@code{-L /} tells that the x86 dynamic linker must be searched with a
1892@file{/} prefix.
386405f7 1893
dbcf5e82
TS
1894@item Since QEMU is also a linux process, you can launch qemu with
1895qemu (NOTE: you can only do that if you compiled QEMU from the sources):
386405f7 1896
1f673135
FB
1897@example
1898qemu-i386 -L / qemu-i386 -L / /bin/ls
1899@end example
386405f7 1900
1f673135
FB
1901@item On non x86 CPUs, you need first to download at least an x86 glibc
1902(@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
1903@code{LD_LIBRARY_PATH} is not set:
df0f11a0 1904
1f673135
FB
1905@example
1906unset LD_LIBRARY_PATH
1907@end example
1eb87257 1908
1f673135 1909Then you can launch the precompiled @file{ls} x86 executable:
1eb87257 1910
1f673135
FB
1911@example
1912qemu-i386 tests/i386/ls
1913@end example
1914You can look at @file{qemu-binfmt-conf.sh} so that
1915QEMU is automatically launched by the Linux kernel when you try to
1916launch x86 executables. It requires the @code{binfmt_misc} module in the
1917Linux kernel.
1eb87257 1918
1f673135
FB
1919@item The x86 version of QEMU is also included. You can try weird things such as:
1920@example
debc7065
FB
1921qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
1922 /usr/local/qemu-i386/bin/ls-i386
1f673135 1923@end example
1eb20527 1924
1f673135 1925@end itemize
1eb20527 1926
debc7065 1927@node Wine launch
83195237 1928@subsection Wine launch
1eb20527 1929
1f673135 1930@itemize
386405f7 1931
1f673135
FB
1932@item Ensure that you have a working QEMU with the x86 glibc
1933distribution (see previous section). In order to verify it, you must be
1934able to do:
386405f7 1935
1f673135
FB
1936@example
1937qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1938@end example
386405f7 1939
1f673135
FB
1940@item Download the binary x86 Wine install
1941(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
386405f7 1942
1f673135 1943@item Configure Wine on your account. Look at the provided script
debc7065 1944@file{/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous
1f673135 1945@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
386405f7 1946
1f673135 1947@item Then you can try the example @file{putty.exe}:
386405f7 1948
1f673135 1949@example
debc7065
FB
1950qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
1951 /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1f673135 1952@end example
386405f7 1953
1f673135 1954@end itemize
fd429f2f 1955
debc7065 1956@node Command line options
83195237 1957@subsection Command line options
1eb20527 1958
1f673135
FB
1959@example
1960usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1961@end example
1eb20527 1962
1f673135
FB
1963@table @option
1964@item -h
1965Print the help
1966@item -L path
1967Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1968@item -s size
1969Set the x86 stack size in bytes (default=524288)
386405f7
FB
1970@end table
1971
1f673135 1972Debug options:
386405f7 1973
1f673135
FB
1974@table @option
1975@item -d
1976Activate log (logfile=/tmp/qemu.log)
1977@item -p pagesize
1978Act as if the host page size was 'pagesize' bytes
1979@end table
386405f7 1980
79737e4a 1981@node Other binaries
83195237 1982@subsection Other binaries
79737e4a
PB
1983
1984@command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF
1985binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
1986configurations), and arm-uclinux bFLT format binaries.
1987
e6e5906b
PB
1988@command{qemu-m68k} is capable of running semihosted binaries using the BDM
1989(m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
1990coldfire uClinux bFLT format binaries.
1991
79737e4a
PB
1992The binary format is detected automatically.
1993
83195237
FB
1994@node Mac OS X/Darwin User space emulator
1995@section Mac OS X/Darwin User space emulator
1996
1997@menu
1998* Mac OS X/Darwin Status::
1999* Mac OS X/Darwin Quick Start::
2000* Mac OS X/Darwin Command line options::
2001@end menu
2002
2003@node Mac OS X/Darwin Status
2004@subsection Mac OS X/Darwin Status
2005
2006@itemize @minus
2007@item
2008target x86 on x86: Most apps (Cocoa and Carbon too) works. [1]
2009@item
2010target PowerPC on x86: Not working as the ppc commpage can't be mapped (yet!)
2011@item
dbcf5e82 2012target PowerPC on PowerPC: Most apps (Cocoa and Carbon too) works. [1]
83195237
FB
2013@item
2014target x86 on PowerPC: most utilities work. Cocoa and Carbon apps are not yet supported.
2015@end itemize
2016
2017[1] If you're host commpage can be executed by qemu.
2018
2019@node Mac OS X/Darwin Quick Start
2020@subsection Quick Start
2021
2022In order to launch a Mac OS X/Darwin process, QEMU needs the process executable
2023itself and all the target dynamic libraries used by it. If you don't have the FAT
2024libraries (you're running Mac OS X/ppc) you'll need to obtain it from a Mac OS X
2025CD or compile them by hand.
2026
2027@itemize
2028
2029@item On x86, you can just try to launch any process by using the native
2030libraries:
2031
2032@example
dbcf5e82 2033qemu-i386 /bin/ls
83195237
FB
2034@end example
2035
2036or to run the ppc version of the executable:
2037
2038@example
dbcf5e82 2039qemu-ppc /bin/ls
83195237
FB
2040@end example
2041
2042@item On ppc, you'll have to tell qemu where your x86 libraries (and dynamic linker)
2043are installed:
2044
2045@example
dbcf5e82 2046qemu-i386 -L /opt/x86_root/ /bin/ls
83195237
FB
2047@end example
2048
2049@code{-L /opt/x86_root/} tells that the dynamic linker (dyld) path is in
2050@file{/opt/x86_root/usr/bin/dyld}.
2051
2052@end itemize
2053
2054@node Mac OS X/Darwin Command line options
2055@subsection Command line options
2056
2057@example
dbcf5e82 2058usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
83195237
FB
2059@end example
2060
2061@table @option
2062@item -h
2063Print the help
2064@item -L path
2065Set the library root path (default=/)
2066@item -s size
2067Set the stack size in bytes (default=524288)
2068@end table
2069
2070Debug options:
2071
2072@table @option
2073@item -d
2074Activate log (logfile=/tmp/qemu.log)
2075@item -p pagesize
2076Act as if the host page size was 'pagesize' bytes
2077@end table
2078
15a34c63
FB
2079@node compilation
2080@chapter Compilation from the sources
2081
debc7065
FB
2082@menu
2083* Linux/Unix::
2084* Windows::
2085* Cross compilation for Windows with Linux::
2086* Mac OS X::
2087@end menu
2088
2089@node Linux/Unix
7c3fc84d
FB
2090@section Linux/Unix
2091
2092@subsection Compilation
2093
2094First you must decompress the sources:
2095@example
2096cd /tmp
2097tar zxvf qemu-x.y.z.tar.gz
2098cd qemu-x.y.z
2099@end example
2100
2101Then you configure QEMU and build it (usually no options are needed):
2102@example
2103./configure
2104make
2105@end example
2106
2107Then type as root user:
2108@example
2109make install
2110@end example
2111to install QEMU in @file{/usr/local}.
2112
4fe8b87a 2113@subsection GCC version
7c3fc84d 2114
366dfc52 2115In order to compile QEMU successfully, it is very important that you
4fe8b87a
FB
2116have the right tools. The most important one is gcc. On most hosts and
2117in particular on x86 ones, @emph{gcc 4.x is not supported}. If your
2118Linux distribution includes a gcc 4.x compiler, you can usually
2119install an older version (it is invoked by @code{gcc32} or
2120@code{gcc34}). The QEMU configure script automatically probes for
2121these older versions so that usally you don't have to do anything.
15a34c63 2122
debc7065 2123@node Windows
15a34c63
FB
2124@section Windows
2125
2126@itemize
2127@item Install the current versions of MSYS and MinGW from
2128@url{http://www.mingw.org/}. You can find detailed installation
2129instructions in the download section and the FAQ.
2130
2131@item Download
2132the MinGW development library of SDL 1.2.x
debc7065 2133(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
15a34c63
FB
2134@url{http://www.libsdl.org}. Unpack it in a temporary place, and
2135unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
2136directory. Edit the @file{sdl-config} script so that it gives the
2137correct SDL directory when invoked.
2138
2139@item Extract the current version of QEMU.
2140
2141@item Start the MSYS shell (file @file{msys.bat}).
2142
2143@item Change to the QEMU directory. Launch @file{./configure} and
2144@file{make}. If you have problems using SDL, verify that
2145@file{sdl-config} can be launched from the MSYS command line.
2146
2147@item You can install QEMU in @file{Program Files/Qemu} by typing
2148@file{make install}. Don't forget to copy @file{SDL.dll} in
2149@file{Program Files/Qemu}.
2150
2151@end itemize
2152
debc7065 2153@node Cross compilation for Windows with Linux
15a34c63
FB
2154@section Cross compilation for Windows with Linux
2155
2156@itemize
2157@item
2158Install the MinGW cross compilation tools available at
2159@url{http://www.mingw.org/}.
2160
2161@item
2162Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
2163unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
2164variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
2165the QEMU configuration script.
2166
2167@item
2168Configure QEMU for Windows cross compilation:
2169@example
2170./configure --enable-mingw32
2171@end example
2172If necessary, you can change the cross-prefix according to the prefix
2173choosen for the MinGW tools with --cross-prefix. You can also use
2174--prefix to set the Win32 install path.
2175
2176@item You can install QEMU in the installation directory by typing
2177@file{make install}. Don't forget to copy @file{SDL.dll} in the
2178installation directory.
2179
2180@end itemize
2181
2182Note: Currently, Wine does not seem able to launch
2183QEMU for Win32.
2184
debc7065 2185@node Mac OS X
15a34c63
FB
2186@section Mac OS X
2187
2188The Mac OS X patches are not fully merged in QEMU, so you should look
2189at the QEMU mailing list archive to have all the necessary
2190information.
2191
debc7065
FB
2192@node Index
2193@chapter Index
2194@printindex cp
2195
2196@bye