]> git.proxmox.com Git - mirror_qemu.git/blame - qemu-doc.texi
Make dsound compile again (patch by malc, spotted by C.W. Betts).
[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
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
5fafdf24 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
5fafdf24 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
5fafdf24 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)
ee76f82e 77@item Sun4m/Sun4c/Sun4d (32-bit Sparc processor)
3475187d 78@item Sun4u (64-bit Sparc processor, in progress)
d9aedc32 79@item Malta board (32-bit and 64-bit MIPS processors)
9ee6e8bb
PB
80@item ARM Integrator/CP (ARM)
81@item ARM Versatile baseboard (ARM)
82@item ARM RealView Emulation baseboard (ARM)
b00052e4 83@item Spitz, Akita, Borzoi and Terrier PDAs (PXA270 processor)
9ee6e8bb
PB
84@item Luminary Micro LM3S811EVB (ARM Cortex-M3)
85@item Luminary Micro LM3S6965EVB (ARM Cortex-M3)
707e011b 86@item Freescale MCF5208EVB (ColdFire V2).
209a4e69 87@item Arnewsh MCF5206 evaluation board (ColdFire V2).
02645926 88@item Palm Tungsten|E PDA (OMAP310 processor)
52c00a5f 89@end itemize
386405f7 90
d9aedc32 91For user emulation, x86, PowerPC, ARM, 32-bit MIPS, Sparc32/64 and ColdFire(m68k) CPUs are supported.
0806e3f6 92
debc7065 93@node Installation
5b9f457a
FB
94@chapter Installation
95
15a34c63
FB
96If you want to compile QEMU yourself, see @ref{compilation}.
97
debc7065
FB
98@menu
99* install_linux:: Linux
100* install_windows:: Windows
101* install_mac:: Macintosh
102@end menu
103
104@node install_linux
1f673135
FB
105@section Linux
106
7c3fc84d
FB
107If a precompiled package is available for your distribution - you just
108have to install it. Otherwise, see @ref{compilation}.
5b9f457a 109
debc7065 110@node install_windows
1f673135 111@section Windows
8cd0ac2f 112
15a34c63 113Download the experimental binary installer at
debc7065 114@url{http://www.free.oszoo.org/@/download.html}.
d691f669 115
debc7065 116@node install_mac
1f673135 117@section Mac OS X
d691f669 118
15a34c63 119Download the experimental binary installer at
debc7065 120@url{http://www.free.oszoo.org/@/download.html}.
df0f11a0 121
debc7065 122@node QEMU PC System emulator
3f9f3aa1 123@chapter QEMU PC System emulator
1eb20527 124
debc7065
FB
125@menu
126* pcsys_introduction:: Introduction
127* pcsys_quickstart:: Quick Start
128* sec_invocation:: Invocation
129* pcsys_keys:: Keys
130* pcsys_monitor:: QEMU Monitor
131* disk_images:: Disk Images
132* pcsys_network:: Network emulation
133* direct_linux_boot:: Direct Linux Boot
134* pcsys_usb:: USB emulation
f858dcae 135* vnc_security:: VNC security
debc7065
FB
136* gdb_usage:: GDB usage
137* pcsys_os_specific:: Target OS specific information
138@end menu
139
140@node pcsys_introduction
0806e3f6
FB
141@section Introduction
142
143@c man begin DESCRIPTION
144
3f9f3aa1
FB
145The QEMU PC System emulator simulates the
146following peripherals:
0806e3f6
FB
147
148@itemize @minus
5fafdf24 149@item
15a34c63 150i440FX host PCI bridge and PIIX3 PCI to ISA bridge
0806e3f6 151@item
15a34c63
FB
152Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
153extensions (hardware level, including all non standard modes).
0806e3f6
FB
154@item
155PS/2 mouse and keyboard
5fafdf24 156@item
15a34c63 1572 PCI IDE interfaces with hard disk and CD-ROM support
1f673135
FB
158@item
159Floppy disk
5fafdf24 160@item
c4a7060c 161PCI/ISA PCI network adapters
0806e3f6 162@item
05d5818c
FB
163Serial ports
164@item
c0fe3827
FB
165Creative SoundBlaster 16 sound card
166@item
167ENSONIQ AudioPCI ES1370 sound card
168@item
e5c9a13e
AZ
169Intel 82801AA AC97 Audio compatible sound card
170@item
c0fe3827 171Adlib(OPL2) - Yamaha YM3812 compatible chip
b389dbfb
FB
172@item
173PCI UHCI USB controller and a virtual USB hub.
0806e3f6
FB
174@end itemize
175
3f9f3aa1
FB
176SMP is supported with up to 255 CPUs.
177
e5c9a13e
AZ
178Note that adlib and ac97 are only available when QEMU was configured
179with --enable-adlib, --enable-ac97 respectively.
c0fe3827 180
15a34c63
FB
181QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
182VGA BIOS.
183
c0fe3827
FB
184QEMU uses YM3812 emulation by Tatsuyuki Satoh.
185
0806e3f6
FB
186@c man end
187
debc7065 188@node pcsys_quickstart
1eb20527
FB
189@section Quick Start
190
285dc330 191Download and uncompress the linux image (@file{linux.img}) and type:
0806e3f6
FB
192
193@example
285dc330 194qemu linux.img
0806e3f6
FB
195@end example
196
197Linux should boot and give you a prompt.
198
6cc721cf 199@node sec_invocation
ec410fc9
FB
200@section Invocation
201
202@example
0806e3f6 203@c man begin SYNOPSIS
89dfe898 204usage: qemu [options] [@var{disk_image}]
0806e3f6 205@c man end
ec410fc9
FB
206@end example
207
0806e3f6 208@c man begin OPTIONS
9d4520d0 209@var{disk_image} is a raw hard disk image for IDE hard disk 0.
ec410fc9
FB
210
211General options:
212@table @option
89dfe898
TS
213@item -M @var{machine}
214Select the emulated @var{machine} (@code{-M ?} for list)
3dbbdc25 215
89dfe898
TS
216@item -fda @var{file}
217@item -fdb @var{file}
debc7065 218Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can
19cb3738 219use the host floppy by using @file{/dev/fd0} as filename (@pxref{host_drives}).
2be3bc02 220
89dfe898
TS
221@item -hda @var{file}
222@item -hdb @var{file}
223@item -hdc @var{file}
224@item -hdd @var{file}
debc7065 225Use @var{file} as hard disk 0, 1, 2 or 3 image (@pxref{disk_images}).
1f47a922 226
89dfe898
TS
227@item -cdrom @var{file}
228Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and
be3edd95 229@option{-cdrom} at the same time). You can use the host CD-ROM by
19cb3738 230using @file{/dev/cdrom} as filename (@pxref{host_drives}).
181f1558 231
e0e7ada1
AZ
232@item -drive @var{option}[,@var{option}[,@var{option}[,...]]]
233
234Define a new drive. Valid options are:
235
236@table @code
237@item file=@var{file}
238This option defines which disk image (@pxref{disk_images}) to use with
609497ab
AZ
239this drive. If the filename contains comma, you must double it
240(for instance, "file=my,,file" to use file "my,file").
e0e7ada1
AZ
241@item if=@var{interface}
242This option defines on which type on interface the drive is connected.
243Available types are: ide, scsi, sd, mtd, floppy, pflash.
244@item bus=@var{bus},unit=@var{unit}
245These options define where is connected the drive by defining the bus number and
246the unit id.
247@item index=@var{index}
248This option defines where is connected the drive by using an index in the list
249of available connectors of a given interface type.
250@item media=@var{media}
251This option defines the type of the media: disk or cdrom.
252@item cyls=@var{c},heads=@var{h},secs=@var{s}[,trans=@var{t}]
253These options have the same definition as they have in @option{-hdachs}.
254@item snapshot=@var{snapshot}
255@var{snapshot} is "on" or "off" and allows to enable snapshot for given drive (see @option{-snapshot}).
33f00271
AZ
256@item cache=@var{cache}
257@var{cache} is "on" or "off" and allows to disable host cache to access data.
e0e7ada1
AZ
258@end table
259
260Instead of @option{-cdrom} you can use:
261@example
262qemu -drive file=file,index=2,media=cdrom
263@end example
264
265Instead of @option{-hda}, @option{-hdb}, @option{-hdc}, @option{-hdd}, you can
266use:
267@example
268qemu -drive file=file,index=0,media=disk
269qemu -drive file=file,index=1,media=disk
270qemu -drive file=file,index=2,media=disk
271qemu -drive file=file,index=3,media=disk
272@end example
273
274You can connect a CDROM to the slave of ide0:
275@example
276qemu -drive file=file,if=ide,index=1,media=cdrom
277@end example
278
279If you don't specify the "file=" argument, you define an empty drive:
280@example
281qemu -drive if=ide,index=1,media=cdrom
282@end example
283
284You can connect a SCSI disk with unit ID 6 on the bus #0:
285@example
286qemu -drive file=file,if=scsi,bus=0,unit=6
287@end example
288
289Instead of @option{-fda}, @option{-fdb}, you can use:
290@example
291qemu -drive file=file,index=0,if=floppy
292qemu -drive file=file,index=1,if=floppy
293@end example
294
295By default, @var{interface} is "ide" and @var{index} is automatically
296incremented:
297@example
298qemu -drive file=a -drive file=b"
299@end example
300is interpreted like:
301@example
302qemu -hda a -hdb b
303@end example
304
eec85c2a
TS
305@item -boot [a|c|d|n]
306Boot on floppy (a), hard disk (c), CD-ROM (d), or Etherboot (n). Hard disk boot
307is the default.
1f47a922 308
181f1558 309@item -snapshot
1f47a922
FB
310Write to temporary files instead of disk image files. In this case,
311the raw disk image you use is not written back. You can however force
42550fde 312the write back by pressing @key{C-a s} (@pxref{disk_images}).
ec410fc9 313
52ca8d6a
FB
314@item -no-fd-bootchk
315Disable boot signature checking for floppy disks in Bochs BIOS. It may
316be needed to boot from old floppy disks.
317
89dfe898
TS
318@item -m @var{megs}
319Set virtual RAM size to @var{megs} megabytes. Default is 128 MiB.
ec410fc9 320
89dfe898 321@item -smp @var{n}
3f9f3aa1 322Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
a785e42e
BS
323CPUs are supported. On Sparc32 target, Linux limits the number of usable CPUs
324to 4.
3f9f3aa1 325
1d14ffa9
FB
326@item -audio-help
327
328Will show the audio subsystem help: list of drivers, tunable
329parameters.
330
89dfe898 331@item -soundhw @var{card1}[,@var{card2},...] or -soundhw all
1d14ffa9
FB
332
333Enable audio and selected sound hardware. Use ? to print all
334available sound hardware.
335
336@example
337qemu -soundhw sb16,adlib hda
338qemu -soundhw es1370 hda
e5c9a13e 339qemu -soundhw ac97 hda
6a36d84e 340qemu -soundhw all hda
1d14ffa9
FB
341qemu -soundhw ?
342@end example
a8c490cd 343
e5c9a13e
AZ
344Note that Linux's i810_audio OSS kernel (for AC97) module might
345require manually specifying clocking.
346
347@example
348modprobe i810_audio clocking=48000
349@end example
350
15a34c63
FB
351@item -localtime
352Set the real time clock to local time (the default is to UTC
353time). This option is needed to have correct date in MS-DOS or
354Windows.
355
89dfe898 356@item -startdate @var{date}
7e0af5d0
FB
357Set the initial date of the real time clock. Valid format for
358@var{date} are: @code{now} or @code{2006-06-17T16:01:21} or
359@code{2006-06-17}. The default value is @code{now}.
360
89dfe898 361@item -pidfile @var{file}
f7cce898
FB
362Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
363from a script.
364
71e3ceb8
TS
365@item -daemonize
366Daemonize the QEMU process after initialization. QEMU will not detach from
367standard IO until it is ready to receive connections on any of its devices.
368This option is a useful way for external programs to launch QEMU without having
369to cope with initialization race conditions.
370
9d0a8e6f
FB
371@item -win2k-hack
372Use it when installing Windows 2000 to avoid a disk full bug. After
373Windows 2000 is installed, you no longer need this option (this option
374slows down the IDE transfers).
375
89dfe898
TS
376@item -option-rom @var{file}
377Load the contents of @var{file} as an option ROM.
378This option is useful to load things like EtherBoot.
9ae02555 379
89dfe898
TS
380@item -name @var{name}
381Sets the @var{name} of the guest.
382This name will be display in the SDL window caption.
383The @var{name} will also be used for the VNC server.
c35734b2 384
0806e3f6
FB
385@end table
386
f858dcae
TS
387Display options:
388@table @option
389
390@item -nographic
391
392Normally, QEMU uses SDL to display the VGA output. With this option,
393you can totally disable graphical output so that QEMU is a simple
394command line application. The emulated serial port is redirected on
395the console. Therefore, you can still use QEMU to debug a Linux kernel
396with a serial console.
397
398@item -no-frame
399
400Do not use decorations for SDL windows and start them using the whole
401available screen space. This makes the using QEMU in a dedicated desktop
402workspace more convenient.
403
404@item -full-screen
405Start in full screen.
406
89dfe898 407@item -vnc @var{display}[,@var{option}[,@var{option}[,...]]]
f858dcae
TS
408
409Normally, QEMU uses SDL to display the VGA output. With this option,
410you can have QEMU listen on VNC display @var{display} and redirect the VGA
411display over the VNC session. It is very useful to enable the usb
412tablet device when using this option (option @option{-usbdevice
413tablet}). When using the VNC display, you must use the @option{-k}
414parameter to set the keyboard layout if you are not using en-us. Valid
415syntax for the @var{display} is
416
417@table @code
418
89dfe898 419@item @var{interface}:@var{d}
f858dcae
TS
420
421TCP connections will only be allowed from @var{interface} on display @var{d}.
422By convention the TCP port is 5900+@var{d}. Optionally, @var{interface} can
423be omitted in which case the server will bind to all interfaces.
424
89dfe898 425@item @var{unix}:@var{path}
f858dcae
TS
426
427Connections will be allowed over UNIX domain sockets where @var{path} is the
428location of a unix socket to listen for connections on.
429
89dfe898 430@item none
f858dcae
TS
431
432VNC is initialized by not started. The monitor @code{change} command can be used
433to later start the VNC server.
434
435@end table
436
437Following the @var{display} value there may be one or more @var{option} flags
438separated by commas. Valid options are
439
440@table @code
441
89dfe898 442@item password
f858dcae
TS
443
444Require that password based authentication is used for client connections.
445The password must be set separately using the @code{change} command in the
446@ref{pcsys_monitor}
447
89dfe898 448@item tls
f858dcae
TS
449
450Require that client use TLS when communicating with the VNC server. This
451uses anonymous TLS credentials so is susceptible to a man-in-the-middle
452attack. It is recommended that this option be combined with either the
453@var{x509} or @var{x509verify} options.
454
89dfe898 455@item x509=@var{/path/to/certificate/dir}
f858dcae 456
89dfe898 457Valid if @option{tls} is specified. Require that x509 credentials are used
f858dcae
TS
458for negotiating the TLS session. The server will send its x509 certificate
459to the client. It is recommended that a password be set on the VNC server
460to provide authentication of the client when this is used. The path following
461this option specifies where the x509 certificates are to be loaded from.
462See the @ref{vnc_security} section for details on generating certificates.
463
89dfe898 464@item x509verify=@var{/path/to/certificate/dir}
f858dcae 465
89dfe898 466Valid if @option{tls} is specified. Require that x509 credentials are used
f858dcae
TS
467for negotiating the TLS session. The server will send its x509 certificate
468to the client, and request that the client send its own x509 certificate.
469The server will validate the client's certificate against the CA certificate,
470and reject clients when validation fails. If the certificate authority is
471trusted, this is a sufficient authentication mechanism. You may still wish
472to set a password on the VNC server as a second authentication layer. The
473path following this option specifies where the x509 certificates are to
474be loaded from. See the @ref{vnc_security} section for details on generating
475certificates.
476
477@end table
478
89dfe898 479@item -k @var{language}
f858dcae
TS
480
481Use keyboard layout @var{language} (for example @code{fr} for
482French). This option is only needed where it is not easy to get raw PC
483keycodes (e.g. on Macs, with some X11 servers or with a VNC
484display). You don't normally need to use it on PC/Linux or PC/Windows
485hosts.
486
487The available layouts are:
488@example
489ar de-ch es fo fr-ca hu ja mk no pt-br sv
490da en-gb et fr fr-ch is lt nl pl ru th
491de en-us fi fr-be hr it lv nl-be pt sl tr
492@end example
493
494The default is @code{en-us}.
495
496@end table
497
b389dbfb
FB
498USB options:
499@table @option
500
501@item -usb
502Enable the USB driver (will be the default soon)
503
89dfe898 504@item -usbdevice @var{devname}
0aff66b5 505Add the USB device @var{devname}. @xref{usb_devices}.
8fccda83
TS
506
507@table @code
508
509@item mouse
510Virtual Mouse. This will override the PS/2 mouse emulation when activated.
511
512@item tablet
513Pointer device that uses absolute coordinates (like a touchscreen). This
514means qemu is able to report the mouse position without having to grab the
515mouse. Also overrides the PS/2 mouse emulation when activated.
516
517@item disk:file
518Mass storage device based on file
519
520@item host:bus.addr
521Pass through the host device identified by bus.addr (Linux only).
522
523@item host:vendor_id:product_id
524Pass through the host device identified by vendor_id:product_id (Linux only).
525
526@end table
527
b389dbfb
FB
528@end table
529
1f673135
FB
530Network options:
531
532@table @option
533
89dfe898 534@item -net nic[,vlan=@var{n}][,macaddr=@var{addr}][,model=@var{type}]
41d03949 535Create a new Network Interface Card and connect it to VLAN @var{n} (@var{n}
c4a7060c 536= 0 is the default). The NIC is an ne2k_pci by default on the PC
41d03949
FB
537target. Optionally, the MAC address can be changed. If no
538@option{-net} option is specified, a single NIC is created.
549444e1
AZ
539Qemu can emulate several different models of network card.
540Valid values for @var{type} are
541@code{i82551}, @code{i82557b}, @code{i82559er},
542@code{ne2k_pci}, @code{ne2k_isa}, @code{pcnet}, @code{rtl8139},
7e049b8a 543@code{smc91c111}, @code{lance} and @code{mcf_fec}.
c4a7060c
BS
544Not all devices are supported on all targets. Use -net nic,model=?
545for a list of available devices for your target.
41d03949 546
89dfe898 547@item -net user[,vlan=@var{n}][,hostname=@var{name}]
7e89463d 548Use the user mode network stack which requires no administrator
4be456f1 549privilege to run. @option{hostname=name} can be used to specify the client
115defd1 550hostname reported by the builtin DHCP server.
41d03949 551
89dfe898 552@item -net tap[,vlan=@var{n}][,fd=@var{h}][,ifname=@var{name}][,script=@var{file}]
41d03949
FB
553Connect the host TAP network interface @var{name} to VLAN @var{n} and
554use the network script @var{file} to configure it. The default
6a1cbf68
TS
555network script is @file{/etc/qemu-ifup}. Use @option{script=no} to
556disable script execution. If @var{name} is not
89dfe898 557provided, the OS automatically provides one. @option{fd}=@var{h} can be
41d03949 558used to specify the handle of an already opened host TAP interface. Example:
1f673135 559
41d03949
FB
560@example
561qemu linux.img -net nic -net tap
562@end example
563
564More complicated example (two NICs, each one connected to a TAP device)
565@example
566qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
567 -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
568@end example
3f1a88f4 569
3f1a88f4 570
89dfe898 571@item -net socket[,vlan=@var{n}][,fd=@var{h}][,listen=[@var{host}]:@var{port}][,connect=@var{host}:@var{port}]
1f673135 572
41d03949
FB
573Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual
574machine using a TCP socket connection. If @option{listen} is
575specified, QEMU waits for incoming connections on @var{port}
576(@var{host} is optional). @option{connect} is used to connect to
89dfe898 577another QEMU instance using the @option{listen} option. @option{fd}=@var{h}
3d830459 578specifies an already opened TCP socket.
1f673135 579
41d03949
FB
580Example:
581@example
582# launch a first QEMU instance
debc7065
FB
583qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
584 -net socket,listen=:1234
585# connect the VLAN 0 of this instance to the VLAN 0
586# of the first instance
587qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
588 -net socket,connect=127.0.0.1:1234
41d03949 589@end example
52c00a5f 590
89dfe898 591@item -net socket[,vlan=@var{n}][,fd=@var{h}][,mcast=@var{maddr}:@var{port}]
3d830459
FB
592
593Create a VLAN @var{n} shared with another QEMU virtual
5fafdf24 594machines using a UDP multicast socket, effectively making a bus for
3d830459
FB
595every QEMU with same multicast address @var{maddr} and @var{port}.
596NOTES:
597@enumerate
5fafdf24
TS
598@item
599Several QEMU can be running on different hosts and share same bus (assuming
3d830459
FB
600correct multicast setup for these hosts).
601@item
602mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see
603@url{http://user-mode-linux.sf.net}.
4be456f1
TS
604@item
605Use @option{fd=h} to specify an already opened UDP multicast socket.
3d830459
FB
606@end enumerate
607
608Example:
609@example
610# launch one QEMU instance
debc7065
FB
611qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
612 -net socket,mcast=230.0.0.1:1234
3d830459 613# launch another QEMU instance on same "bus"
debc7065
FB
614qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
615 -net socket,mcast=230.0.0.1:1234
3d830459 616# launch yet another QEMU instance on same "bus"
debc7065
FB
617qemu linux.img -net nic,macaddr=52:54:00:12:34:58 \
618 -net socket,mcast=230.0.0.1:1234
3d830459
FB
619@end example
620
621Example (User Mode Linux compat.):
622@example
debc7065
FB
623# launch QEMU instance (note mcast address selected
624# is UML's default)
625qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
626 -net socket,mcast=239.192.168.1:1102
3d830459
FB
627# launch UML
628/path/to/linux ubd0=/path/to/root_fs eth0=mcast
629@end example
630
41d03949
FB
631@item -net none
632Indicate that no network devices should be configured. It is used to
039af320
FB
633override the default configuration (@option{-net nic -net user}) which
634is activated if no @option{-net} options are provided.
52c00a5f 635
89dfe898 636@item -tftp @var{dir}
9bf05444 637When using the user mode network stack, activate a built-in TFTP
0db1137d
TS
638server. The files in @var{dir} will be exposed as the root of a TFTP server.
639The TFTP client on the guest must be configured in binary mode (use the command
640@code{bin} of the Unix TFTP client). The host IP address on the guest is as
641usual 10.0.2.2.
9bf05444 642
89dfe898 643@item -bootp @var{file}
47d5d01a
TS
644When using the user mode network stack, broadcast @var{file} as the BOOTP
645filename. In conjunction with @option{-tftp}, this can be used to network boot
646a guest from a local directory.
647
648Example (using pxelinux):
649@example
650qemu -hda linux.img -boot n -tftp /path/to/tftp/files -bootp /pxelinux.0
651@end example
652
89dfe898 653@item -smb @var{dir}
2518bd0d 654When using the user mode network stack, activate a built-in SMB
89dfe898 655server so that Windows OSes can access to the host files in @file{@var{dir}}
2518bd0d
FB
656transparently.
657
658In the guest Windows OS, the line:
659@example
66010.0.2.4 smbserver
661@end example
662must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
663or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
664
89dfe898 665Then @file{@var{dir}} can be accessed in @file{\\smbserver\qemu}.
2518bd0d
FB
666
667Note that a SAMBA server must be installed on the host OS in
366dfc52 668@file{/usr/sbin/smbd}. QEMU was tested successfully with smbd version
6cc721cf 6692.2.7a from the Red Hat 9 and version 3.0.10-1.fc3 from Fedora Core 3.
2518bd0d 670
89dfe898 671@item -redir [tcp|udp]:@var{host-port}:[@var{guest-host}]:@var{guest-port}
9bf05444
FB
672
673When using the user mode network stack, redirect incoming TCP or UDP
674connections to the host port @var{host-port} to the guest
675@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
676is not specified, its value is 10.0.2.15 (default address given by the
677built-in DHCP server).
678
679For example, to redirect host X11 connection from screen 1 to guest
680screen 0, use the following:
681
682@example
683# on the host
684qemu -redir tcp:6001::6000 [...]
685# this host xterm should open in the guest X11 server
686xterm -display :1
687@end example
688
689To redirect telnet connections from host port 5555 to telnet port on
690the guest, use the following:
691
692@example
693# on the host
694qemu -redir tcp:5555::23 [...]
695telnet localhost 5555
696@end example
697
698Then when you use on the host @code{telnet localhost 5555}, you
699connect to the guest telnet server.
700
1f673135
FB
701@end table
702
41d03949 703Linux boot specific: When using these options, you can use a given
1f673135
FB
704Linux kernel without installing it in the disk image. It can be useful
705for easier testing of various kernels.
706
0806e3f6
FB
707@table @option
708
89dfe898 709@item -kernel @var{bzImage}
0806e3f6
FB
710Use @var{bzImage} as kernel image.
711
89dfe898 712@item -append @var{cmdline}
0806e3f6
FB
713Use @var{cmdline} as kernel command line
714
89dfe898 715@item -initrd @var{file}
0806e3f6
FB
716Use @var{file} as initial ram disk.
717
ec410fc9
FB
718@end table
719
15a34c63 720Debug/Expert options:
ec410fc9 721@table @option
a0a821a4 722
89dfe898 723@item -serial @var{dev}
0bab00f3
FB
724Redirect the virtual serial port to host character device
725@var{dev}. The default device is @code{vc} in graphical mode and
726@code{stdio} in non graphical mode.
727
728This option can be used several times to simulate up to 4 serials
729ports.
730
c03b0f0f
FB
731Use @code{-serial none} to disable all serial ports.
732
0bab00f3 733Available character devices are:
a0a821a4 734@table @code
af3a9031
TS
735@item vc[:WxH]
736Virtual console. Optionally, a width and height can be given in pixel with
737@example
738vc:800x600
739@end example
740It is also possible to specify width or height in characters:
741@example
742vc:80Cx24C
743@end example
a0a821a4
FB
744@item pty
745[Linux only] Pseudo TTY (a new PTY is automatically allocated)
c03b0f0f
FB
746@item none
747No device is allocated.
a0a821a4
FB
748@item null
749void device
f8d179e3 750@item /dev/XXX
e57a8c0e 751[Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
f8d179e3 752parameters are set according to the emulated ones.
89dfe898 753@item /dev/parport@var{N}
e57a8c0e 754[Linux only, parallel port only] Use host parallel port
5867c88a 755@var{N}. Currently SPP and EPP parallel port features can be used.
89dfe898
TS
756@item file:@var{filename}
757Write output to @var{filename}. No character can be read.
a0a821a4
FB
758@item stdio
759[Unix only] standard input/output
89dfe898 760@item pipe:@var{filename}
0bab00f3 761name pipe @var{filename}
89dfe898 762@item COM@var{n}
0bab00f3 763[Windows only] Use host serial port @var{n}
89dfe898
TS
764@item udp:[@var{remote_host}]:@var{remote_port}[@@[@var{src_ip}]:@var{src_port}]
765This implements UDP Net Console.
766When @var{remote_host} or @var{src_ip} are not specified
767they default to @code{0.0.0.0}.
768When not using a specified @var{src_port} a random port is automatically chosen.
951f1351
FB
769
770If you just want a simple readonly console you can use @code{netcat} or
771@code{nc}, by starting qemu with: @code{-serial udp::4555} and nc as:
772@code{nc -u -l -p 4555}. Any time qemu writes something to that port it
773will appear in the netconsole session.
0bab00f3
FB
774
775If you plan to send characters back via netconsole or you want to stop
776and start qemu a lot of times, you should have qemu use the same
777source port each time by using something like @code{-serial
951f1351 778udp::4555@@:4556} to qemu. Another approach is to use a patched
0bab00f3
FB
779version of netcat which can listen to a TCP port and send and receive
780characters via udp. If you have a patched version of netcat which
781activates telnet remote echo and single char transfer, then you can
782use the following options to step up a netcat redirector to allow
783telnet on port 5555 to access the qemu port.
784@table @code
951f1351
FB
785@item Qemu Options:
786-serial udp::4555@@:4556
787@item netcat options:
788-u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
789@item telnet options:
790localhost 5555
791@end table
792
793
89dfe898 794@item tcp:[@var{host}]:@var{port}[,@var{server}][,nowait][,nodelay]
951f1351
FB
795The TCP Net Console has two modes of operation. It can send the serial
796I/O to a location or wait for a connection from a location. By default
797the TCP Net Console is sent to @var{host} at the @var{port}. If you use
f542086d
FB
798the @var{server} option QEMU will wait for a client socket application
799to connect to the port before continuing, unless the @code{nowait}
f7499989 800option was specified. The @code{nodelay} option disables the Nagle buffering
4be456f1 801algorithm. If @var{host} is omitted, 0.0.0.0 is assumed. Only
951f1351
FB
802one TCP connection at a time is accepted. You can use @code{telnet} to
803connect to the corresponding character device.
804@table @code
805@item Example to send tcp console to 192.168.0.2 port 4444
806-serial tcp:192.168.0.2:4444
807@item Example to listen and wait on port 4444 for connection
808-serial tcp::4444,server
809@item Example to not wait and listen on ip 192.168.0.100 port 4444
810-serial tcp:192.168.0.100:4444,server,nowait
a0a821a4 811@end table
a0a821a4 812
89dfe898 813@item telnet:@var{host}:@var{port}[,server][,nowait][,nodelay]
951f1351
FB
814The telnet protocol is used instead of raw tcp sockets. The options
815work the same as if you had specified @code{-serial tcp}. The
816difference is that the port acts like a telnet server or client using
817telnet option negotiation. This will also allow you to send the
818MAGIC_SYSRQ sequence if you use a telnet that supports sending the break
819sequence. Typically in unix telnet you do it with Control-] and then
820type "send break" followed by pressing the enter key.
0bab00f3 821
89dfe898 822@item unix:@var{path}[,server][,nowait]
ffd843bc
TS
823A unix domain socket is used instead of a tcp socket. The option works the
824same as if you had specified @code{-serial tcp} except the unix domain socket
825@var{path} is used for connections.
826
89dfe898 827@item mon:@var{dev_string}
20d8a3ed
TS
828This is a special option to allow the monitor to be multiplexed onto
829another serial port. The monitor is accessed with key sequence of
830@key{Control-a} and then pressing @key{c}. See monitor access
831@ref{pcsys_keys} in the -nographic section for more keys.
832@var{dev_string} should be any one of the serial devices specified
833above. An example to multiplex the monitor onto a telnet server
834listening on port 4444 would be:
835@table @code
836@item -serial mon:telnet::4444,server,nowait
837@end table
838
0bab00f3 839@end table
05d5818c 840
89dfe898 841@item -parallel @var{dev}
e57a8c0e
FB
842Redirect the virtual parallel port to host device @var{dev} (same
843devices as the serial port). On Linux hosts, @file{/dev/parportN} can
844be used to use hardware devices connected on the corresponding host
845parallel port.
846
847This option can be used several times to simulate up to 3 parallel
848ports.
849
c03b0f0f
FB
850Use @code{-parallel none} to disable all parallel ports.
851
89dfe898 852@item -monitor @var{dev}
a0a821a4
FB
853Redirect the monitor to host device @var{dev} (same devices as the
854serial port).
855The default device is @code{vc} in graphical mode and @code{stdio} in
856non graphical mode.
857
20d8a3ed
TS
858@item -echr numeric_ascii_value
859Change the escape character used for switching to the monitor when using
860monitor and serial sharing. The default is @code{0x01} when using the
861@code{-nographic} option. @code{0x01} is equal to pressing
862@code{Control-a}. You can select a different character from the ascii
863control keys where 1 through 26 map to Control-a through Control-z. For
864instance you could use the either of the following to change the escape
865character to Control-t.
866@table @code
867@item -echr 0x14
868@item -echr 20
869@end table
870
ec410fc9 871@item -s
5fafdf24 872Wait gdb connection to port 1234 (@pxref{gdb_usage}).
89dfe898 873@item -p @var{port}
4046d913
PB
874Change gdb connection port. @var{port} can be either a decimal number
875to specify a TCP port, or a host device (same devices as the serial port).
52c00a5f
FB
876@item -S
877Do not start CPU at startup (you must type 'c' in the monitor).
3b46e624 878@item -d
9d4520d0 879Output log in /tmp/qemu.log
89dfe898 880@item -hdachs @var{c},@var{h},@var{s},[,@var{t}]
46d4767d
FB
881Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
882@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
883translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
4be456f1 884all those parameters. This option is useful for old MS-DOS disk
46d4767d 885images.
7c3fc84d 886
87b47350
FB
887@item -L path
888Set the directory for the BIOS, VGA BIOS and keymaps.
889
15a34c63
FB
890@item -std-vga
891Simulate a standard VGA card with Bochs VBE extensions (default is
3cb0853a
FB
892Cirrus Logic GD5446 PCI VGA). If your guest OS supports the VESA 2.0
893VBE extensions (e.g. Windows XP) and if you want to use high
894resolution modes (>= 1280x1024x16) then you should use this option.
895
3c656346
FB
896@item -no-acpi
897Disable ACPI (Advanced Configuration and Power Interface) support. Use
898it if your guest OS complains about ACPI problems (PC target machine
899only).
900
d1beab82
FB
901@item -no-reboot
902Exit instead of rebooting.
903
d63d307f
FB
904@item -loadvm file
905Start right away with a saved state (@code{loadvm} in monitor)
8e71621f
PB
906
907@item -semihosting
a87295e8
PB
908Enable semihosting syscall emulation (ARM and M68K target machines only).
909
910On ARM this implements the "Angel" interface.
911On M68K this implements the "ColdFire GDB" interface used by libgloss.
912
8e71621f
PB
913Note that this allows guest direct access to the host filesystem,
914so should only be used with trusted guest OS.
ec410fc9
FB
915@end table
916
3e11db9a
FB
917@c man end
918
debc7065 919@node pcsys_keys
3e11db9a
FB
920@section Keys
921
922@c man begin OPTIONS
923
a1b74fe8
FB
924During the graphical emulation, you can use the following keys:
925@table @key
f9859310 926@item Ctrl-Alt-f
a1b74fe8 927Toggle full screen
a0a821a4 928
f9859310 929@item Ctrl-Alt-n
a0a821a4
FB
930Switch to virtual console 'n'. Standard console mappings are:
931@table @emph
932@item 1
933Target system display
934@item 2
935Monitor
936@item 3
937Serial port
a1b74fe8
FB
938@end table
939
f9859310 940@item Ctrl-Alt
a0a821a4
FB
941Toggle mouse and keyboard grab.
942@end table
943
3e11db9a
FB
944In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
945@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
946
a0a821a4
FB
947During emulation, if you are using the @option{-nographic} option, use
948@key{Ctrl-a h} to get terminal commands:
ec410fc9
FB
949
950@table @key
a1b74fe8 951@item Ctrl-a h
ec410fc9 952Print this help
3b46e624 953@item Ctrl-a x
366dfc52 954Exit emulator
3b46e624 955@item Ctrl-a s
1f47a922 956Save disk data back to file (if -snapshot)
20d8a3ed
TS
957@item Ctrl-a t
958toggle console timestamps
a1b74fe8 959@item Ctrl-a b
1f673135 960Send break (magic sysrq in Linux)
a1b74fe8 961@item Ctrl-a c
1f673135 962Switch between console and monitor
a1b74fe8
FB
963@item Ctrl-a Ctrl-a
964Send Ctrl-a
ec410fc9 965@end table
0806e3f6
FB
966@c man end
967
968@ignore
969
1f673135
FB
970@c man begin SEEALSO
971The HTML documentation of QEMU for more precise information and Linux
972user mode emulator invocation.
973@c man end
974
975@c man begin AUTHOR
976Fabrice Bellard
977@c man end
978
979@end ignore
980
debc7065 981@node pcsys_monitor
1f673135
FB
982@section QEMU Monitor
983
984The QEMU monitor is used to give complex commands to the QEMU
985emulator. You can use it to:
986
987@itemize @minus
988
989@item
e598752a 990Remove or insert removable media images
89dfe898 991(such as CD-ROM or floppies).
1f673135 992
5fafdf24 993@item
1f673135
FB
994Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
995from a disk file.
996
997@item Inspect the VM state without an external debugger.
998
999@end itemize
1000
1001@subsection Commands
1002
1003The following commands are available:
1004
1005@table @option
1006
89dfe898 1007@item help or ? [@var{cmd}]
1f673135
FB
1008Show the help for all commands or just for command @var{cmd}.
1009
3b46e624 1010@item commit
89dfe898 1011Commit changes to the disk images (if -snapshot is used).
1f673135 1012
89dfe898
TS
1013@item info @var{subcommand}
1014Show various information about the system state.
1f673135
FB
1015
1016@table @option
1017@item info network
41d03949 1018show the various VLANs and the associated devices
1f673135
FB
1019@item info block
1020show the block devices
1021@item info registers
1022show the cpu registers
1023@item info history
1024show the command line history
b389dbfb
FB
1025@item info pci
1026show emulated PCI device
1027@item info usb
1028show USB devices plugged on the virtual USB hub
1029@item info usbhost
1030show all USB host devices
a3c25997
FB
1031@item info capture
1032show information about active capturing
13a2e80f
FB
1033@item info snapshots
1034show list of VM snapshots
455204eb
TS
1035@item info mice
1036show which guest mouse is receiving events
1f673135
FB
1037@end table
1038
1039@item q or quit
1040Quit the emulator.
1041
89dfe898 1042@item eject [-f] @var{device}
e598752a 1043Eject a removable medium (use -f to force it).
1f673135 1044
89dfe898 1045@item change @var{device} @var{setting}
f858dcae 1046
89dfe898 1047Change the configuration of a device.
f858dcae
TS
1048
1049@table @option
1050@item change @var{diskdevice} @var{filename}
1051Change the medium for a removable disk device to point to @var{filename}. eg
1052
1053@example
1054(qemu) change cdrom /path/to/some.iso
1055@end example
1056
89dfe898 1057@item change vnc @var{display},@var{options}
f858dcae
TS
1058Change the configuration of the VNC server. The valid syntax for @var{display}
1059and @var{options} are described at @ref{sec_invocation}. eg
1060
1061@example
1062(qemu) change vnc localhost:1
1063@end example
1064
1065@item change vnc password
1066
1067Change the password associated with the VNC server. The monitor will prompt for
1068the new password to be entered. VNC passwords are only significant upto 8 letters.
1069eg.
1070
1071@example
1072(qemu) change vnc password
1073Password: ********
1074@end example
1075
1076@end table
1f673135 1077
89dfe898 1078@item screendump @var{filename}
1f673135
FB
1079Save screen into PPM image @var{filename}.
1080
89dfe898 1081@item mouse_move @var{dx} @var{dy} [@var{dz}]
455204eb
TS
1082Move the active mouse to the specified coordinates @var{dx} @var{dy}
1083with optional scroll axis @var{dz}.
1084
89dfe898 1085@item mouse_button @var{val}
455204eb
TS
1086Change the active mouse button state @var{val} (1=L, 2=M, 4=R).
1087
89dfe898 1088@item mouse_set @var{index}
455204eb
TS
1089Set which mouse device receives events at given @var{index}, index
1090can be obtained with
1091@example
1092info mice
1093@end example
1094
89dfe898 1095@item wavcapture @var{filename} [@var{frequency} [@var{bits} [@var{channels}]]]
a3c25997
FB
1096Capture audio into @var{filename}. Using sample rate @var{frequency}
1097bits per sample @var{bits} and number of channels @var{channels}.
1098
1099Defaults:
1100@itemize @minus
1101@item Sample rate = 44100 Hz - CD quality
1102@item Bits = 16
1103@item Number of channels = 2 - Stereo
1104@end itemize
1105
89dfe898 1106@item stopcapture @var{index}
a3c25997
FB
1107Stop capture with a given @var{index}, index can be obtained with
1108@example
1109info capture
1110@end example
1111
89dfe898 1112@item log @var{item1}[,...]
1f673135
FB
1113Activate logging of the specified items to @file{/tmp/qemu.log}.
1114
89dfe898 1115@item savevm [@var{tag}|@var{id}]
13a2e80f
FB
1116Create a snapshot of the whole virtual machine. If @var{tag} is
1117provided, it is used as human readable identifier. If there is already
1118a snapshot with the same tag or ID, it is replaced. More info at
1119@ref{vm_snapshots}.
1f673135 1120
89dfe898 1121@item loadvm @var{tag}|@var{id}
13a2e80f
FB
1122Set the whole virtual machine to the snapshot identified by the tag
1123@var{tag} or the unique snapshot ID @var{id}.
1124
89dfe898 1125@item delvm @var{tag}|@var{id}
13a2e80f 1126Delete the snapshot identified by @var{tag} or @var{id}.
1f673135
FB
1127
1128@item stop
1129Stop emulation.
1130
1131@item c or cont
1132Resume emulation.
1133
89dfe898
TS
1134@item gdbserver [@var{port}]
1135Start gdbserver session (default @var{port}=1234)
1f673135 1136
89dfe898 1137@item x/fmt @var{addr}
1f673135
FB
1138Virtual memory dump starting at @var{addr}.
1139
89dfe898 1140@item xp /@var{fmt} @var{addr}
1f673135
FB
1141Physical memory dump starting at @var{addr}.
1142
1143@var{fmt} is a format which tells the command how to format the
1144data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
1145
1146@table @var
5fafdf24 1147@item count
1f673135
FB
1148is the number of items to be dumped.
1149
1150@item format
4be456f1 1151can be x (hex), d (signed decimal), u (unsigned decimal), o (octal),
1f673135
FB
1152c (char) or i (asm instruction).
1153
1154@item size
52c00a5f
FB
1155can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
1156@code{h} or @code{w} can be specified with the @code{i} format to
1157respectively select 16 or 32 bit code instruction size.
1f673135
FB
1158
1159@end table
1160
5fafdf24 1161Examples:
1f673135
FB
1162@itemize
1163@item
1164Dump 10 instructions at the current instruction pointer:
5fafdf24 1165@example
1f673135
FB
1166(qemu) x/10i $eip
11670x90107063: ret
11680x90107064: sti
11690x90107065: lea 0x0(%esi,1),%esi
11700x90107069: lea 0x0(%edi,1),%edi
11710x90107070: ret
11720x90107071: jmp 0x90107080
11730x90107073: nop
11740x90107074: nop
11750x90107075: nop
11760x90107076: nop
1177@end example
1178
1179@item
1180Dump 80 16 bit values at the start of the video memory.
5fafdf24 1181@smallexample
1f673135
FB
1182(qemu) xp/80hx 0xb8000
11830x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
11840x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
11850x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
11860x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
11870x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
11880x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
11890x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
11900x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
11910x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
11920x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
debc7065 1193@end smallexample
1f673135
FB
1194@end itemize
1195
89dfe898 1196@item p or print/@var{fmt} @var{expr}
1f673135
FB
1197
1198Print expression value. Only the @var{format} part of @var{fmt} is
1199used.
0806e3f6 1200
89dfe898 1201@item sendkey @var{keys}
a3a91a35
FB
1202
1203Send @var{keys} to the emulator. Use @code{-} to press several keys
1204simultaneously. Example:
1205@example
1206sendkey ctrl-alt-f1
1207@end example
1208
1209This command is useful to send keys that your graphical user interface
1210intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
1211
15a34c63
FB
1212@item system_reset
1213
1214Reset the system.
1215
89dfe898 1216@item usb_add @var{devname}
b389dbfb 1217
0aff66b5
PB
1218Add the USB device @var{devname}. For details of available devices see
1219@ref{usb_devices}
b389dbfb 1220
89dfe898 1221@item usb_del @var{devname}
b389dbfb
FB
1222
1223Remove the USB device @var{devname} from the QEMU virtual USB
1224hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
1225command @code{info usb} to see the devices you can remove.
1226
1f673135 1227@end table
0806e3f6 1228
1f673135
FB
1229@subsection Integer expressions
1230
1231The monitor understands integers expressions for every integer
1232argument. You can use register names to get the value of specifics
1233CPU registers by prefixing them with @emph{$}.
ec410fc9 1234
1f47a922
FB
1235@node disk_images
1236@section Disk Images
1237
acd935ef
FB
1238Since version 0.6.1, QEMU supports many disk image formats, including
1239growable disk images (their size increase as non empty sectors are
13a2e80f
FB
1240written), compressed and encrypted disk images. Version 0.8.3 added
1241the new qcow2 disk image format which is essential to support VM
1242snapshots.
1f47a922 1243
debc7065
FB
1244@menu
1245* disk_images_quickstart:: Quick start for disk image creation
1246* disk_images_snapshot_mode:: Snapshot mode
13a2e80f 1247* vm_snapshots:: VM snapshots
debc7065 1248* qemu_img_invocation:: qemu-img Invocation
19cb3738 1249* host_drives:: Using host drives
debc7065
FB
1250* disk_images_fat_images:: Virtual FAT disk images
1251@end menu
1252
1253@node disk_images_quickstart
acd935ef
FB
1254@subsection Quick start for disk image creation
1255
1256You can create a disk image with the command:
1f47a922 1257@example
acd935ef 1258qemu-img create myimage.img mysize
1f47a922 1259@end example
acd935ef
FB
1260where @var{myimage.img} is the disk image filename and @var{mysize} is its
1261size in kilobytes. You can add an @code{M} suffix to give the size in
1262megabytes and a @code{G} suffix for gigabytes.
1263
debc7065 1264See @ref{qemu_img_invocation} for more information.
1f47a922 1265
debc7065 1266@node disk_images_snapshot_mode
1f47a922
FB
1267@subsection Snapshot mode
1268
1269If you use the option @option{-snapshot}, all disk images are
1270considered as read only. When sectors in written, they are written in
1271a temporary file created in @file{/tmp}. You can however force the
acd935ef
FB
1272write back to the raw disk images by using the @code{commit} monitor
1273command (or @key{C-a s} in the serial console).
1f47a922 1274
13a2e80f
FB
1275@node vm_snapshots
1276@subsection VM snapshots
1277
1278VM snapshots are snapshots of the complete virtual machine including
1279CPU state, RAM, device state and the content of all the writable
1280disks. In order to use VM snapshots, you must have at least one non
1281removable and writable block device using the @code{qcow2} disk image
1282format. Normally this device is the first virtual hard drive.
1283
1284Use the monitor command @code{savevm} to create a new VM snapshot or
1285replace an existing one. A human readable name can be assigned to each
19d36792 1286snapshot in addition to its numerical ID.
13a2e80f
FB
1287
1288Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
1289a VM snapshot. @code{info snapshots} lists the available snapshots
1290with their associated information:
1291
1292@example
1293(qemu) info snapshots
1294Snapshot devices: hda
1295Snapshot list (from hda):
1296ID TAG VM SIZE DATE VM CLOCK
12971 start 41M 2006-08-06 12:38:02 00:00:14.954
12982 40M 2006-08-06 12:43:29 00:00:18.633
12993 msys 40M 2006-08-06 12:44:04 00:00:23.514
1300@end example
1301
1302A VM snapshot is made of a VM state info (its size is shown in
1303@code{info snapshots}) and a snapshot of every writable disk image.
1304The VM state info is stored in the first @code{qcow2} non removable
1305and writable block device. The disk image snapshots are stored in
1306every disk image. The size of a snapshot in a disk image is difficult
1307to evaluate and is not shown by @code{info snapshots} because the
1308associated disk sectors are shared among all the snapshots to save
19d36792
FB
1309disk space (otherwise each snapshot would need a full copy of all the
1310disk images).
13a2e80f
FB
1311
1312When using the (unrelated) @code{-snapshot} option
1313(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
1314but they are deleted as soon as you exit QEMU.
1315
1316VM snapshots currently have the following known limitations:
1317@itemize
5fafdf24 1318@item
13a2e80f
FB
1319They cannot cope with removable devices if they are removed or
1320inserted after a snapshot is done.
5fafdf24 1321@item
13a2e80f
FB
1322A few device drivers still have incomplete snapshot support so their
1323state is not saved or restored properly (in particular USB).
1324@end itemize
1325
acd935ef
FB
1326@node qemu_img_invocation
1327@subsection @code{qemu-img} Invocation
1f47a922 1328
acd935ef 1329@include qemu-img.texi
05efe46e 1330
19cb3738
FB
1331@node host_drives
1332@subsection Using host drives
1333
1334In addition to disk image files, QEMU can directly access host
1335devices. We describe here the usage for QEMU version >= 0.8.3.
1336
1337@subsubsection Linux
1338
1339On Linux, you can directly use the host device filename instead of a
4be456f1 1340disk image filename provided you have enough privileges to access
19cb3738
FB
1341it. For example, use @file{/dev/cdrom} to access to the CDROM or
1342@file{/dev/fd0} for the floppy.
1343
f542086d 1344@table @code
19cb3738
FB
1345@item CD
1346You can specify a CDROM device even if no CDROM is loaded. QEMU has
1347specific code to detect CDROM insertion or removal. CDROM ejection by
1348the guest OS is supported. Currently only data CDs are supported.
1349@item Floppy
1350You can specify a floppy device even if no floppy is loaded. Floppy
1351removal is currently not detected accurately (if you change floppy
1352without doing floppy access while the floppy is not loaded, the guest
1353OS will think that the same floppy is loaded).
1354@item Hard disks
1355Hard disks can be used. Normally you must specify the whole disk
1356(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
1357see it as a partitioned disk. WARNING: unless you know what you do, it
1358is better to only make READ-ONLY accesses to the hard disk otherwise
1359you may corrupt your host data (use the @option{-snapshot} command
1360line option or modify the device permissions accordingly).
1361@end table
1362
1363@subsubsection Windows
1364
01781963
FB
1365@table @code
1366@item CD
4be456f1 1367The preferred syntax is the drive letter (e.g. @file{d:}). The
01781963
FB
1368alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
1369supported as an alias to the first CDROM drive.
19cb3738 1370
e598752a 1371Currently there is no specific code to handle removable media, so it
19cb3738
FB
1372is better to use the @code{change} or @code{eject} monitor commands to
1373change or eject media.
01781963 1374@item Hard disks
89dfe898 1375Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
01781963
FB
1376where @var{N} is the drive number (0 is the first hard disk).
1377
1378WARNING: unless you know what you do, it is better to only make
1379READ-ONLY accesses to the hard disk otherwise you may corrupt your
1380host data (use the @option{-snapshot} command line so that the
1381modifications are written in a temporary file).
1382@end table
1383
19cb3738
FB
1384
1385@subsubsection Mac OS X
1386
5fafdf24 1387@file{/dev/cdrom} is an alias to the first CDROM.
19cb3738 1388
e598752a 1389Currently there is no specific code to handle removable media, so it
19cb3738
FB
1390is better to use the @code{change} or @code{eject} monitor commands to
1391change or eject media.
1392
debc7065 1393@node disk_images_fat_images
2c6cadd4
FB
1394@subsection Virtual FAT disk images
1395
1396QEMU can automatically create a virtual FAT disk image from a
1397directory tree. In order to use it, just type:
1398
5fafdf24 1399@example
2c6cadd4
FB
1400qemu linux.img -hdb fat:/my_directory
1401@end example
1402
1403Then you access access to all the files in the @file{/my_directory}
1404directory without having to copy them in a disk image or to export
1405them via SAMBA or NFS. The default access is @emph{read-only}.
1406
1407Floppies can be emulated with the @code{:floppy:} option:
1408
5fafdf24 1409@example
2c6cadd4
FB
1410qemu linux.img -fda fat:floppy:/my_directory
1411@end example
1412
1413A read/write support is available for testing (beta stage) with the
1414@code{:rw:} option:
1415
5fafdf24 1416@example
2c6cadd4
FB
1417qemu linux.img -fda fat:floppy:rw:/my_directory
1418@end example
1419
1420What you should @emph{never} do:
1421@itemize
1422@item use non-ASCII filenames ;
1423@item use "-snapshot" together with ":rw:" ;
85b2c688
FB
1424@item expect it to work when loadvm'ing ;
1425@item write to the FAT directory on the host system while accessing it with the guest system.
2c6cadd4
FB
1426@end itemize
1427
debc7065 1428@node pcsys_network
9d4fb82e
FB
1429@section Network emulation
1430
4be456f1 1431QEMU can simulate several network cards (PCI or ISA cards on the PC
41d03949
FB
1432target) and can connect them to an arbitrary number of Virtual Local
1433Area Networks (VLANs). Host TAP devices can be connected to any QEMU
1434VLAN. VLAN can be connected between separate instances of QEMU to
4be456f1 1435simulate large networks. For simpler usage, a non privileged user mode
41d03949
FB
1436network stack can replace the TAP device to have a basic network
1437connection.
1438
1439@subsection VLANs
9d4fb82e 1440
41d03949
FB
1441QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
1442connection between several network devices. These devices can be for
1443example QEMU virtual Ethernet cards or virtual Host ethernet devices
1444(TAP devices).
9d4fb82e 1445
41d03949
FB
1446@subsection Using TAP network interfaces
1447
1448This is the standard way to connect QEMU to a real network. QEMU adds
1449a virtual network device on your host (called @code{tapN}), and you
1450can then configure it as if it was a real ethernet card.
9d4fb82e 1451
8f40c388
FB
1452@subsubsection Linux host
1453
9d4fb82e
FB
1454As an example, you can download the @file{linux-test-xxx.tar.gz}
1455archive and copy the script @file{qemu-ifup} in @file{/etc} and
1456configure properly @code{sudo} so that the command @code{ifconfig}
1457contained in @file{qemu-ifup} can be executed as root. You must verify
41d03949 1458that your host kernel supports the TAP network interfaces: the
9d4fb82e
FB
1459device @file{/dev/net/tun} must be present.
1460
ee0f4751
FB
1461See @ref{sec_invocation} to have examples of command lines using the
1462TAP network interfaces.
9d4fb82e 1463
8f40c388
FB
1464@subsubsection Windows host
1465
1466There is a virtual ethernet driver for Windows 2000/XP systems, called
1467TAP-Win32. But it is not included in standard QEMU for Windows,
1468so you will need to get it separately. It is part of OpenVPN package,
1469so download OpenVPN from : @url{http://openvpn.net/}.
1470
9d4fb82e
FB
1471@subsection Using the user mode network stack
1472
41d03949
FB
1473By using the option @option{-net user} (default configuration if no
1474@option{-net} option is specified), QEMU uses a completely user mode
4be456f1 1475network stack (you don't need root privilege to use the virtual
41d03949 1476network). The virtual network configuration is the following:
9d4fb82e
FB
1477
1478@example
1479
41d03949
FB
1480 QEMU VLAN <------> Firewall/DHCP server <-----> Internet
1481 | (10.0.2.2)
9d4fb82e 1482 |
2518bd0d 1483 ----> DNS server (10.0.2.3)
3b46e624 1484 |
2518bd0d 1485 ----> SMB server (10.0.2.4)
9d4fb82e
FB
1486@end example
1487
1488The QEMU VM behaves as if it was behind a firewall which blocks all
1489incoming connections. You can use a DHCP client to automatically
41d03949
FB
1490configure the network in the QEMU VM. The DHCP server assign addresses
1491to the hosts starting from 10.0.2.15.
9d4fb82e
FB
1492
1493In order to check that the user mode network is working, you can ping
1494the address 10.0.2.2 and verify that you got an address in the range
149510.0.2.x from the QEMU virtual DHCP server.
1496
b415a407 1497Note that @code{ping} is not supported reliably to the internet as it
4be456f1 1498would require root privileges. It means you can only ping the local
b415a407
FB
1499router (10.0.2.2).
1500
9bf05444
FB
1501When using the built-in TFTP server, the router is also the TFTP
1502server.
1503
1504When using the @option{-redir} option, TCP or UDP connections can be
1505redirected from the host to the guest. It allows for example to
1506redirect X11, telnet or SSH connections.
443f1376 1507
41d03949
FB
1508@subsection Connecting VLANs between QEMU instances
1509
1510Using the @option{-net socket} option, it is possible to make VLANs
1511that span several QEMU instances. See @ref{sec_invocation} to have a
1512basic example.
1513
9d4fb82e
FB
1514@node direct_linux_boot
1515@section Direct Linux Boot
1f673135
FB
1516
1517This section explains how to launch a Linux kernel inside QEMU without
1518having to make a full bootable image. It is very useful for fast Linux
ee0f4751 1519kernel testing.
1f673135 1520
ee0f4751 1521The syntax is:
1f673135 1522@example
ee0f4751 1523qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1f673135
FB
1524@end example
1525
ee0f4751
FB
1526Use @option{-kernel} to provide the Linux kernel image and
1527@option{-append} to give the kernel command line arguments. The
1528@option{-initrd} option can be used to provide an INITRD image.
1f673135 1529
ee0f4751
FB
1530When using the direct Linux boot, a disk image for the first hard disk
1531@file{hda} is required because its boot sector is used to launch the
1532Linux kernel.
1f673135 1533
ee0f4751
FB
1534If you do not need graphical output, you can disable it and redirect
1535the virtual serial port and the QEMU monitor to the console with the
1536@option{-nographic} option. The typical command line is:
1f673135 1537@example
ee0f4751
FB
1538qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1539 -append "root=/dev/hda console=ttyS0" -nographic
1f673135
FB
1540@end example
1541
ee0f4751
FB
1542Use @key{Ctrl-a c} to switch between the serial console and the
1543monitor (@pxref{pcsys_keys}).
1f673135 1544
debc7065 1545@node pcsys_usb
b389dbfb
FB
1546@section USB emulation
1547
0aff66b5
PB
1548QEMU emulates a PCI UHCI USB controller. You can virtually plug
1549virtual USB devices or real host USB devices (experimental, works only
1550on Linux hosts). Qemu will automatically create and connect virtual USB hubs
f542086d 1551as necessary to connect multiple USB devices.
b389dbfb 1552
0aff66b5
PB
1553@menu
1554* usb_devices::
1555* host_usb_devices::
1556@end menu
1557@node usb_devices
1558@subsection Connecting USB devices
b389dbfb 1559
0aff66b5
PB
1560USB devices can be connected with the @option{-usbdevice} commandline option
1561or the @code{usb_add} monitor command. Available devices are:
b389dbfb 1562
0aff66b5
PB
1563@table @var
1564@item @code{mouse}
1565Virtual Mouse. This will override the PS/2 mouse emulation when activated.
1566@item @code{tablet}
c6d46c20 1567Pointer device that uses absolute coordinates (like a touchscreen).
0aff66b5
PB
1568This means qemu is able to report the mouse position without having
1569to grab the mouse. Also overrides the PS/2 mouse emulation when activated.
89dfe898 1570@item @code{disk:@var{file}}
0aff66b5 1571Mass storage device based on @var{file} (@pxref{disk_images})
89dfe898 1572@item @code{host:@var{bus.addr}}
0aff66b5
PB
1573Pass through the host device identified by @var{bus.addr}
1574(Linux only)
89dfe898 1575@item @code{host:@var{vendor_id:product_id}}
0aff66b5
PB
1576Pass through the host device identified by @var{vendor_id:product_id}
1577(Linux only)
f6d2a316
AZ
1578@item @code{wacom-tablet}
1579Virtual Wacom PenPartner tablet. This device is similar to the @code{tablet}
1580above but it can be used with the tslib library because in addition to touch
1581coordinates it reports touch pressure.
47b2d338
AZ
1582@item @code{keyboard}
1583Standard USB keyboard. Will override the PS/2 keyboard (if present).
0aff66b5 1584@end table
b389dbfb 1585
0aff66b5 1586@node host_usb_devices
b389dbfb
FB
1587@subsection Using host USB devices on a Linux host
1588
1589WARNING: this is an experimental feature. QEMU will slow down when
1590using it. USB devices requiring real time streaming (i.e. USB Video
1591Cameras) are not supported yet.
1592
1593@enumerate
5fafdf24 1594@item If you use an early Linux 2.4 kernel, verify that no Linux driver
b389dbfb
FB
1595is actually using the USB device. A simple way to do that is simply to
1596disable the corresponding kernel module by renaming it from @file{mydriver.o}
1597to @file{mydriver.o.disabled}.
1598
1599@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1600@example
1601ls /proc/bus/usb
1602001 devices drivers
1603@end example
1604
1605@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:
1606@example
1607chown -R myuid /proc/bus/usb
1608@end example
1609
1610@item Launch QEMU and do in the monitor:
5fafdf24 1611@example
b389dbfb
FB
1612info usbhost
1613 Device 1.2, speed 480 Mb/s
1614 Class 00: USB device 1234:5678, USB DISK
1615@end example
1616You should see the list of the devices you can use (Never try to use
1617hubs, it won't work).
1618
1619@item Add the device in QEMU by using:
5fafdf24 1620@example
b389dbfb
FB
1621usb_add host:1234:5678
1622@end example
1623
1624Normally the guest OS should report that a new USB device is
1625plugged. You can use the option @option{-usbdevice} to do the same.
1626
1627@item Now you can try to use the host USB device in QEMU.
1628
1629@end enumerate
1630
1631When relaunching QEMU, you may have to unplug and plug again the USB
1632device to make it work again (this is a bug).
1633
f858dcae
TS
1634@node vnc_security
1635@section VNC security
1636
1637The VNC server capability provides access to the graphical console
1638of the guest VM across the network. This has a number of security
1639considerations depending on the deployment scenarios.
1640
1641@menu
1642* vnc_sec_none::
1643* vnc_sec_password::
1644* vnc_sec_certificate::
1645* vnc_sec_certificate_verify::
1646* vnc_sec_certificate_pw::
1647* vnc_generate_cert::
1648@end menu
1649@node vnc_sec_none
1650@subsection Without passwords
1651
1652The simplest VNC server setup does not include any form of authentication.
1653For this setup it is recommended to restrict it to listen on a UNIX domain
1654socket only. For example
1655
1656@example
1657qemu [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
1658@end example
1659
1660This ensures that only users on local box with read/write access to that
1661path can access the VNC server. To securely access the VNC server from a
1662remote machine, a combination of netcat+ssh can be used to provide a secure
1663tunnel.
1664
1665@node vnc_sec_password
1666@subsection With passwords
1667
1668The VNC protocol has limited support for password based authentication. Since
1669the protocol limits passwords to 8 characters it should not be considered
1670to provide high security. The password can be fairly easily brute-forced by
1671a client making repeat connections. For this reason, a VNC server using password
1672authentication should be restricted to only listen on the loopback interface
1673or UNIX domain sockets. Password ayuthentication is requested with the @code{password}
1674option, and then once QEMU is running the password is set with the monitor. Until
1675the monitor is used to set the password all clients will be rejected.
1676
1677@example
1678qemu [...OPTIONS...] -vnc :1,password -monitor stdio
1679(qemu) change vnc password
1680Password: ********
1681(qemu)
1682@end example
1683
1684@node vnc_sec_certificate
1685@subsection With x509 certificates
1686
1687The QEMU VNC server also implements the VeNCrypt extension allowing use of
1688TLS for encryption of the session, and x509 certificates for authentication.
1689The use of x509 certificates is strongly recommended, because TLS on its
1690own is susceptible to man-in-the-middle attacks. Basic x509 certificate
1691support provides a secure session, but no authentication. This allows any
1692client to connect, and provides an encrypted session.
1693
1694@example
1695qemu [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
1696@end example
1697
1698In the above example @code{/etc/pki/qemu} should contain at least three files,
1699@code{ca-cert.pem}, @code{server-cert.pem} and @code{server-key.pem}. Unprivileged
1700users will want to use a private directory, for example @code{$HOME/.pki/qemu}.
1701NB the @code{server-key.pem} file should be protected with file mode 0600 to
1702only be readable by the user owning it.
1703
1704@node vnc_sec_certificate_verify
1705@subsection With x509 certificates and client verification
1706
1707Certificates can also provide a means to authenticate the client connecting.
1708The server will request that the client provide a certificate, which it will
1709then validate against the CA certificate. This is a good choice if deploying
1710in an environment with a private internal certificate authority.
1711
1712@example
1713qemu [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
1714@end example
1715
1716
1717@node vnc_sec_certificate_pw
1718@subsection With x509 certificates, client verification and passwords
1719
1720Finally, the previous method can be combined with VNC password authentication
1721to provide two layers of authentication for clients.
1722
1723@example
1724qemu [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
1725(qemu) change vnc password
1726Password: ********
1727(qemu)
1728@end example
1729
1730@node vnc_generate_cert
1731@subsection Generating certificates for VNC
1732
1733The GNU TLS packages provides a command called @code{certtool} which can
1734be used to generate certificates and keys in PEM format. At a minimum it
1735is neccessary to setup a certificate authority, and issue certificates to
1736each server. If using certificates for authentication, then each client
1737will also need to be issued a certificate. The recommendation is for the
1738server to keep its certificates in either @code{/etc/pki/qemu} or for
1739unprivileged users in @code{$HOME/.pki/qemu}.
1740
1741@menu
1742* vnc_generate_ca::
1743* vnc_generate_server::
1744* vnc_generate_client::
1745@end menu
1746@node vnc_generate_ca
1747@subsubsection Setup the Certificate Authority
1748
1749This step only needs to be performed once per organization / organizational
1750unit. First the CA needs a private key. This key must be kept VERY secret
1751and secure. If this key is compromised the entire trust chain of the certificates
1752issued with it is lost.
1753
1754@example
1755# certtool --generate-privkey > ca-key.pem
1756@end example
1757
1758A CA needs to have a public certificate. For simplicity it can be a self-signed
1759certificate, or one issue by a commercial certificate issuing authority. To
1760generate a self-signed certificate requires one core piece of information, the
1761name of the organization.
1762
1763@example
1764# cat > ca.info <<EOF
1765cn = Name of your organization
1766ca
1767cert_signing_key
1768EOF
1769# certtool --generate-self-signed \
1770 --load-privkey ca-key.pem
1771 --template ca.info \
1772 --outfile ca-cert.pem
1773@end example
1774
1775The @code{ca-cert.pem} file should be copied to all servers and clients wishing to utilize
1776TLS support in the VNC server. The @code{ca-key.pem} must not be disclosed/copied at all.
1777
1778@node vnc_generate_server
1779@subsubsection Issuing server certificates
1780
1781Each server (or host) needs to be issued with a key and certificate. When connecting
1782the certificate is sent to the client which validates it against the CA certificate.
1783The core piece of information for a server certificate is the hostname. This should
1784be the fully qualified hostname that the client will connect with, since the client
1785will typically also verify the hostname in the certificate. On the host holding the
1786secure CA private key:
1787
1788@example
1789# cat > server.info <<EOF
1790organization = Name of your organization
1791cn = server.foo.example.com
1792tls_www_server
1793encryption_key
1794signing_key
1795EOF
1796# certtool --generate-privkey > server-key.pem
1797# certtool --generate-certificate \
1798 --load-ca-certificate ca-cert.pem \
1799 --load-ca-privkey ca-key.pem \
1800 --load-privkey server server-key.pem \
1801 --template server.info \
1802 --outfile server-cert.pem
1803@end example
1804
1805The @code{server-key.pem} and @code{server-cert.pem} files should now be securely copied
1806to the server for which they were generated. The @code{server-key.pem} is security
1807sensitive and should be kept protected with file mode 0600 to prevent disclosure.
1808
1809@node vnc_generate_client
1810@subsubsection Issuing client certificates
1811
1812If the QEMU VNC server is to use the @code{x509verify} option to validate client
1813certificates as its authentication mechanism, each client also needs to be issued
1814a certificate. The client certificate contains enough metadata to uniquely identify
1815the client, typically organization, state, city, building, etc. On the host holding
1816the secure CA private key:
1817
1818@example
1819# cat > client.info <<EOF
1820country = GB
1821state = London
1822locality = London
1823organiazation = Name of your organization
1824cn = client.foo.example.com
1825tls_www_client
1826encryption_key
1827signing_key
1828EOF
1829# certtool --generate-privkey > client-key.pem
1830# certtool --generate-certificate \
1831 --load-ca-certificate ca-cert.pem \
1832 --load-ca-privkey ca-key.pem \
1833 --load-privkey client-key.pem \
1834 --template client.info \
1835 --outfile client-cert.pem
1836@end example
1837
1838The @code{client-key.pem} and @code{client-cert.pem} files should now be securely
1839copied to the client for which they were generated.
1840
0806e3f6 1841@node gdb_usage
da415d54
FB
1842@section GDB usage
1843
1844QEMU has a primitive support to work with gdb, so that you can do
0806e3f6 1845'Ctrl-C' while the virtual machine is running and inspect its state.
da415d54 1846
9d4520d0 1847In order to use gdb, launch qemu with the '-s' option. It will wait for a
da415d54
FB
1848gdb connection:
1849@example
debc7065
FB
1850> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1851 -append "root=/dev/hda"
da415d54
FB
1852Connected to host network interface: tun0
1853Waiting gdb connection on port 1234
1854@end example
1855
1856Then launch gdb on the 'vmlinux' executable:
1857@example
1858> gdb vmlinux
1859@end example
1860
1861In gdb, connect to QEMU:
1862@example
6c9bf893 1863(gdb) target remote localhost:1234
da415d54
FB
1864@end example
1865
1866Then you can use gdb normally. For example, type 'c' to launch the kernel:
1867@example
1868(gdb) c
1869@end example
1870
0806e3f6
FB
1871Here are some useful tips in order to use gdb on system code:
1872
1873@enumerate
1874@item
1875Use @code{info reg} to display all the CPU registers.
1876@item
1877Use @code{x/10i $eip} to display the code at the PC position.
1878@item
1879Use @code{set architecture i8086} to dump 16 bit code. Then use
294e8637 1880@code{x/10i $cs*16+$eip} to dump the code at the PC position.
0806e3f6
FB
1881@end enumerate
1882
debc7065 1883@node pcsys_os_specific
1a084f3d
FB
1884@section Target OS specific information
1885
1886@subsection Linux
1887
15a34c63
FB
1888To have access to SVGA graphic modes under X11, use the @code{vesa} or
1889the @code{cirrus} X11 driver. For optimal performances, use 16 bit
1890color depth in the guest and the host OS.
1a084f3d 1891
e3371e62
FB
1892When using a 2.6 guest Linux kernel, you should add the option
1893@code{clock=pit} on the kernel command line because the 2.6 Linux
1894kernels make very strict real time clock checks by default that QEMU
1895cannot simulate exactly.
1896
7c3fc84d
FB
1897When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1898not activated because QEMU is slower with this patch. The QEMU
1899Accelerator Module is also much slower in this case. Earlier Fedora
4be456f1 1900Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporate this
7c3fc84d
FB
1901patch by default. Newer kernels don't have it.
1902
1a084f3d
FB
1903@subsection Windows
1904
1905If you have a slow host, using Windows 95 is better as it gives the
1906best speed. Windows 2000 is also a good choice.
1907
e3371e62
FB
1908@subsubsection SVGA graphic modes support
1909
1910QEMU emulates a Cirrus Logic GD5446 Video
15a34c63
FB
1911card. All Windows versions starting from Windows 95 should recognize
1912and use this graphic card. For optimal performances, use 16 bit color
1913depth in the guest and the host OS.
1a084f3d 1914
3cb0853a
FB
1915If you are using Windows XP as guest OS and if you want to use high
1916resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
19171280x1024x16), then you should use the VESA VBE virtual graphic card
1918(option @option{-std-vga}).
1919
e3371e62
FB
1920@subsubsection CPU usage reduction
1921
1922Windows 9x does not correctly use the CPU HLT
15a34c63
FB
1923instruction. The result is that it takes host CPU cycles even when
1924idle. You can install the utility from
1925@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
1926problem. Note that no such tool is needed for NT, 2000 or XP.
1a084f3d 1927
9d0a8e6f 1928@subsubsection Windows 2000 disk full problem
e3371e62 1929
9d0a8e6f
FB
1930Windows 2000 has a bug which gives a disk full problem during its
1931installation. When installing it, use the @option{-win2k-hack} QEMU
1932option to enable a specific workaround. After Windows 2000 is
1933installed, you no longer need this option (this option slows down the
1934IDE transfers).
e3371e62 1935
6cc721cf
FB
1936@subsubsection Windows 2000 shutdown
1937
1938Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1939can. It comes from the fact that Windows 2000 does not automatically
1940use the APM driver provided by the BIOS.
1941
1942In order to correct that, do the following (thanks to Struan
1943Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
1944Add/Troubleshoot a device => Add a new device & Next => No, select the
1945hardware from a list & Next => NT Apm/Legacy Support & Next => Next
1946(again) a few times. Now the driver is installed and Windows 2000 now
5fafdf24 1947correctly instructs QEMU to shutdown at the appropriate moment.
6cc721cf
FB
1948
1949@subsubsection Share a directory between Unix and Windows
1950
1951See @ref{sec_invocation} about the help of the option @option{-smb}.
1952
2192c332 1953@subsubsection Windows XP security problem
e3371e62
FB
1954
1955Some releases of Windows XP install correctly but give a security
1956error when booting:
1957@example
1958A problem is preventing Windows from accurately checking the
1959license for this computer. Error code: 0x800703e6.
1960@end example
e3371e62 1961
2192c332
FB
1962The workaround is to install a service pack for XP after a boot in safe
1963mode. Then reboot, and the problem should go away. Since there is no
1964network while in safe mode, its recommended to download the full
1965installation of SP1 or SP2 and transfer that via an ISO or using the
1966vvfat block device ("-hdb fat:directory_which_holds_the_SP").
e3371e62 1967
a0a821a4
FB
1968@subsection MS-DOS and FreeDOS
1969
1970@subsubsection CPU usage reduction
1971
1972DOS does not correctly use the CPU HLT instruction. The result is that
1973it takes host CPU cycles even when idle. You can install the utility
1974from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
1975problem.
1976
debc7065 1977@node QEMU System emulator for non PC targets
3f9f3aa1
FB
1978@chapter QEMU System emulator for non PC targets
1979
1980QEMU is a generic emulator and it emulates many non PC
1981machines. Most of the options are similar to the PC emulator. The
4be456f1 1982differences are mentioned in the following sections.
3f9f3aa1 1983
debc7065
FB
1984@menu
1985* QEMU PowerPC System emulator::
24d4de45
TS
1986* Sparc32 System emulator::
1987* Sparc64 System emulator::
1988* MIPS System emulator::
1989* ARM System emulator::
1990* ColdFire System emulator::
debc7065
FB
1991@end menu
1992
1993@node QEMU PowerPC System emulator
3f9f3aa1 1994@section QEMU PowerPC System emulator
1a084f3d 1995
15a34c63
FB
1996Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1997or PowerMac PowerPC system.
1a084f3d 1998
b671f9ed 1999QEMU emulates the following PowerMac peripherals:
1a084f3d 2000
15a34c63 2001@itemize @minus
5fafdf24
TS
2002@item
2003UniNorth PCI Bridge
15a34c63
FB
2004@item
2005PCI VGA compatible card with VESA Bochs Extensions
5fafdf24 2006@item
15a34c63 20072 PMAC IDE interfaces with hard disk and CD-ROM support
5fafdf24 2008@item
15a34c63
FB
2009NE2000 PCI adapters
2010@item
2011Non Volatile RAM
2012@item
2013VIA-CUDA with ADB keyboard and mouse.
1a084f3d
FB
2014@end itemize
2015
b671f9ed 2016QEMU emulates the following PREP peripherals:
52c00a5f
FB
2017
2018@itemize @minus
5fafdf24 2019@item
15a34c63
FB
2020PCI Bridge
2021@item
2022PCI VGA compatible card with VESA Bochs Extensions
5fafdf24 2023@item
52c00a5f
FB
20242 IDE interfaces with hard disk and CD-ROM support
2025@item
2026Floppy disk
5fafdf24 2027@item
15a34c63 2028NE2000 network adapters
52c00a5f
FB
2029@item
2030Serial port
2031@item
2032PREP Non Volatile RAM
15a34c63
FB
2033@item
2034PC compatible keyboard and mouse.
52c00a5f
FB
2035@end itemize
2036
15a34c63 2037QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
3f9f3aa1 2038@url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
52c00a5f 2039
15a34c63
FB
2040@c man begin OPTIONS
2041
2042The following options are specific to the PowerPC emulation:
2043
2044@table @option
2045
3b46e624 2046@item -g WxH[xDEPTH]
15a34c63
FB
2047
2048Set the initial VGA graphic mode. The default is 800x600x15.
2049
2050@end table
2051
5fafdf24 2052@c man end
15a34c63
FB
2053
2054
52c00a5f 2055More information is available at
3f9f3aa1 2056@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
52c00a5f 2057
24d4de45
TS
2058@node Sparc32 System emulator
2059@section Sparc32 System emulator
e80cfcfc 2060
6a3b9cc9 2061Use the executable @file{qemu-system-sparc} to simulate a SPARCstation
ee76f82e
BS
20625, SPARCstation 10, SPARCstation 20, SPARCserver 600MP (sun4m
2063architecture), SPARCstation 2 (sun4c architecture), SPARCserver 1000,
2064or SPARCcenter 2000 (sun4d architecture). The emulation is somewhat
2065complete. SMP up to 16 CPUs is supported, but Linux limits the number
2066of usable CPUs to 4.
e80cfcfc 2067
7d85892b 2068QEMU emulates the following sun4m/sun4d peripherals:
e80cfcfc
FB
2069
2070@itemize @minus
3475187d 2071@item
7d85892b 2072IOMMU or IO-UNITs
e80cfcfc
FB
2073@item
2074TCX Frame buffer
5fafdf24 2075@item
e80cfcfc
FB
2076Lance (Am7990) Ethernet
2077@item
2078Non Volatile RAM M48T08
2079@item
3475187d
FB
2080Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
2081and power/reset logic
2082@item
2083ESP SCSI controller with hard disk and CD-ROM support
2084@item
6a3b9cc9 2085Floppy drive (not on SS-600MP)
a2502b58
BS
2086@item
2087CS4231 sound device (only on SS-5, not working yet)
e80cfcfc
FB
2088@end itemize
2089
6a3b9cc9
BS
2090The number of peripherals is fixed in the architecture. Maximum
2091memory size depends on the machine type, for SS-5 it is 256MB and for
7d85892b 2092others 2047MB.
3475187d 2093
30a604f3 2094Since version 0.8.2, QEMU uses OpenBIOS
0986ac3b
FB
2095@url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
2096firmware implementation. The goal is to implement a 100% IEEE
20971275-1994 (referred to as Open Firmware) compliant firmware.
3475187d
FB
2098
2099A sample Linux 2.6 series kernel and ram disk image are available on
0986ac3b
FB
2100the QEMU web site. Please note that currently NetBSD, OpenBSD or
2101Solaris kernels don't work.
3475187d
FB
2102
2103@c man begin OPTIONS
2104
a2502b58 2105The following options are specific to the Sparc32 emulation:
3475187d
FB
2106
2107@table @option
2108
a2502b58 2109@item -g WxHx[xDEPTH]
3475187d 2110
a2502b58
BS
2111Set the initial TCX graphic mode. The default is 1024x768x8, currently
2112the only other possible mode is 1024x768x24.
3475187d 2113
66508601
BS
2114@item -prom-env string
2115
2116Set OpenBIOS variables in NVRAM, for example:
2117
2118@example
2119qemu-system-sparc -prom-env 'auto-boot?=false' \
2120 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
2121@end example
2122
ee76f82e 2123@item -M [SS-5|SS-10|SS-20|SS-600MP|SS-2|SS-1000|SS-2000]
a2502b58
BS
2124
2125Set the emulated machine type. Default is SS-5.
2126
3475187d
FB
2127@end table
2128
5fafdf24 2129@c man end
3475187d 2130
24d4de45
TS
2131@node Sparc64 System emulator
2132@section Sparc64 System emulator
e80cfcfc 2133
3475187d
FB
2134Use the executable @file{qemu-system-sparc64} to simulate a Sun4u machine.
2135The emulator is not usable for anything yet.
b756921a 2136
83469015
FB
2137QEMU emulates the following sun4u peripherals:
2138
2139@itemize @minus
2140@item
5fafdf24 2141UltraSparc IIi APB PCI Bridge
83469015
FB
2142@item
2143PCI VGA compatible card with VESA Bochs Extensions
2144@item
2145Non Volatile RAM M48T59
2146@item
2147PC-compatible serial ports
2148@end itemize
2149
24d4de45
TS
2150@node MIPS System emulator
2151@section MIPS System emulator
9d0a8e6f 2152
d9aedc32
TS
2153Four executables cover simulation of 32 and 64-bit MIPS systems in
2154both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
2155@file{qemu-system-mips64} and @file{qemu-system-mips64el}.
2156Four different machine types are emulated:
24d4de45
TS
2157
2158@itemize @minus
2159@item
2160A generic ISA PC-like machine "mips"
2161@item
2162The MIPS Malta prototype board "malta"
2163@item
d9aedc32 2164An ACER Pica "pica61". This machine needs the 64-bit emulator.
6bf5b4e8 2165@item
f0fc6f8f 2166MIPS emulator pseudo board "mipssim"
24d4de45
TS
2167@end itemize
2168
2169The generic emulation is supported by Debian 'Etch' and is able to
2170install Debian into a virtual disk image. The following devices are
2171emulated:
3f9f3aa1
FB
2172
2173@itemize @minus
5fafdf24 2174@item
6bf5b4e8 2175A range of MIPS CPUs, default is the 24Kf
3f9f3aa1
FB
2176@item
2177PC style serial port
2178@item
24d4de45
TS
2179PC style IDE disk
2180@item
3f9f3aa1
FB
2181NE2000 network card
2182@end itemize
2183
24d4de45
TS
2184The Malta emulation supports the following devices:
2185
2186@itemize @minus
2187@item
0b64d008 2188Core board with MIPS 24Kf CPU and Galileo system controller
24d4de45
TS
2189@item
2190PIIX4 PCI/USB/SMbus controller
2191@item
2192The Multi-I/O chip's serial device
2193@item
2194PCnet32 PCI network card
2195@item
2196Malta FPGA serial device
2197@item
2198Cirrus VGA graphics card
2199@end itemize
2200
2201The ACER Pica emulation supports:
2202
2203@itemize @minus
2204@item
2205MIPS R4000 CPU
2206@item
2207PC-style IRQ and DMA controllers
2208@item
2209PC Keyboard
2210@item
2211IDE controller
2212@end itemize
3f9f3aa1 2213
f0fc6f8f
TS
2214The mipssim pseudo board emulation provides an environment similiar
2215to what the proprietary MIPS emulator uses for running Linux.
2216It supports:
6bf5b4e8
TS
2217
2218@itemize @minus
2219@item
2220A range of MIPS CPUs, default is the 24Kf
2221@item
2222PC style serial port
2223@item
2224MIPSnet network emulation
2225@end itemize
2226
24d4de45
TS
2227@node ARM System emulator
2228@section ARM System emulator
3f9f3aa1
FB
2229
2230Use the executable @file{qemu-system-arm} to simulate a ARM
2231machine. The ARM Integrator/CP board is emulated with the following
2232devices:
2233
2234@itemize @minus
2235@item
9ee6e8bb 2236ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
3f9f3aa1
FB
2237@item
2238Two PL011 UARTs
5fafdf24 2239@item
3f9f3aa1 2240SMC 91c111 Ethernet adapter
00a9bf19
PB
2241@item
2242PL110 LCD controller
2243@item
2244PL050 KMI with PS/2 keyboard and mouse.
a1bb27b1
PB
2245@item
2246PL181 MultiMedia Card Interface with SD card.
00a9bf19
PB
2247@end itemize
2248
2249The ARM Versatile baseboard is emulated with the following devices:
2250
2251@itemize @minus
2252@item
9ee6e8bb 2253ARM926E, ARM1136 or Cortex-A8 CPU
00a9bf19
PB
2254@item
2255PL190 Vectored Interrupt Controller
2256@item
2257Four PL011 UARTs
5fafdf24 2258@item
00a9bf19
PB
2259SMC 91c111 Ethernet adapter
2260@item
2261PL110 LCD controller
2262@item
2263PL050 KMI with PS/2 keyboard and mouse.
2264@item
2265PCI host bridge. Note the emulated PCI bridge only provides access to
2266PCI memory space. It does not provide access to PCI IO space.
4be456f1
TS
2267This means some devices (eg. ne2k_pci NIC) are not usable, and others
2268(eg. rtl8139 NIC) are only usable when the guest drivers use the memory
00a9bf19 2269mapped control registers.
e6de1bad
PB
2270@item
2271PCI OHCI USB controller.
2272@item
2273LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
a1bb27b1
PB
2274@item
2275PL181 MultiMedia Card Interface with SD card.
3f9f3aa1
FB
2276@end itemize
2277
d7739d75
PB
2278The ARM RealView Emulation baseboard is emulated with the following devices:
2279
2280@itemize @minus
2281@item
9ee6e8bb 2282ARM926E, ARM1136, ARM11MPCORE(x4) or Cortex-A8 CPU
d7739d75
PB
2283@item
2284ARM AMBA Generic/Distributed Interrupt Controller
2285@item
2286Four PL011 UARTs
5fafdf24 2287@item
d7739d75
PB
2288SMC 91c111 Ethernet adapter
2289@item
2290PL110 LCD controller
2291@item
2292PL050 KMI with PS/2 keyboard and mouse
2293@item
2294PCI host bridge
2295@item
2296PCI OHCI USB controller
2297@item
2298LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
a1bb27b1
PB
2299@item
2300PL181 MultiMedia Card Interface with SD card.
d7739d75
PB
2301@end itemize
2302
b00052e4
AZ
2303The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
2304and "Terrier") emulation includes the following peripherals:
2305
2306@itemize @minus
2307@item
2308Intel PXA270 System-on-chip (ARM V5TE core)
2309@item
2310NAND Flash memory
2311@item
2312IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
2313@item
2314On-chip OHCI USB controller
2315@item
2316On-chip LCD controller
2317@item
2318On-chip Real Time Clock
2319@item
2320TI ADS7846 touchscreen controller on SSP bus
2321@item
2322Maxim MAX1111 analog-digital converter on I@math{^2}C bus
2323@item
2324GPIO-connected keyboard controller and LEDs
2325@item
549444e1 2326Secure Digital card connected to PXA MMC/SD host
b00052e4
AZ
2327@item
2328Three on-chip UARTs
2329@item
2330WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
2331@end itemize
2332
02645926
AZ
2333The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
2334following elements:
2335
2336@itemize @minus
2337@item
2338Texas Instruments OMAP310 System-on-chip (ARM 925T core)
2339@item
2340ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
2341@item
2342On-chip LCD controller
2343@item
2344On-chip Real Time Clock
2345@item
2346TI TSC2102i touchscreen controller / analog-digital converter / Audio
2347CODEC, connected through MicroWire and I@math{^2}S busses
2348@item
2349GPIO-connected matrix keypad
2350@item
2351Secure Digital card connected to OMAP MMC/SD host
2352@item
2353Three on-chip UARTs
2354@end itemize
2355
9ee6e8bb
PB
2356The Luminary Micro Stellaris LM3S811EVB emulation includes the following
2357devices:
2358
2359@itemize @minus
2360@item
2361Cortex-M3 CPU core.
2362@item
236364k Flash and 8k SRAM.
2364@item
2365Timers, UARTs, ADC and I@math{^2}C interface.
2366@item
2367OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
2368@end itemize
2369
2370The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
2371devices:
2372
2373@itemize @minus
2374@item
2375Cortex-M3 CPU core.
2376@item
2377256k Flash and 64k SRAM.
2378@item
2379Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
2380@item
2381OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
2382@end itemize
2383
3f9f3aa1
FB
2384A Linux 2.6 test image is available on the QEMU web site. More
2385information is available in the QEMU mailing-list archive.
9d0a8e6f 2386
24d4de45
TS
2387@node ColdFire System emulator
2388@section ColdFire System emulator
209a4e69
PB
2389
2390Use the executable @file{qemu-system-m68k} to simulate a ColdFire machine.
2391The emulator is able to boot a uClinux kernel.
707e011b
PB
2392
2393The M5208EVB emulation includes the following devices:
2394
2395@itemize @minus
5fafdf24 2396@item
707e011b
PB
2397MCF5208 ColdFire V2 Microprocessor (ISA A+ with EMAC).
2398@item
2399Three Two on-chip UARTs.
2400@item
2401Fast Ethernet Controller (FEC)
2402@end itemize
2403
2404The AN5206 emulation includes the following devices:
209a4e69
PB
2405
2406@itemize @minus
5fafdf24 2407@item
209a4e69
PB
2408MCF5206 ColdFire V2 Microprocessor.
2409@item
2410Two on-chip UARTs.
2411@end itemize
2412
5fafdf24
TS
2413@node QEMU User space emulator
2414@chapter QEMU User space emulator
83195237
FB
2415
2416@menu
2417* Supported Operating Systems ::
2418* Linux User space emulator::
2419* Mac OS X/Darwin User space emulator ::
2420@end menu
2421
2422@node Supported Operating Systems
2423@section Supported Operating Systems
2424
2425The following OS are supported in user space emulation:
2426
2427@itemize @minus
2428@item
4be456f1 2429Linux (referred as qemu-linux-user)
83195237 2430@item
4be456f1 2431Mac OS X/Darwin (referred as qemu-darwin-user)
83195237
FB
2432@end itemize
2433
2434@node Linux User space emulator
2435@section Linux User space emulator
386405f7 2436
debc7065
FB
2437@menu
2438* Quick Start::
2439* Wine launch::
2440* Command line options::
79737e4a 2441* Other binaries::
debc7065
FB
2442@end menu
2443
2444@node Quick Start
83195237 2445@subsection Quick Start
df0f11a0 2446
1f673135 2447In order to launch a Linux process, QEMU needs the process executable
5fafdf24 2448itself and all the target (x86) dynamic libraries used by it.
386405f7 2449
1f673135 2450@itemize
386405f7 2451
1f673135
FB
2452@item On x86, you can just try to launch any process by using the native
2453libraries:
386405f7 2454
5fafdf24 2455@example
1f673135
FB
2456qemu-i386 -L / /bin/ls
2457@end example
386405f7 2458
1f673135
FB
2459@code{-L /} tells that the x86 dynamic linker must be searched with a
2460@file{/} prefix.
386405f7 2461
dbcf5e82
TS
2462@item Since QEMU is also a linux process, you can launch qemu with
2463qemu (NOTE: you can only do that if you compiled QEMU from the sources):
386405f7 2464
5fafdf24 2465@example
1f673135
FB
2466qemu-i386 -L / qemu-i386 -L / /bin/ls
2467@end example
386405f7 2468
1f673135
FB
2469@item On non x86 CPUs, you need first to download at least an x86 glibc
2470(@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
2471@code{LD_LIBRARY_PATH} is not set:
df0f11a0 2472
1f673135 2473@example
5fafdf24 2474unset LD_LIBRARY_PATH
1f673135 2475@end example
1eb87257 2476
1f673135 2477Then you can launch the precompiled @file{ls} x86 executable:
1eb87257 2478
1f673135
FB
2479@example
2480qemu-i386 tests/i386/ls
2481@end example
2482You can look at @file{qemu-binfmt-conf.sh} so that
2483QEMU is automatically launched by the Linux kernel when you try to
2484launch x86 executables. It requires the @code{binfmt_misc} module in the
2485Linux kernel.
1eb87257 2486
1f673135
FB
2487@item The x86 version of QEMU is also included. You can try weird things such as:
2488@example
debc7065
FB
2489qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
2490 /usr/local/qemu-i386/bin/ls-i386
1f673135 2491@end example
1eb20527 2492
1f673135 2493@end itemize
1eb20527 2494
debc7065 2495@node Wine launch
83195237 2496@subsection Wine launch
1eb20527 2497
1f673135 2498@itemize
386405f7 2499
1f673135
FB
2500@item Ensure that you have a working QEMU with the x86 glibc
2501distribution (see previous section). In order to verify it, you must be
2502able to do:
386405f7 2503
1f673135
FB
2504@example
2505qemu-i386 /usr/local/qemu-i386/bin/ls-i386
2506@end example
386405f7 2507
1f673135 2508@item Download the binary x86 Wine install
5fafdf24 2509(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
386405f7 2510
1f673135 2511@item Configure Wine on your account. Look at the provided script
debc7065 2512@file{/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous
1f673135 2513@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
386405f7 2514
1f673135 2515@item Then you can try the example @file{putty.exe}:
386405f7 2516
1f673135 2517@example
debc7065
FB
2518qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
2519 /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1f673135 2520@end example
386405f7 2521
1f673135 2522@end itemize
fd429f2f 2523
debc7065 2524@node Command line options
83195237 2525@subsection Command line options
1eb20527 2526
1f673135
FB
2527@example
2528usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
2529@end example
1eb20527 2530
1f673135
FB
2531@table @option
2532@item -h
2533Print the help
3b46e624 2534@item -L path
1f673135
FB
2535Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
2536@item -s size
2537Set the x86 stack size in bytes (default=524288)
386405f7
FB
2538@end table
2539
1f673135 2540Debug options:
386405f7 2541
1f673135
FB
2542@table @option
2543@item -d
2544Activate log (logfile=/tmp/qemu.log)
2545@item -p pagesize
2546Act as if the host page size was 'pagesize' bytes
2547@end table
386405f7 2548
b01bcae6
AZ
2549Environment variables:
2550
2551@table @env
2552@item QEMU_STRACE
2553Print system calls and arguments similar to the 'strace' program
2554(NOTE: the actual 'strace' program will not work because the user
2555space emulator hasn't implemented ptrace). At the moment this is
2556incomplete. All system calls that don't have a specific argument
2557format are printed with information for six arguments. Many
2558flag-style arguments don't have decoders and will show up as numbers.
5cfdf930 2559@end table
b01bcae6 2560
79737e4a 2561@node Other binaries
83195237 2562@subsection Other binaries
79737e4a
PB
2563
2564@command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF
2565binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
2566configurations), and arm-uclinux bFLT format binaries.
2567
e6e5906b
PB
2568@command{qemu-m68k} is capable of running semihosted binaries using the BDM
2569(m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
2570coldfire uClinux bFLT format binaries.
2571
79737e4a
PB
2572The binary format is detected automatically.
2573
a785e42e
BS
2574@command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries
2575(Sparc64 CPU, 32 bit ABI).
2576
2577@command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
2578SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
2579
83195237
FB
2580@node Mac OS X/Darwin User space emulator
2581@section Mac OS X/Darwin User space emulator
2582
2583@menu
2584* Mac OS X/Darwin Status::
2585* Mac OS X/Darwin Quick Start::
2586* Mac OS X/Darwin Command line options::
2587@end menu
2588
2589@node Mac OS X/Darwin Status
2590@subsection Mac OS X/Darwin Status
2591
2592@itemize @minus
2593@item
2594target x86 on x86: Most apps (Cocoa and Carbon too) works. [1]
2595@item
2596target PowerPC on x86: Not working as the ppc commpage can't be mapped (yet!)
2597@item
dbcf5e82 2598target PowerPC on PowerPC: Most apps (Cocoa and Carbon too) works. [1]
83195237
FB
2599@item
2600target x86 on PowerPC: most utilities work. Cocoa and Carbon apps are not yet supported.
2601@end itemize
2602
2603[1] If you're host commpage can be executed by qemu.
2604
2605@node Mac OS X/Darwin Quick Start
2606@subsection Quick Start
2607
2608In order to launch a Mac OS X/Darwin process, QEMU needs the process executable
2609itself and all the target dynamic libraries used by it. If you don't have the FAT
2610libraries (you're running Mac OS X/ppc) you'll need to obtain it from a Mac OS X
2611CD or compile them by hand.
2612
2613@itemize
2614
2615@item On x86, you can just try to launch any process by using the native
2616libraries:
2617
5fafdf24 2618@example
dbcf5e82 2619qemu-i386 /bin/ls
83195237
FB
2620@end example
2621
2622or to run the ppc version of the executable:
2623
5fafdf24 2624@example
dbcf5e82 2625qemu-ppc /bin/ls
83195237
FB
2626@end example
2627
2628@item On ppc, you'll have to tell qemu where your x86 libraries (and dynamic linker)
2629are installed:
2630
5fafdf24 2631@example
dbcf5e82 2632qemu-i386 -L /opt/x86_root/ /bin/ls
83195237
FB
2633@end example
2634
2635@code{-L /opt/x86_root/} tells that the dynamic linker (dyld) path is in
2636@file{/opt/x86_root/usr/bin/dyld}.
2637
2638@end itemize
2639
2640@node Mac OS X/Darwin Command line options
2641@subsection Command line options
2642
2643@example
dbcf5e82 2644usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
83195237
FB
2645@end example
2646
2647@table @option
2648@item -h
2649Print the help
3b46e624 2650@item -L path
83195237
FB
2651Set the library root path (default=/)
2652@item -s size
2653Set the stack size in bytes (default=524288)
2654@end table
2655
2656Debug options:
2657
2658@table @option
2659@item -d
2660Activate log (logfile=/tmp/qemu.log)
2661@item -p pagesize
2662Act as if the host page size was 'pagesize' bytes
2663@end table
2664
15a34c63
FB
2665@node compilation
2666@chapter Compilation from the sources
2667
debc7065
FB
2668@menu
2669* Linux/Unix::
2670* Windows::
2671* Cross compilation for Windows with Linux::
2672* Mac OS X::
2673@end menu
2674
2675@node Linux/Unix
7c3fc84d
FB
2676@section Linux/Unix
2677
2678@subsection Compilation
2679
2680First you must decompress the sources:
2681@example
2682cd /tmp
2683tar zxvf qemu-x.y.z.tar.gz
2684cd qemu-x.y.z
2685@end example
2686
2687Then you configure QEMU and build it (usually no options are needed):
2688@example
2689./configure
2690make
2691@end example
2692
2693Then type as root user:
2694@example
2695make install
2696@end example
2697to install QEMU in @file{/usr/local}.
2698
4fe8b87a 2699@subsection GCC version
7c3fc84d 2700
366dfc52 2701In order to compile QEMU successfully, it is very important that you
4fe8b87a
FB
2702have the right tools. The most important one is gcc. On most hosts and
2703in particular on x86 ones, @emph{gcc 4.x is not supported}. If your
2704Linux distribution includes a gcc 4.x compiler, you can usually
2705install an older version (it is invoked by @code{gcc32} or
2706@code{gcc34}). The QEMU configure script automatically probes for
4be456f1 2707these older versions so that usually you don't have to do anything.
15a34c63 2708
debc7065 2709@node Windows
15a34c63
FB
2710@section Windows
2711
2712@itemize
2713@item Install the current versions of MSYS and MinGW from
2714@url{http://www.mingw.org/}. You can find detailed installation
2715instructions in the download section and the FAQ.
2716
5fafdf24 2717@item Download
15a34c63 2718the MinGW development library of SDL 1.2.x
debc7065 2719(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
15a34c63
FB
2720@url{http://www.libsdl.org}. Unpack it in a temporary place, and
2721unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
2722directory. Edit the @file{sdl-config} script so that it gives the
2723correct SDL directory when invoked.
2724
2725@item Extract the current version of QEMU.
5fafdf24 2726
15a34c63
FB
2727@item Start the MSYS shell (file @file{msys.bat}).
2728
5fafdf24 2729@item Change to the QEMU directory. Launch @file{./configure} and
15a34c63
FB
2730@file{make}. If you have problems using SDL, verify that
2731@file{sdl-config} can be launched from the MSYS command line.
2732
5fafdf24 2733@item You can install QEMU in @file{Program Files/Qemu} by typing
15a34c63
FB
2734@file{make install}. Don't forget to copy @file{SDL.dll} in
2735@file{Program Files/Qemu}.
2736
2737@end itemize
2738
debc7065 2739@node Cross compilation for Windows with Linux
15a34c63
FB
2740@section Cross compilation for Windows with Linux
2741
2742@itemize
2743@item
2744Install the MinGW cross compilation tools available at
2745@url{http://www.mingw.org/}.
2746
5fafdf24 2747@item
15a34c63
FB
2748Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
2749unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
2750variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
2751the QEMU configuration script.
2752
5fafdf24 2753@item
15a34c63
FB
2754Configure QEMU for Windows cross compilation:
2755@example
2756./configure --enable-mingw32
2757@end example
2758If necessary, you can change the cross-prefix according to the prefix
4be456f1 2759chosen for the MinGW tools with --cross-prefix. You can also use
15a34c63
FB
2760--prefix to set the Win32 install path.
2761
5fafdf24 2762@item You can install QEMU in the installation directory by typing
15a34c63 2763@file{make install}. Don't forget to copy @file{SDL.dll} in the
5fafdf24 2764installation directory.
15a34c63
FB
2765
2766@end itemize
2767
2768Note: Currently, Wine does not seem able to launch
2769QEMU for Win32.
2770
debc7065 2771@node Mac OS X
15a34c63
FB
2772@section Mac OS X
2773
2774The Mac OS X patches are not fully merged in QEMU, so you should look
2775at the QEMU mailing list archive to have all the necessary
2776information.
2777
debc7065
FB
2778@node Index
2779@chapter Index
2780@printindex cp
2781
2782@bye