Statistics
| Branch: | Revision:

root / qemu-doc.texi @ c30bb264

History | View | Annotate | Download (88.2 kB)

1
\input texinfo @c -*- texinfo -*-
2
@c %**start of header
3
@setfilename qemu-doc.info
4
@settitle QEMU Emulator User Documentation
5
@exampleindent 0
6
@paragraphindent 0
7
@c %**end of header
8

    
9
@iftex
10
@titlepage
11
@sp 7
12
@center @titlefont{QEMU Emulator}
13
@sp 1
14
@center @titlefont{User Documentation}
15
@sp 3
16
@end titlepage
17
@end iftex
18

    
19
@ifnottex
20
@node Top
21
@top
22

    
23
@menu
24
* Introduction::
25
* Installation::
26
* QEMU PC System emulator::
27
* QEMU System emulator for non PC targets::
28
* QEMU User space emulator::
29
* compilation:: Compilation from the sources
30
* Index::
31
@end menu
32
@end ifnottex
33

    
34
@contents
35

    
36
@node Introduction
37
@chapter Introduction
38

    
39
@menu
40
* intro_features:: Features
41
@end menu
42

    
43
@node intro_features
44
@section Features
45

    
46
QEMU is a FAST! processor emulator using dynamic translation to
47
achieve good emulation speed.
48

    
49
QEMU has two operating modes:
50

    
51
@itemize @minus
52

    
53
@item
54
Full system emulation. In this mode, QEMU emulates a full system (for
55
example a PC), including one or several processors and various
56
peripherals. It can be used to launch different Operating Systems
57
without rebooting the PC or to debug system code.
58

    
59
@item
60
User mode emulation. In this mode, QEMU can launch
61
processes compiled for one CPU on another CPU. It can be used to
62
launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
63
to ease cross-compilation and cross-debugging.
64

    
65
@end itemize
66

    
67
QEMU can run without an host kernel driver and yet gives acceptable
68
performance.
69

    
70
For system emulation, the following hardware targets are supported:
71
@itemize
72
@item PC (x86 or x86_64 processor)
73
@item ISA PC (old style PC without PCI bus)
74
@item PREP (PowerPC processor)
75
@item G3 BW PowerMac (PowerPC processor)
76
@item Mac99 PowerMac (PowerPC processor, in progress)
77
@item Sun4m/Sun4c/Sun4d (32-bit Sparc processor)
78
@item Sun4u (64-bit Sparc processor, in progress)
79
@item Malta board (32-bit and 64-bit MIPS processors)
80
@item MIPS Magnum (64-bit MIPS processor)
81
@item ARM Integrator/CP (ARM)
82
@item ARM Versatile baseboard (ARM)
83
@item ARM RealView Emulation baseboard (ARM)
84
@item Spitz, Akita, Borzoi and Terrier PDAs (PXA270 processor)
85
@item Luminary Micro LM3S811EVB (ARM Cortex-M3)
86
@item Luminary Micro LM3S6965EVB (ARM Cortex-M3)
87
@item Freescale MCF5208EVB (ColdFire V2).
88
@item Arnewsh MCF5206 evaluation board (ColdFire V2).
89
@item Palm Tungsten|E PDA (OMAP310 processor)
90
@item N800 and N810 tablets (OMAP2420 processor)
91
@item MusicPal (MV88W8618 ARM processor)
92
@end itemize
93

    
94
For user emulation, x86, PowerPC, ARM, 32-bit MIPS, Sparc32/64 and ColdFire(m68k) CPUs are supported.
95

    
96
@node Installation
97
@chapter Installation
98

    
99
If you want to compile QEMU yourself, see @ref{compilation}.
100

    
101
@menu
102
* install_linux::   Linux
103
* install_windows:: Windows
104
* install_mac::     Macintosh
105
@end menu
106

    
107
@node install_linux
108
@section Linux
109

    
110
If a precompiled package is available for your distribution - you just
111
have to install it. Otherwise, see @ref{compilation}.
112

    
113
@node install_windows
114
@section Windows
115

    
116
Download the experimental binary installer at
117
@url{http://www.free.oszoo.org/@/download.html}.
118

    
119
@node install_mac
120
@section Mac OS X
121

    
122
Download the experimental binary installer at
123
@url{http://www.free.oszoo.org/@/download.html}.
124

    
125
@node QEMU PC System emulator
126
@chapter QEMU PC System emulator
127

    
128
@menu
129
* pcsys_introduction:: Introduction
130
* pcsys_quickstart::   Quick Start
131
* sec_invocation::     Invocation
132
* pcsys_keys::         Keys
133
* pcsys_monitor::      QEMU Monitor
134
* disk_images::        Disk Images
135
* pcsys_network::      Network emulation
136
* direct_linux_boot::  Direct Linux Boot
137
* pcsys_usb::          USB emulation
138
* vnc_security::       VNC security
139
* gdb_usage::          GDB usage
140
* pcsys_os_specific::  Target OS specific information
141
@end menu
142

    
143
@node pcsys_introduction
144
@section Introduction
145

    
146
@c man begin DESCRIPTION
147

    
148
The QEMU PC System emulator simulates the
149
following peripherals:
150

    
151
@itemize @minus
152
@item
153
i440FX host PCI bridge and PIIX3 PCI to ISA bridge
154
@item
155
Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
156
extensions (hardware level, including all non standard modes).
157
@item
158
PS/2 mouse and keyboard
159
@item
160
2 PCI IDE interfaces with hard disk and CD-ROM support
161
@item
162
Floppy disk
163
@item
164
PCI/ISA PCI network adapters
165
@item
166
Serial ports
167
@item
168
Creative SoundBlaster 16 sound card
169
@item
170
ENSONIQ AudioPCI ES1370 sound card
171
@item
172
Intel 82801AA AC97 Audio compatible sound card
173
@item
174
Adlib(OPL2) - Yamaha YM3812 compatible chip
175
@item
176
Gravis Ultrasound GF1 sound card
177
@item
178
PCI UHCI USB controller and a virtual USB hub.
179
@end itemize
180

    
181
SMP is supported with up to 255 CPUs.
182

    
183
Note that adlib, ac97 and gus are only available when QEMU was configured
184
with --enable-adlib, --enable-ac97 or --enable-gus respectively.
185

    
186
QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
187
VGA BIOS.
188

    
189
QEMU uses YM3812 emulation by Tatsuyuki Satoh.
190

    
191
QEMU uses GUS emulation(GUSEMU32 @url{http://www.deinmeister.de/gusemu/})
192
by Tibor "TS" Sch?tz.
193

    
194
@c man end
195

    
196
@node pcsys_quickstart
197
@section Quick Start
198

    
199
Download and uncompress the linux image (@file{linux.img}) and type:
200

    
201
@example
202
qemu linux.img
203
@end example
204

    
205
Linux should boot and give you a prompt.
206

    
207
@node sec_invocation
208
@section Invocation
209

    
210
@example
211
@c man begin SYNOPSIS
212
usage: qemu [options] [@var{disk_image}]
213
@c man end
214
@end example
215

    
216
@c man begin OPTIONS
217
@var{disk_image} is a raw hard disk image for IDE hard disk 0.
218

    
219
General options:
220
@table @option
221
@item -M @var{machine}
222
Select the emulated @var{machine} (@code{-M ?} for list)
223

    
224
@item -fda @var{file}
225
@item -fdb @var{file}
226
Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can
227
use the host floppy by using @file{/dev/fd0} as filename (@pxref{host_drives}).
228

    
229
@item -hda @var{file}
230
@item -hdb @var{file}
231
@item -hdc @var{file}
232
@item -hdd @var{file}
233
Use @var{file} as hard disk 0, 1, 2 or 3 image (@pxref{disk_images}).
234

    
235
@item -cdrom @var{file}
236
Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and
237
@option{-cdrom} at the same time). You can use the host CD-ROM by
238
using @file{/dev/cdrom} as filename (@pxref{host_drives}).
239

    
240
@item -drive @var{option}[,@var{option}[,@var{option}[,...]]]
241

    
242
Define a new drive. Valid options are:
243

    
244
@table @code
245
@item file=@var{file}
246
This option defines which disk image (@pxref{disk_images}) to use with
247
this drive. If the filename contains comma, you must double it
248
(for instance, "file=my,,file" to use file "my,file").
249
@item if=@var{interface}
250
This option defines on which type on interface the drive is connected.
251
Available types are: ide, scsi, sd, mtd, floppy, pflash.
252
@item bus=@var{bus},unit=@var{unit}
253
These options define where is connected the drive by defining the bus number and
254
the unit id.
255
@item index=@var{index}
256
This option defines where is connected the drive by using an index in the list
257
of available connectors of a given interface type.
258
@item media=@var{media}
259
This option defines the type of the media: disk or cdrom.
260
@item cyls=@var{c},heads=@var{h},secs=@var{s}[,trans=@var{t}]
261
These options have the same definition as they have in @option{-hdachs}.
262
@item snapshot=@var{snapshot}
263
@var{snapshot} is "on" or "off" and allows to enable snapshot for given drive (see @option{-snapshot}).
264
@item cache=@var{cache}
265
@var{cache} is "on" or "off" and allows to disable host cache to access data.
266
@item format=@var{format}
267
Specify which disk @var{format} will be used rather than detecting
268
the format.  Can be used to specifiy format=raw to avoid interpreting
269
an untrusted format header.
270
@end table
271

    
272
Instead of @option{-cdrom} you can use:
273
@example
274
qemu -drive file=file,index=2,media=cdrom
275
@end example
276

    
277
Instead of @option{-hda}, @option{-hdb}, @option{-hdc}, @option{-hdd}, you can
278
use:
279
@example
280
qemu -drive file=file,index=0,media=disk
281
qemu -drive file=file,index=1,media=disk
282
qemu -drive file=file,index=2,media=disk
283
qemu -drive file=file,index=3,media=disk
284
@end example
285

    
286
You can connect a CDROM to the slave of ide0:
287
@example
288
qemu -drive file=file,if=ide,index=1,media=cdrom
289
@end example
290

    
291
If you don't specify the "file=" argument, you define an empty drive:
292
@example
293
qemu -drive if=ide,index=1,media=cdrom
294
@end example
295

    
296
You can connect a SCSI disk with unit ID 6 on the bus #0:
297
@example
298
qemu -drive file=file,if=scsi,bus=0,unit=6
299
@end example
300

    
301
Instead of @option{-fda}, @option{-fdb}, you can use:
302
@example
303
qemu -drive file=file,index=0,if=floppy
304
qemu -drive file=file,index=1,if=floppy
305
@end example
306

    
307
By default, @var{interface} is "ide" and @var{index} is automatically
308
incremented:
309
@example
310
qemu -drive file=a -drive file=b"
311
@end example
312
is interpreted like:
313
@example
314
qemu -hda a -hdb b
315
@end example
316

    
317
@item -boot [a|c|d|n]
318
Boot on floppy (a), hard disk (c), CD-ROM (d), or Etherboot (n). Hard disk boot
319
is the default.
320

    
321
@item -snapshot
322
Write to temporary files instead of disk image files. In this case,
323
the raw disk image you use is not written back. You can however force
324
the write back by pressing @key{C-a s} (@pxref{disk_images}).
325

    
326
@item -no-fd-bootchk
327
Disable boot signature checking for floppy disks in Bochs BIOS. It may
328
be needed to boot from old floppy disks.
329

    
330
@item -m @var{megs}
331
Set virtual RAM size to @var{megs} megabytes. Default is 128 MiB.  Optionally,
332
a suffix of ``M'' or ``G'' can be used to signify a value in megabytes or
333
gigabytes respectively.
334

    
335
@item -smp @var{n}
336
Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
337
CPUs are supported. On Sparc32 target, Linux limits the number of usable CPUs
338
to 4.
339

    
340
@item -audio-help
341

    
342
Will show the audio subsystem help: list of drivers, tunable
343
parameters.
344

    
345
@item -soundhw @var{card1}[,@var{card2},...] or -soundhw all
346

    
347
Enable audio and selected sound hardware. Use ? to print all
348
available sound hardware.
349

    
350
@example
351
qemu -soundhw sb16,adlib hda
352
qemu -soundhw es1370 hda
353
qemu -soundhw ac97 hda
354
qemu -soundhw all hda
355
qemu -soundhw ?
356
@end example
357

    
358
Note that Linux's i810_audio OSS kernel (for AC97) module might
359
require manually specifying clocking.
360

    
361
@example
362
modprobe i810_audio clocking=48000
363
@end example
364

    
365
@item -localtime
366
Set the real time clock to local time (the default is to UTC
367
time). This option is needed to have correct date in MS-DOS or
368
Windows.
369

    
370
@item -startdate @var{date}
371
Set the initial date of the real time clock. Valid format for
372
@var{date} are: @code{now} or @code{2006-06-17T16:01:21} or
373
@code{2006-06-17}. The default value is @code{now}.
374

    
375
@item -pidfile @var{file}
376
Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
377
from a script.
378

    
379
@item -daemonize
380
Daemonize the QEMU process after initialization.  QEMU will not detach from
381
standard IO until it is ready to receive connections on any of its devices.
382
This option is a useful way for external programs to launch QEMU without having
383
to cope with initialization race conditions.
384

    
385
@item -win2k-hack
386
Use it when installing Windows 2000 to avoid a disk full bug. After
387
Windows 2000 is installed, you no longer need this option (this option
388
slows down the IDE transfers).
389

    
390
@item -option-rom @var{file}
391
Load the contents of @var{file} as an option ROM.
392
This option is useful to load things like EtherBoot.
393

    
394
@item -name @var{name}
395
Sets the @var{name} of the guest.
396
This name will be display in the SDL window caption.
397
The @var{name} will also be used for the VNC server.
398

    
399
@end table
400

    
401
Display options:
402
@table @option
403

    
404
@item -nographic
405

    
406
Normally, QEMU uses SDL to display the VGA output. With this option,
407
you can totally disable graphical output so that QEMU is a simple
408
command line application. The emulated serial port is redirected on
409
the console. Therefore, you can still use QEMU to debug a Linux kernel
410
with a serial console.
411

    
412
@item -curses
413

    
414
Normally, QEMU uses SDL to display the VGA output.  With this option,
415
QEMU can display the VGA output when in text mode using a 
416
curses/ncurses interface.  Nothing is displayed in graphical mode.
417

    
418
@item -no-frame
419

    
420
Do not use decorations for SDL windows and start them using the whole
421
available screen space. This makes the using QEMU in a dedicated desktop
422
workspace more convenient.
423

    
424
@item -no-quit
425

    
426
Disable SDL window close capability.
427

    
428
@item -full-screen
429
Start in full screen.
430

    
431
@item -vnc @var{display}[,@var{option}[,@var{option}[,...]]]
432

    
433
Normally, QEMU uses SDL to display the VGA output.  With this option,
434
you can have QEMU listen on VNC display @var{display} and redirect the VGA
435
display over the VNC session.  It is very useful to enable the usb
436
tablet device when using this option (option @option{-usbdevice
437
tablet}). When using the VNC display, you must use the @option{-k}
438
parameter to set the keyboard layout if you are not using en-us. Valid
439
syntax for the @var{display} is
440

    
441
@table @code
442

    
443
@item @var{host}:@var{d}
444

    
445
TCP connections will only be allowed from @var{host} on display @var{d}.
446
By convention the TCP port is 5900+@var{d}. Optionally, @var{host} can
447
be omitted in which case the server will accept connections from any host.
448

    
449
@item @code{unix}:@var{path}
450

    
451
Connections will be allowed over UNIX domain sockets where @var{path} is the
452
location of a unix socket to listen for connections on.
453

    
454
@item none
455

    
456
VNC is initialized but not started. The monitor @code{change} command
457
can be used to later start the VNC server.
458

    
459
@end table
460

    
461
Following the @var{display} value there may be one or more @var{option} flags
462
separated by commas. Valid options are
463

    
464
@table @code
465

    
466
@item reverse
467

    
468
Connect to a listening VNC client via a ``reverse'' connection. The
469
client is specified by the @var{display}. For reverse network
470
connections (@var{host}:@var{d},@code{reverse}), the @var{d} argument
471
is a TCP port number, not a display number.
472

    
473
@item password
474

    
475
Require that password based authentication is used for client connections.
476
The password must be set separately using the @code{change} command in the
477
@ref{pcsys_monitor}
478

    
479
@item tls
480

    
481
Require that client use TLS when communicating with the VNC server. This
482
uses anonymous TLS credentials so is susceptible to a man-in-the-middle
483
attack. It is recommended that this option be combined with either the
484
@var{x509} or @var{x509verify} options.
485

    
486
@item x509=@var{/path/to/certificate/dir}
487

    
488
Valid if @option{tls} is specified. Require that x509 credentials are used
489
for negotiating the TLS session. The server will send its x509 certificate
490
to the client. It is recommended that a password be set on the VNC server
491
to provide authentication of the client when this is used. The path following
492
this option specifies where the x509 certificates are to be loaded from.
493
See the @ref{vnc_security} section for details on generating certificates.
494

    
495
@item x509verify=@var{/path/to/certificate/dir}
496

    
497
Valid if @option{tls} is specified. Require that x509 credentials are used
498
for negotiating the TLS session. The server will send its x509 certificate
499
to the client, and request that the client send its own x509 certificate.
500
The server will validate the client's certificate against the CA certificate,
501
and reject clients when validation fails. If the certificate authority is
502
trusted, this is a sufficient authentication mechanism. You may still wish
503
to set a password on the VNC server as a second authentication layer. The
504
path following this option specifies where the x509 certificates are to
505
be loaded from. See the @ref{vnc_security} section for details on generating
506
certificates.
507

    
508
@end table
509

    
510
@item -k @var{language}
511

    
512
Use keyboard layout @var{language} (for example @code{fr} for
513
French). This option is only needed where it is not easy to get raw PC
514
keycodes (e.g. on Macs, with some X11 servers or with a VNC
515
display). You don't normally need to use it on PC/Linux or PC/Windows
516
hosts.
517

    
518
The available layouts are:
519
@example
520
ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
521
da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
522
de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
523
@end example
524

    
525
The default is @code{en-us}.
526

    
527
@end table
528

    
529
USB options:
530
@table @option
531

    
532
@item -usb
533
Enable the USB driver (will be the default soon)
534

    
535
@item -usbdevice @var{devname}
536
Add the USB device @var{devname}. @xref{usb_devices}.
537

    
538
@table @code
539

    
540
@item mouse
541
Virtual Mouse. This will override the PS/2 mouse emulation when activated.
542

    
543
@item tablet
544
Pointer device that uses absolute coordinates (like a touchscreen). This
545
means qemu is able to report the mouse position without having to grab the
546
mouse. Also overrides the PS/2 mouse emulation when activated.
547

    
548
@item disk:file
549
Mass storage device based on file
550

    
551
@item host:bus.addr
552
Pass through the host device identified by bus.addr (Linux only).
553

    
554
@item host:vendor_id:product_id
555
Pass through the host device identified by vendor_id:product_id (Linux only).
556

    
557
@item serial:[vendorid=@var{vendor_id}][,productid=@var{product_id}]:@var{dev}
558
Serial converter to host character device @var{dev}, see @code{-serial} for the
559
available devices.
560

    
561
@item braille
562
Braille device.  This will use BrlAPI to display the braille output on a real
563
or fake device.
564

    
565
@end table
566

    
567
@end table
568

    
569
Network options:
570

    
571
@table @option
572

    
573
@item -net nic[,vlan=@var{n}][,macaddr=@var{addr}][,model=@var{type}]
574
Create a new Network Interface Card and connect it to VLAN @var{n} (@var{n}
575
= 0 is the default). The NIC is an ne2k_pci by default on the PC
576
target. Optionally, the MAC address can be changed. If no
577
@option{-net} option is specified, a single NIC is created.
578
Qemu can emulate several different models of network card.
579
Valid values for @var{type} are
580
@code{i82551}, @code{i82557b}, @code{i82559er},
581
@code{ne2k_pci}, @code{ne2k_isa}, @code{pcnet}, @code{rtl8139},
582
@code{e1000}, @code{smc91c111}, @code{lance} and @code{mcf_fec}.
583
Not all devices are supported on all targets.  Use -net nic,model=?
584
for a list of available devices for your target.
585

    
586
@item -net user[,vlan=@var{n}][,hostname=@var{name}]
587
Use the user mode network stack which requires no administrator
588
privilege to run.  @option{hostname=name} can be used to specify the client
589
hostname reported by the builtin DHCP server.
590

    
591
@item -net tap[,vlan=@var{n}][,fd=@var{h}][,ifname=@var{name}][,script=@var{file}]
592
Connect the host TAP network interface @var{name} to VLAN @var{n} and
593
use the network script @var{file} to configure it. The default
594
network script is @file{/etc/qemu-ifup}. Use @option{script=no} to
595
disable script execution. If @var{name} is not
596
provided, the OS automatically provides one. @option{fd}=@var{h} can be
597
used to specify the handle of an already opened host TAP interface. Example:
598

    
599
@example
600
qemu linux.img -net nic -net tap
601
@end example
602

    
603
More complicated example (two NICs, each one connected to a TAP device)
604
@example
605
qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
606
               -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
607
@end example
608

    
609

    
610
@item -net socket[,vlan=@var{n}][,fd=@var{h}][,listen=[@var{host}]:@var{port}][,connect=@var{host}:@var{port}]
611

    
612
Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual
613
machine using a TCP socket connection. If @option{listen} is
614
specified, QEMU waits for incoming connections on @var{port}
615
(@var{host} is optional). @option{connect} is used to connect to
616
another QEMU instance using the @option{listen} option. @option{fd}=@var{h}
617
specifies an already opened TCP socket.
618

    
619
Example:
620
@example
621
# launch a first QEMU instance
622
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
623
               -net socket,listen=:1234
624
# connect the VLAN 0 of this instance to the VLAN 0
625
# of the first instance
626
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
627
               -net socket,connect=127.0.0.1:1234
628
@end example
629

    
630
@item -net socket[,vlan=@var{n}][,fd=@var{h}][,mcast=@var{maddr}:@var{port}]
631

    
632
Create a VLAN @var{n} shared with another QEMU virtual
633
machines using a UDP multicast socket, effectively making a bus for
634
every QEMU with same multicast address @var{maddr} and @var{port}.
635
NOTES:
636
@enumerate
637
@item
638
Several QEMU can be running on different hosts and share same bus (assuming
639
correct multicast setup for these hosts).
640
@item
641
mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see
642
@url{http://user-mode-linux.sf.net}.
643
@item
644
Use @option{fd=h} to specify an already opened UDP multicast socket.
645
@end enumerate
646

    
647
Example:
648
@example
649
# launch one QEMU instance
650
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
651
               -net socket,mcast=230.0.0.1:1234
652
# launch another QEMU instance on same "bus"
653
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
654
               -net socket,mcast=230.0.0.1:1234
655
# launch yet another QEMU instance on same "bus"
656
qemu linux.img -net nic,macaddr=52:54:00:12:34:58 \
657
               -net socket,mcast=230.0.0.1:1234
658
@end example
659

    
660
Example (User Mode Linux compat.):
661
@example
662
# launch QEMU instance (note mcast address selected
663
# is UML's default)
664
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
665
               -net socket,mcast=239.192.168.1:1102
666
# launch UML
667
/path/to/linux ubd0=/path/to/root_fs eth0=mcast
668
@end example
669

    
670
@item -net none
671
Indicate that no network devices should be configured. It is used to
672
override the default configuration (@option{-net nic -net user}) which
673
is activated if no @option{-net} options are provided.
674

    
675
@item -tftp @var{dir}
676
When using the user mode network stack, activate a built-in TFTP
677
server. The files in @var{dir} will be exposed as the root of a TFTP server.
678
The TFTP client on the guest must be configured in binary mode (use the command
679
@code{bin} of the Unix TFTP client). The host IP address on the guest is as
680
usual 10.0.2.2.
681

    
682
@item -bootp @var{file}
683
When using the user mode network stack, broadcast @var{file} as the BOOTP
684
filename.  In conjunction with @option{-tftp}, this can be used to network boot
685
a guest from a local directory.
686

    
687
Example (using pxelinux):
688
@example
689
qemu -hda linux.img -boot n -tftp /path/to/tftp/files -bootp /pxelinux.0
690
@end example
691

    
692
@item -smb @var{dir}
693
When using the user mode network stack, activate a built-in SMB
694
server so that Windows OSes can access to the host files in @file{@var{dir}}
695
transparently.
696

    
697
In the guest Windows OS, the line:
698
@example
699
10.0.2.4 smbserver
700
@end example
701
must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
702
or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
703

    
704
Then @file{@var{dir}} can be accessed in @file{\\smbserver\qemu}.
705

    
706
Note that a SAMBA server must be installed on the host OS in
707
@file{/usr/sbin/smbd}. QEMU was tested successfully with smbd version
708
2.2.7a from the Red Hat 9 and version 3.0.10-1.fc3 from Fedora Core 3.
709

    
710
@item -redir [tcp|udp]:@var{host-port}:[@var{guest-host}]:@var{guest-port}
711

    
712
When using the user mode network stack, redirect incoming TCP or UDP
713
connections to the host port @var{host-port} to the guest
714
@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
715
is not specified, its value is 10.0.2.15 (default address given by the
716
built-in DHCP server).
717

    
718
For example, to redirect host X11 connection from screen 1 to guest
719
screen 0, use the following:
720

    
721
@example
722
# on the host
723
qemu -redir tcp:6001::6000 [...]
724
# this host xterm should open in the guest X11 server
725
xterm -display :1
726
@end example
727

    
728
To redirect telnet connections from host port 5555 to telnet port on
729
the guest, use the following:
730

    
731
@example
732
# on the host
733
qemu -redir tcp:5555::23 [...]
734
telnet localhost 5555
735
@end example
736

    
737
Then when you use on the host @code{telnet localhost 5555}, you
738
connect to the guest telnet server.
739

    
740
@end table
741

    
742
Linux boot specific: When using these options, you can use a given
743
Linux kernel without installing it in the disk image. It can be useful
744
for easier testing of various kernels.
745

    
746
@table @option
747

    
748
@item -kernel @var{bzImage}
749
Use @var{bzImage} as kernel image.
750

    
751
@item -append @var{cmdline}
752
Use @var{cmdline} as kernel command line
753

    
754
@item -initrd @var{file}
755
Use @var{file} as initial ram disk.
756

    
757
@end table
758

    
759
Debug/Expert options:
760
@table @option
761

    
762
@item -serial @var{dev}
763
Redirect the virtual serial port to host character device
764
@var{dev}. The default device is @code{vc} in graphical mode and
765
@code{stdio} in non graphical mode.
766

    
767
This option can be used several times to simulate up to 4 serials
768
ports.
769

    
770
Use @code{-serial none} to disable all serial ports.
771

    
772
Available character devices are:
773
@table @code
774
@item vc[:WxH]
775
Virtual console. Optionally, a width and height can be given in pixel with
776
@example
777
vc:800x600
778
@end example
779
It is also possible to specify width or height in characters:
780
@example
781
vc:80Cx24C
782
@end example
783
@item pty
784
[Linux only] Pseudo TTY (a new PTY is automatically allocated)
785
@item none
786
No device is allocated.
787
@item null
788
void device
789
@item /dev/XXX
790
[Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
791
parameters are set according to the emulated ones.
792
@item /dev/parport@var{N}
793
[Linux only, parallel port only] Use host parallel port
794
@var{N}. Currently SPP and EPP parallel port features can be used.
795
@item file:@var{filename}
796
Write output to @var{filename}. No character can be read.
797
@item stdio
798
[Unix only] standard input/output
799
@item pipe:@var{filename}
800
name pipe @var{filename}
801
@item COM@var{n}
802
[Windows only] Use host serial port @var{n}
803
@item udp:[@var{remote_host}]:@var{remote_port}[@@[@var{src_ip}]:@var{src_port}]
804
This implements UDP Net Console.
805
When @var{remote_host} or @var{src_ip} are not specified
806
they default to @code{0.0.0.0}.
807
When not using a specified @var{src_port} a random port is automatically chosen.
808

    
809
If you just want a simple readonly console you can use @code{netcat} or
810
@code{nc}, by starting qemu with: @code{-serial udp::4555} and nc as:
811
@code{nc -u -l -p 4555}. Any time qemu writes something to that port it
812
will appear in the netconsole session.
813

    
814
If you plan to send characters back via netconsole or you want to stop
815
and start qemu a lot of times, you should have qemu use the same
816
source port each time by using something like @code{-serial
817
udp::4555@@:4556} to qemu. Another approach is to use a patched
818
version of netcat which can listen to a TCP port and send and receive
819
characters via udp.  If you have a patched version of netcat which
820
activates telnet remote echo and single char transfer, then you can
821
use the following options to step up a netcat redirector to allow
822
telnet on port 5555 to access the qemu port.
823
@table @code
824
@item Qemu Options:
825
-serial udp::4555@@:4556
826
@item netcat options:
827
-u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
828
@item telnet options:
829
localhost 5555
830
@end table
831

    
832

    
833
@item tcp:[@var{host}]:@var{port}[,@var{server}][,nowait][,nodelay]
834
The TCP Net Console has two modes of operation.  It can send the serial
835
I/O to a location or wait for a connection from a location.  By default
836
the TCP Net Console is sent to @var{host} at the @var{port}.  If you use
837
the @var{server} option QEMU will wait for a client socket application
838
to connect to the port before continuing, unless the @code{nowait}
839
option was specified.  The @code{nodelay} option disables the Nagle buffering
840
algorithm.  If @var{host} is omitted, 0.0.0.0 is assumed. Only
841
one TCP connection at a time is accepted. You can use @code{telnet} to
842
connect to the corresponding character device.
843
@table @code
844
@item Example to send tcp console to 192.168.0.2 port 4444
845
-serial tcp:192.168.0.2:4444
846
@item Example to listen and wait on port 4444 for connection
847
-serial tcp::4444,server
848
@item Example to not wait and listen on ip 192.168.0.100 port 4444
849
-serial tcp:192.168.0.100:4444,server,nowait
850
@end table
851

    
852
@item telnet:@var{host}:@var{port}[,server][,nowait][,nodelay]
853
The telnet protocol is used instead of raw tcp sockets.  The options
854
work the same as if you had specified @code{-serial tcp}.  The
855
difference is that the port acts like a telnet server or client using
856
telnet option negotiation.  This will also allow you to send the
857
MAGIC_SYSRQ sequence if you use a telnet that supports sending the break
858
sequence.  Typically in unix telnet you do it with Control-] and then
859
type "send break" followed by pressing the enter key.
860

    
861
@item unix:@var{path}[,server][,nowait]
862
A unix domain socket is used instead of a tcp socket.  The option works the
863
same as if you had specified @code{-serial tcp} except the unix domain socket
864
@var{path} is used for connections.
865

    
866
@item mon:@var{dev_string}
867
This is a special option to allow the monitor to be multiplexed onto
868
another serial port.  The monitor is accessed with key sequence of
869
@key{Control-a} and then pressing @key{c}. See monitor access
870
@ref{pcsys_keys} in the -nographic section for more keys.
871
@var{dev_string} should be any one of the serial devices specified
872
above.  An example to multiplex the monitor onto a telnet server
873
listening on port 4444 would be:
874
@table @code
875
@item -serial mon:telnet::4444,server,nowait
876
@end table
877

    
878
@item braille
879
Braille device.  This will use BrlAPI to display the braille output on a real
880
or fake device.
881

    
882
@end table
883

    
884
@item -parallel @var{dev}
885
Redirect the virtual parallel port to host device @var{dev} (same
886
devices as the serial port). On Linux hosts, @file{/dev/parportN} can
887
be used to use hardware devices connected on the corresponding host
888
parallel port.
889

    
890
This option can be used several times to simulate up to 3 parallel
891
ports.
892

    
893
Use @code{-parallel none} to disable all parallel ports.
894

    
895
@item -monitor @var{dev}
896
Redirect the monitor to host device @var{dev} (same devices as the
897
serial port).
898
The default device is @code{vc} in graphical mode and @code{stdio} in
899
non graphical mode.
900

    
901
@item -echr numeric_ascii_value
902
Change the escape character used for switching to the monitor when using
903
monitor and serial sharing.  The default is @code{0x01} when using the
904
@code{-nographic} option.  @code{0x01} is equal to pressing
905
@code{Control-a}.  You can select a different character from the ascii
906
control keys where 1 through 26 map to Control-a through Control-z.  For
907
instance you could use the either of the following to change the escape
908
character to Control-t.
909
@table @code
910
@item -echr 0x14
911
@item -echr 20
912
@end table
913

    
914
@item -s
915
Wait gdb connection to port 1234 (@pxref{gdb_usage}).
916
@item -p @var{port}
917
Change gdb connection port.  @var{port} can be either a decimal number
918
to specify a TCP port, or a host device (same devices as the serial port).
919
@item -S
920
Do not start CPU at startup (you must type 'c' in the monitor).
921
@item -d
922
Output log in /tmp/qemu.log
923
@item -hdachs @var{c},@var{h},@var{s},[,@var{t}]
924
Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
925
@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
926
translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
927
all those parameters. This option is useful for old MS-DOS disk
928
images.
929

    
930
@item -L path
931
Set the directory for the BIOS, VGA BIOS and keymaps.
932

    
933
@item -std-vga
934
Simulate a standard VGA card with Bochs VBE extensions (default is
935
Cirrus Logic GD5446 PCI VGA). If your guest OS supports the VESA 2.0
936
VBE extensions (e.g. Windows XP) and if you want to use high
937
resolution modes (>= 1280x1024x16) then you should use this option.
938

    
939
@item -no-acpi
940
Disable ACPI (Advanced Configuration and Power Interface) support. Use
941
it if your guest OS complains about ACPI problems (PC target machine
942
only).
943

    
944
@item -no-reboot
945
Exit instead of rebooting.
946

    
947
@item -no-shutdown
948
Don't exit QEMU on guest shutdown, but instead only stop the emulation.
949
This allows for instance switching to monitor to commit changes to the
950
disk image.
951

    
952
@item -loadvm file
953
Start right away with a saved state (@code{loadvm} in monitor)
954

    
955
@item -semihosting
956
Enable semihosting syscall emulation (ARM and M68K target machines only).
957

    
958
On ARM this implements the "Angel" interface.
959
On M68K this implements the "ColdFire GDB" interface used by libgloss.
960

    
961
Note that this allows guest direct access to the host filesystem,
962
so should only be used with trusted guest OS.
963
@end table
964

    
965
@c man end
966

    
967
@node pcsys_keys
968
@section Keys
969

    
970
@c man begin OPTIONS
971

    
972
During the graphical emulation, you can use the following keys:
973
@table @key
974
@item Ctrl-Alt-f
975
Toggle full screen
976

    
977
@item Ctrl-Alt-n
978
Switch to virtual console 'n'. Standard console mappings are:
979
@table @emph
980
@item 1
981
Target system display
982
@item 2
983
Monitor
984
@item 3
985
Serial port
986
@end table
987

    
988
@item Ctrl-Alt
989
Toggle mouse and keyboard grab.
990
@end table
991

    
992
In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
993
@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
994

    
995
During emulation, if you are using the @option{-nographic} option, use
996
@key{Ctrl-a h} to get terminal commands:
997

    
998
@table @key
999
@item Ctrl-a h
1000
Print this help
1001
@item Ctrl-a x
1002
Exit emulator
1003
@item Ctrl-a s
1004
Save disk data back to file (if -snapshot)
1005
@item Ctrl-a t
1006
toggle console timestamps
1007
@item Ctrl-a b
1008
Send break (magic sysrq in Linux)
1009
@item Ctrl-a c
1010
Switch between console and monitor
1011
@item Ctrl-a Ctrl-a
1012
Send Ctrl-a
1013
@end table
1014
@c man end
1015

    
1016
@ignore
1017

    
1018
@c man begin SEEALSO
1019
The HTML documentation of QEMU for more precise information and Linux
1020
user mode emulator invocation.
1021
@c man end
1022

    
1023
@c man begin AUTHOR
1024
Fabrice Bellard
1025
@c man end
1026

    
1027
@end ignore
1028

    
1029
@node pcsys_monitor
1030
@section QEMU Monitor
1031

    
1032
The QEMU monitor is used to give complex commands to the QEMU
1033
emulator. You can use it to:
1034

    
1035
@itemize @minus
1036

    
1037
@item
1038
Remove or insert removable media images
1039
(such as CD-ROM or floppies).
1040

    
1041
@item
1042
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
1043
from a disk file.
1044

    
1045
@item Inspect the VM state without an external debugger.
1046

    
1047
@end itemize
1048

    
1049
@subsection Commands
1050

    
1051
The following commands are available:
1052

    
1053
@table @option
1054

    
1055
@item help or ? [@var{cmd}]
1056
Show the help for all commands or just for command @var{cmd}.
1057

    
1058
@item commit
1059
Commit changes to the disk images (if -snapshot is used).
1060

    
1061
@item info @var{subcommand}
1062
Show various information about the system state.
1063

    
1064
@table @option
1065
@item info network
1066
show the various VLANs and the associated devices
1067
@item info block
1068
show the block devices
1069
@item info registers
1070
show the cpu registers
1071
@item info history
1072
show the command line history
1073
@item info pci
1074
show emulated PCI device
1075
@item info usb
1076
show USB devices plugged on the virtual USB hub
1077
@item info usbhost
1078
show all USB host devices
1079
@item info capture
1080
show information about active capturing
1081
@item info snapshots
1082
show list of VM snapshots
1083
@item info mice
1084
show which guest mouse is receiving events
1085
@end table
1086

    
1087
@item q or quit
1088
Quit the emulator.
1089

    
1090
@item eject [-f] @var{device}
1091
Eject a removable medium (use -f to force it).
1092

    
1093
@item change @var{device} @var{setting}
1094

    
1095
Change the configuration of a device.
1096

    
1097
@table @option
1098
@item change @var{diskdevice} @var{filename}
1099
Change the medium for a removable disk device to point to @var{filename}. eg
1100

    
1101
@example
1102
(qemu) change ide1-cd0 /path/to/some.iso
1103
@end example
1104

    
1105
@item change vnc @var{display},@var{options}
1106
Change the configuration of the VNC server. The valid syntax for @var{display}
1107
and @var{options} are described at @ref{sec_invocation}. eg
1108

    
1109
@example
1110
(qemu) change vnc localhost:1
1111
@end example
1112

    
1113
@item change vnc password
1114

    
1115
Change the password associated with the VNC server. The monitor will prompt for
1116
the new password to be entered. VNC passwords are only significant upto 8 letters.
1117
eg.
1118

    
1119
@example
1120
(qemu) change vnc password
1121
Password: ********
1122
@end example
1123

    
1124
@end table
1125

    
1126
@item screendump @var{filename}
1127
Save screen into PPM image @var{filename}.
1128

    
1129
@item mouse_move @var{dx} @var{dy} [@var{dz}]
1130
Move the active mouse to the specified coordinates @var{dx} @var{dy}
1131
with optional scroll axis @var{dz}.
1132

    
1133
@item mouse_button @var{val}
1134
Change the active mouse button state @var{val} (1=L, 2=M, 4=R).
1135

    
1136
@item mouse_set @var{index}
1137
Set which mouse device receives events at given @var{index}, index
1138
can be obtained with
1139
@example
1140
info mice
1141
@end example
1142

    
1143
@item wavcapture @var{filename} [@var{frequency} [@var{bits} [@var{channels}]]]
1144
Capture audio into @var{filename}. Using sample rate @var{frequency}
1145
bits per sample @var{bits} and number of channels @var{channels}.
1146

    
1147
Defaults:
1148
@itemize @minus
1149
@item Sample rate = 44100 Hz - CD quality
1150
@item Bits = 16
1151
@item Number of channels = 2 - Stereo
1152
@end itemize
1153

    
1154
@item stopcapture @var{index}
1155
Stop capture with a given @var{index}, index can be obtained with
1156
@example
1157
info capture
1158
@end example
1159

    
1160
@item log @var{item1}[,...]
1161
Activate logging of the specified items to @file{/tmp/qemu.log}.
1162

    
1163
@item savevm [@var{tag}|@var{id}]
1164
Create a snapshot of the whole virtual machine. If @var{tag} is
1165
provided, it is used as human readable identifier. If there is already
1166
a snapshot with the same tag or ID, it is replaced. More info at
1167
@ref{vm_snapshots}.
1168

    
1169
@item loadvm @var{tag}|@var{id}
1170
Set the whole virtual machine to the snapshot identified by the tag
1171
@var{tag} or the unique snapshot ID @var{id}.
1172

    
1173
@item delvm @var{tag}|@var{id}
1174
Delete the snapshot identified by @var{tag} or @var{id}.
1175

    
1176
@item stop
1177
Stop emulation.
1178

    
1179
@item c or cont
1180
Resume emulation.
1181

    
1182
@item gdbserver [@var{port}]
1183
Start gdbserver session (default @var{port}=1234)
1184

    
1185
@item x/fmt @var{addr}
1186
Virtual memory dump starting at @var{addr}.
1187

    
1188
@item xp /@var{fmt} @var{addr}
1189
Physical memory dump starting at @var{addr}.
1190

    
1191
@var{fmt} is a format which tells the command how to format the
1192
data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
1193

    
1194
@table @var
1195
@item count
1196
is the number of items to be dumped.
1197

    
1198
@item format
1199
can be x (hex), d (signed decimal), u (unsigned decimal), o (octal),
1200
c (char) or i (asm instruction).
1201

    
1202
@item size
1203
can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
1204
@code{h} or @code{w} can be specified with the @code{i} format to
1205
respectively select 16 or 32 bit code instruction size.
1206

    
1207
@end table
1208

    
1209
Examples:
1210
@itemize
1211
@item
1212
Dump 10 instructions at the current instruction pointer:
1213
@example
1214
(qemu) x/10i $eip
1215
0x90107063:  ret
1216
0x90107064:  sti
1217
0x90107065:  lea    0x0(%esi,1),%esi
1218
0x90107069:  lea    0x0(%edi,1),%edi
1219
0x90107070:  ret
1220
0x90107071:  jmp    0x90107080
1221
0x90107073:  nop
1222
0x90107074:  nop
1223
0x90107075:  nop
1224
0x90107076:  nop
1225
@end example
1226

    
1227
@item
1228
Dump 80 16 bit values at the start of the video memory.
1229
@smallexample
1230
(qemu) xp/80hx 0xb8000
1231
0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
1232
0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
1233
0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
1234
0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
1235
0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
1236
0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
1237
0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
1238
0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
1239
0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
1240
0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
1241
@end smallexample
1242
@end itemize
1243

    
1244
@item p or print/@var{fmt} @var{expr}
1245

    
1246
Print expression value. Only the @var{format} part of @var{fmt} is
1247
used.
1248

    
1249
@item sendkey @var{keys}
1250

    
1251
Send @var{keys} to the emulator. Use @code{-} to press several keys
1252
simultaneously. Example:
1253
@example
1254
sendkey ctrl-alt-f1
1255
@end example
1256

    
1257
This command is useful to send keys that your graphical user interface
1258
intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
1259

    
1260
@item system_reset
1261

    
1262
Reset the system.
1263

    
1264
@item boot_set @var{bootdevicelist}
1265

    
1266
Define new values for the boot device list. Those values will override
1267
the values specified on the command line through the @code{-boot} option.
1268

    
1269
The values that can be specified here depend on the machine type, but are
1270
the same that can be specified in the @code{-boot} command line option.
1271

    
1272
@item usb_add @var{devname}
1273

    
1274
Add the USB device @var{devname}.  For details of available devices see
1275
@ref{usb_devices}
1276

    
1277
@item usb_del @var{devname}
1278

    
1279
Remove the USB device @var{devname} from the QEMU virtual USB
1280
hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
1281
command @code{info usb} to see the devices you can remove.
1282

    
1283
@end table
1284

    
1285
@subsection Integer expressions
1286

    
1287
The monitor understands integers expressions for every integer
1288
argument. You can use register names to get the value of specifics
1289
CPU registers by prefixing them with @emph{$}.
1290

    
1291
@node disk_images
1292
@section Disk Images
1293

    
1294
Since version 0.6.1, QEMU supports many disk image formats, including
1295
growable disk images (their size increase as non empty sectors are
1296
written), compressed and encrypted disk images. Version 0.8.3 added
1297
the new qcow2 disk image format which is essential to support VM
1298
snapshots.
1299

    
1300
@menu
1301
* disk_images_quickstart::    Quick start for disk image creation
1302
* disk_images_snapshot_mode:: Snapshot mode
1303
* vm_snapshots::              VM snapshots
1304
* qemu_img_invocation::       qemu-img Invocation
1305
* host_drives::               Using host drives
1306
* disk_images_fat_images::    Virtual FAT disk images
1307
@end menu
1308

    
1309
@node disk_images_quickstart
1310
@subsection Quick start for disk image creation
1311

    
1312
You can create a disk image with the command:
1313
@example
1314
qemu-img create myimage.img mysize
1315
@end example
1316
where @var{myimage.img} is the disk image filename and @var{mysize} is its
1317
size in kilobytes. You can add an @code{M} suffix to give the size in
1318
megabytes and a @code{G} suffix for gigabytes.
1319

    
1320
See @ref{qemu_img_invocation} for more information.
1321

    
1322
@node disk_images_snapshot_mode
1323
@subsection Snapshot mode
1324

    
1325
If you use the option @option{-snapshot}, all disk images are
1326
considered as read only. When sectors in written, they are written in
1327
a temporary file created in @file{/tmp}. You can however force the
1328
write back to the raw disk images by using the @code{commit} monitor
1329
command (or @key{C-a s} in the serial console).
1330

    
1331
@node vm_snapshots
1332
@subsection VM snapshots
1333

    
1334
VM snapshots are snapshots of the complete virtual machine including
1335
CPU state, RAM, device state and the content of all the writable
1336
disks. In order to use VM snapshots, you must have at least one non
1337
removable and writable block device using the @code{qcow2} disk image
1338
format. Normally this device is the first virtual hard drive.
1339

    
1340
Use the monitor command @code{savevm} to create a new VM snapshot or
1341
replace an existing one. A human readable name can be assigned to each
1342
snapshot in addition to its numerical ID.
1343

    
1344
Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
1345
a VM snapshot. @code{info snapshots} lists the available snapshots
1346
with their associated information:
1347

    
1348
@example
1349
(qemu) info snapshots
1350
Snapshot devices: hda
1351
Snapshot list (from hda):
1352
ID        TAG                 VM SIZE                DATE       VM CLOCK
1353
1         start                   41M 2006-08-06 12:38:02   00:00:14.954
1354
2                                 40M 2006-08-06 12:43:29   00:00:18.633
1355
3         msys                    40M 2006-08-06 12:44:04   00:00:23.514
1356
@end example
1357

    
1358
A VM snapshot is made of a VM state info (its size is shown in
1359
@code{info snapshots}) and a snapshot of every writable disk image.
1360
The VM state info is stored in the first @code{qcow2} non removable
1361
and writable block device. The disk image snapshots are stored in
1362
every disk image. The size of a snapshot in a disk image is difficult
1363
to evaluate and is not shown by @code{info snapshots} because the
1364
associated disk sectors are shared among all the snapshots to save
1365
disk space (otherwise each snapshot would need a full copy of all the
1366
disk images).
1367

    
1368
When using the (unrelated) @code{-snapshot} option
1369
(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
1370
but they are deleted as soon as you exit QEMU.
1371

    
1372
VM snapshots currently have the following known limitations:
1373
@itemize
1374
@item
1375
They cannot cope with removable devices if they are removed or
1376
inserted after a snapshot is done.
1377
@item
1378
A few device drivers still have incomplete snapshot support so their
1379
state is not saved or restored properly (in particular USB).
1380
@end itemize
1381

    
1382
@node qemu_img_invocation
1383
@subsection @code{qemu-img} Invocation
1384

    
1385
@include qemu-img.texi
1386

    
1387
@node host_drives
1388
@subsection Using host drives
1389

    
1390
In addition to disk image files, QEMU can directly access host
1391
devices. We describe here the usage for QEMU version >= 0.8.3.
1392

    
1393
@subsubsection Linux
1394

    
1395
On Linux, you can directly use the host device filename instead of a
1396
disk image filename provided you have enough privileges to access
1397
it. For example, use @file{/dev/cdrom} to access to the CDROM or
1398
@file{/dev/fd0} for the floppy.
1399

    
1400
@table @code
1401
@item CD
1402
You can specify a CDROM device even if no CDROM is loaded. QEMU has
1403
specific code to detect CDROM insertion or removal. CDROM ejection by
1404
the guest OS is supported. Currently only data CDs are supported.
1405
@item Floppy
1406
You can specify a floppy device even if no floppy is loaded. Floppy
1407
removal is currently not detected accurately (if you change floppy
1408
without doing floppy access while the floppy is not loaded, the guest
1409
OS will think that the same floppy is loaded).
1410
@item Hard disks
1411
Hard disks can be used. Normally you must specify the whole disk
1412
(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
1413
see it as a partitioned disk. WARNING: unless you know what you do, it
1414
is better to only make READ-ONLY accesses to the hard disk otherwise
1415
you may corrupt your host data (use the @option{-snapshot} command
1416
line option or modify the device permissions accordingly).
1417
@end table
1418

    
1419
@subsubsection Windows
1420

    
1421
@table @code
1422
@item CD
1423
The preferred syntax is the drive letter (e.g. @file{d:}). The
1424
alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
1425
supported as an alias to the first CDROM drive.
1426

    
1427
Currently there is no specific code to handle removable media, so it
1428
is better to use the @code{change} or @code{eject} monitor commands to
1429
change or eject media.
1430
@item Hard disks
1431
Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
1432
where @var{N} is the drive number (0 is the first hard disk).
1433

    
1434
WARNING: unless you know what you do, it is better to only make
1435
READ-ONLY accesses to the hard disk otherwise you may corrupt your
1436
host data (use the @option{-snapshot} command line so that the
1437
modifications are written in a temporary file).
1438
@end table
1439

    
1440

    
1441
@subsubsection Mac OS X
1442

    
1443
@file{/dev/cdrom} is an alias to the first CDROM.
1444

    
1445
Currently there is no specific code to handle removable media, so it
1446
is better to use the @code{change} or @code{eject} monitor commands to
1447
change or eject media.
1448

    
1449
@node disk_images_fat_images
1450
@subsection Virtual FAT disk images
1451

    
1452
QEMU can automatically create a virtual FAT disk image from a
1453
directory tree. In order to use it, just type:
1454

    
1455
@example
1456
qemu linux.img -hdb fat:/my_directory
1457
@end example
1458

    
1459
Then you access access to all the files in the @file{/my_directory}
1460
directory without having to copy them in a disk image or to export
1461
them via SAMBA or NFS. The default access is @emph{read-only}.
1462

    
1463
Floppies can be emulated with the @code{:floppy:} option:
1464

    
1465
@example
1466
qemu linux.img -fda fat:floppy:/my_directory
1467
@end example
1468

    
1469
A read/write support is available for testing (beta stage) with the
1470
@code{:rw:} option:
1471

    
1472
@example
1473
qemu linux.img -fda fat:floppy:rw:/my_directory
1474
@end example
1475

    
1476
What you should @emph{never} do:
1477
@itemize
1478
@item use non-ASCII filenames ;
1479
@item use "-snapshot" together with ":rw:" ;
1480
@item expect it to work when loadvm'ing ;
1481
@item write to the FAT directory on the host system while accessing it with the guest system.
1482
@end itemize
1483

    
1484
@node pcsys_network
1485
@section Network emulation
1486

    
1487
QEMU can simulate several network cards (PCI or ISA cards on the PC
1488
target) and can connect them to an arbitrary number of Virtual Local
1489
Area Networks (VLANs). Host TAP devices can be connected to any QEMU
1490
VLAN. VLAN can be connected between separate instances of QEMU to
1491
simulate large networks. For simpler usage, a non privileged user mode
1492
network stack can replace the TAP device to have a basic network
1493
connection.
1494

    
1495
@subsection VLANs
1496

    
1497
QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
1498
connection between several network devices. These devices can be for
1499
example QEMU virtual Ethernet cards or virtual Host ethernet devices
1500
(TAP devices).
1501

    
1502
@subsection Using TAP network interfaces
1503

    
1504
This is the standard way to connect QEMU to a real network. QEMU adds
1505
a virtual network device on your host (called @code{tapN}), and you
1506
can then configure it as if it was a real ethernet card.
1507

    
1508
@subsubsection Linux host
1509

    
1510
As an example, you can download the @file{linux-test-xxx.tar.gz}
1511
archive and copy the script @file{qemu-ifup} in @file{/etc} and
1512
configure properly @code{sudo} so that the command @code{ifconfig}
1513
contained in @file{qemu-ifup} can be executed as root. You must verify
1514
that your host kernel supports the TAP network interfaces: the
1515
device @file{/dev/net/tun} must be present.
1516

    
1517
See @ref{sec_invocation} to have examples of command lines using the
1518
TAP network interfaces.
1519

    
1520
@subsubsection Windows host
1521

    
1522
There is a virtual ethernet driver for Windows 2000/XP systems, called
1523
TAP-Win32. But it is not included in standard QEMU for Windows,
1524
so you will need to get it separately. It is part of OpenVPN package,
1525
so download OpenVPN from : @url{http://openvpn.net/}.
1526

    
1527
@subsection Using the user mode network stack
1528

    
1529
By using the option @option{-net user} (default configuration if no
1530
@option{-net} option is specified), QEMU uses a completely user mode
1531
network stack (you don't need root privilege to use the virtual
1532
network). The virtual network configuration is the following:
1533

    
1534
@example
1535

    
1536
         QEMU VLAN      <------>  Firewall/DHCP server <-----> Internet
1537
                           |          (10.0.2.2)
1538
                           |
1539
                           ---->  DNS server (10.0.2.3)
1540
                           |
1541
                           ---->  SMB server (10.0.2.4)
1542
@end example
1543

    
1544
The QEMU VM behaves as if it was behind a firewall which blocks all
1545
incoming connections. You can use a DHCP client to automatically
1546
configure the network in the QEMU VM. The DHCP server assign addresses
1547
to the hosts starting from 10.0.2.15.
1548

    
1549
In order to check that the user mode network is working, you can ping
1550
the address 10.0.2.2 and verify that you got an address in the range
1551
10.0.2.x from the QEMU virtual DHCP server.
1552

    
1553
Note that @code{ping} is not supported reliably to the internet as it
1554
would require root privileges. It means you can only ping the local
1555
router (10.0.2.2).
1556

    
1557
When using the built-in TFTP server, the router is also the TFTP
1558
server.
1559

    
1560
When using the @option{-redir} option, TCP or UDP connections can be
1561
redirected from the host to the guest. It allows for example to
1562
redirect X11, telnet or SSH connections.
1563

    
1564
@subsection Connecting VLANs between QEMU instances
1565

    
1566
Using the @option{-net socket} option, it is possible to make VLANs
1567
that span several QEMU instances. See @ref{sec_invocation} to have a
1568
basic example.
1569

    
1570
@node direct_linux_boot
1571
@section Direct Linux Boot
1572

    
1573
This section explains how to launch a Linux kernel inside QEMU without
1574
having to make a full bootable image. It is very useful for fast Linux
1575
kernel testing.
1576

    
1577
The syntax is:
1578
@example
1579
qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1580
@end example
1581

    
1582
Use @option{-kernel} to provide the Linux kernel image and
1583
@option{-append} to give the kernel command line arguments. The
1584
@option{-initrd} option can be used to provide an INITRD image.
1585

    
1586
When using the direct Linux boot, a disk image for the first hard disk
1587
@file{hda} is required because its boot sector is used to launch the
1588
Linux kernel.
1589

    
1590
If you do not need graphical output, you can disable it and redirect
1591
the virtual serial port and the QEMU monitor to the console with the
1592
@option{-nographic} option. The typical command line is:
1593
@example
1594
qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1595
     -append "root=/dev/hda console=ttyS0" -nographic
1596
@end example
1597

    
1598
Use @key{Ctrl-a c} to switch between the serial console and the
1599
monitor (@pxref{pcsys_keys}).
1600

    
1601
@node pcsys_usb
1602
@section USB emulation
1603

    
1604
QEMU emulates a PCI UHCI USB controller. You can virtually plug
1605
virtual USB devices or real host USB devices (experimental, works only
1606
on Linux hosts).  Qemu will automatically create and connect virtual USB hubs
1607
as necessary to connect multiple USB devices.
1608

    
1609
@menu
1610
* usb_devices::
1611
* host_usb_devices::
1612
@end menu
1613
@node usb_devices
1614
@subsection Connecting USB devices
1615

    
1616
USB devices can be connected with the @option{-usbdevice} commandline option
1617
or the @code{usb_add} monitor command.  Available devices are:
1618

    
1619
@table @code
1620
@item mouse
1621
Virtual Mouse.  This will override the PS/2 mouse emulation when activated.
1622
@item tablet
1623
Pointer device that uses absolute coordinates (like a touchscreen).
1624
This means qemu is able to report the mouse position without having
1625
to grab the mouse.  Also overrides the PS/2 mouse emulation when activated.
1626
@item disk:@var{file}
1627
Mass storage device based on @var{file} (@pxref{disk_images})
1628
@item host:@var{bus.addr}
1629
Pass through the host device identified by @var{bus.addr}
1630
(Linux only)
1631
@item host:@var{vendor_id:product_id}
1632
Pass through the host device identified by @var{vendor_id:product_id}
1633
(Linux only)
1634
@item wacom-tablet
1635
Virtual Wacom PenPartner tablet.  This device is similar to the @code{tablet}
1636
above but it can be used with the tslib library because in addition to touch
1637
coordinates it reports touch pressure.
1638
@item keyboard
1639
Standard USB keyboard.  Will override the PS/2 keyboard (if present).
1640
@item serial:[vendorid=@var{vendor_id}][,product_id=@var{product_id}]:@var{dev}
1641
Serial converter. This emulates an FTDI FT232BM chip connected to host character
1642
device @var{dev}. The available character devices are the same as for the
1643
@code{-serial} option. The @code{vendorid} and @code{productid} options can be
1644
used to override the default 0403:6001. For instance, 
1645
@example
1646
usb_add serial:productid=FA00:tcp:192.168.0.2:4444
1647
@end example
1648
will connect to tcp port 4444 of ip 192.168.0.2, and plug that to the virtual
1649
serial converter, faking a Matrix Orbital LCD Display (USB ID 0403:FA00).
1650
@item braille
1651
Braille device.  This will use BrlAPI to display the braille output on a real
1652
or fake device.
1653
@end table
1654

    
1655
@node host_usb_devices
1656
@subsection Using host USB devices on a Linux host
1657

    
1658
WARNING: this is an experimental feature. QEMU will slow down when
1659
using it. USB devices requiring real time streaming (i.e. USB Video
1660
Cameras) are not supported yet.
1661

    
1662
@enumerate
1663
@item If you use an early Linux 2.4 kernel, verify that no Linux driver
1664
is actually using the USB device. A simple way to do that is simply to
1665
disable the corresponding kernel module by renaming it from @file{mydriver.o}
1666
to @file{mydriver.o.disabled}.
1667

    
1668
@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1669
@example
1670
ls /proc/bus/usb
1671
001  devices  drivers
1672
@end example
1673

    
1674
@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:
1675
@example
1676
chown -R myuid /proc/bus/usb
1677
@end example
1678

    
1679
@item Launch QEMU and do in the monitor:
1680
@example
1681
info usbhost
1682
  Device 1.2, speed 480 Mb/s
1683
    Class 00: USB device 1234:5678, USB DISK
1684
@end example
1685
You should see the list of the devices you can use (Never try to use
1686
hubs, it won't work).
1687

    
1688
@item Add the device in QEMU by using:
1689
@example
1690
usb_add host:1234:5678
1691
@end example
1692

    
1693
Normally the guest OS should report that a new USB device is
1694
plugged. You can use the option @option{-usbdevice} to do the same.
1695

    
1696
@item Now you can try to use the host USB device in QEMU.
1697

    
1698
@end enumerate
1699

    
1700
When relaunching QEMU, you may have to unplug and plug again the USB
1701
device to make it work again (this is a bug).
1702

    
1703
@node vnc_security
1704
@section VNC security
1705

    
1706
The VNC server capability provides access to the graphical console
1707
of the guest VM across the network. This has a number of security
1708
considerations depending on the deployment scenarios.
1709

    
1710
@menu
1711
* vnc_sec_none::
1712
* vnc_sec_password::
1713
* vnc_sec_certificate::
1714
* vnc_sec_certificate_verify::
1715
* vnc_sec_certificate_pw::
1716
* vnc_generate_cert::
1717
@end menu
1718
@node vnc_sec_none
1719
@subsection Without passwords
1720

    
1721
The simplest VNC server setup does not include any form of authentication.
1722
For this setup it is recommended to restrict it to listen on a UNIX domain
1723
socket only. For example
1724

    
1725
@example
1726
qemu [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
1727
@end example
1728

    
1729
This ensures that only users on local box with read/write access to that
1730
path can access the VNC server. To securely access the VNC server from a
1731
remote machine, a combination of netcat+ssh can be used to provide a secure
1732
tunnel.
1733

    
1734
@node vnc_sec_password
1735
@subsection With passwords
1736

    
1737
The VNC protocol has limited support for password based authentication. Since
1738
the protocol limits passwords to 8 characters it should not be considered
1739
to provide high security. The password can be fairly easily brute-forced by
1740
a client making repeat connections. For this reason, a VNC server using password
1741
authentication should be restricted to only listen on the loopback interface
1742
or UNIX domain sockets. Password ayuthentication is requested with the @code{password}
1743
option, and then once QEMU is running the password is set with the monitor. Until
1744
the monitor is used to set the password all clients will be rejected.
1745

    
1746
@example
1747
qemu [...OPTIONS...] -vnc :1,password -monitor stdio
1748
(qemu) change vnc password
1749
Password: ********
1750
(qemu)
1751
@end example
1752

    
1753
@node vnc_sec_certificate
1754
@subsection With x509 certificates
1755

    
1756
The QEMU VNC server also implements the VeNCrypt extension allowing use of
1757
TLS for encryption of the session, and x509 certificates for authentication.
1758
The use of x509 certificates is strongly recommended, because TLS on its
1759
own is susceptible to man-in-the-middle attacks. Basic x509 certificate
1760
support provides a secure session, but no authentication. This allows any
1761
client to connect, and provides an encrypted session.
1762

    
1763
@example
1764
qemu [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
1765
@end example
1766

    
1767
In the above example @code{/etc/pki/qemu} should contain at least three files,
1768
@code{ca-cert.pem}, @code{server-cert.pem} and @code{server-key.pem}. Unprivileged
1769
users will want to use a private directory, for example @code{$HOME/.pki/qemu}.
1770
NB the @code{server-key.pem} file should be protected with file mode 0600 to
1771
only be readable by the user owning it.
1772

    
1773
@node vnc_sec_certificate_verify
1774
@subsection With x509 certificates and client verification
1775

    
1776
Certificates can also provide a means to authenticate the client connecting.
1777
The server will request that the client provide a certificate, which it will
1778
then validate against the CA certificate. This is a good choice if deploying
1779
in an environment with a private internal certificate authority.
1780

    
1781
@example
1782
qemu [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
1783
@end example
1784

    
1785

    
1786
@node vnc_sec_certificate_pw
1787
@subsection With x509 certificates, client verification and passwords
1788

    
1789
Finally, the previous method can be combined with VNC password authentication
1790
to provide two layers of authentication for clients.
1791

    
1792
@example
1793
qemu [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
1794
(qemu) change vnc password
1795
Password: ********
1796
(qemu)
1797
@end example
1798

    
1799
@node vnc_generate_cert
1800
@subsection Generating certificates for VNC
1801

    
1802
The GNU TLS packages provides a command called @code{certtool} which can
1803
be used to generate certificates and keys in PEM format. At a minimum it
1804
is neccessary to setup a certificate authority, and issue certificates to
1805
each server. If using certificates for authentication, then each client
1806
will also need to be issued a certificate. The recommendation is for the
1807
server to keep its certificates in either @code{/etc/pki/qemu} or for
1808
unprivileged users in @code{$HOME/.pki/qemu}.
1809

    
1810
@menu
1811
* vnc_generate_ca::
1812
* vnc_generate_server::
1813
* vnc_generate_client::
1814
@end menu
1815
@node vnc_generate_ca
1816
@subsubsection Setup the Certificate Authority
1817

    
1818
This step only needs to be performed once per organization / organizational
1819
unit. First the CA needs a private key. This key must be kept VERY secret
1820
and secure. If this key is compromised the entire trust chain of the certificates
1821
issued with it is lost.
1822

    
1823
@example
1824
# certtool --generate-privkey > ca-key.pem
1825
@end example
1826

    
1827
A CA needs to have a public certificate. For simplicity it can be a self-signed
1828
certificate, or one issue by a commercial certificate issuing authority. To
1829
generate a self-signed certificate requires one core piece of information, the
1830
name of the organization.
1831

    
1832
@example
1833
# cat > ca.info <<EOF
1834
cn = Name of your organization
1835
ca
1836
cert_signing_key
1837
EOF
1838
# certtool --generate-self-signed \
1839
           --load-privkey ca-key.pem
1840
           --template ca.info \
1841
           --outfile ca-cert.pem
1842
@end example
1843

    
1844
The @code{ca-cert.pem} file should be copied to all servers and clients wishing to utilize
1845
TLS support in the VNC server. The @code{ca-key.pem} must not be disclosed/copied at all.
1846

    
1847
@node vnc_generate_server
1848
@subsubsection Issuing server certificates
1849

    
1850
Each server (or host) needs to be issued with a key and certificate. When connecting
1851
the certificate is sent to the client which validates it against the CA certificate.
1852
The core piece of information for a server certificate is the hostname. This should
1853
be the fully qualified hostname that the client will connect with, since the client
1854
will typically also verify the hostname in the certificate. On the host holding the
1855
secure CA private key:
1856

    
1857
@example
1858
# cat > server.info <<EOF
1859
organization = Name  of your organization
1860
cn = server.foo.example.com
1861
tls_www_server
1862
encryption_key
1863
signing_key
1864
EOF
1865
# certtool --generate-privkey > server-key.pem
1866
# certtool --generate-certificate \
1867
           --load-ca-certificate ca-cert.pem \
1868
           --load-ca-privkey ca-key.pem \
1869
           --load-privkey server server-key.pem \
1870
           --template server.info \
1871
           --outfile server-cert.pem
1872
@end example
1873

    
1874
The @code{server-key.pem} and @code{server-cert.pem} files should now be securely copied
1875
to the server for which they were generated. The @code{server-key.pem} is security
1876
sensitive and should be kept protected with file mode 0600 to prevent disclosure.
1877

    
1878
@node vnc_generate_client
1879
@subsubsection Issuing client certificates
1880

    
1881
If the QEMU VNC server is to use the @code{x509verify} option to validate client
1882
certificates as its authentication mechanism, each client also needs to be issued
1883
a certificate. The client certificate contains enough metadata to uniquely identify
1884
the client, typically organization, state, city, building, etc. On the host holding
1885
the secure CA private key:
1886

    
1887
@example
1888
# cat > client.info <<EOF
1889
country = GB
1890
state = London
1891
locality = London
1892
organiazation = Name of your organization
1893
cn = client.foo.example.com
1894
tls_www_client
1895
encryption_key
1896
signing_key
1897
EOF
1898
# certtool --generate-privkey > client-key.pem
1899
# certtool --generate-certificate \
1900
           --load-ca-certificate ca-cert.pem \
1901
           --load-ca-privkey ca-key.pem \
1902
           --load-privkey client-key.pem \
1903
           --template client.info \
1904
           --outfile client-cert.pem
1905
@end example
1906

    
1907
The @code{client-key.pem} and @code{client-cert.pem} files should now be securely
1908
copied to the client for which they were generated.
1909

    
1910
@node gdb_usage
1911
@section GDB usage
1912

    
1913
QEMU has a primitive support to work with gdb, so that you can do
1914
'Ctrl-C' while the virtual machine is running and inspect its state.
1915

    
1916
In order to use gdb, launch qemu with the '-s' option. It will wait for a
1917
gdb connection:
1918
@example
1919
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1920
       -append "root=/dev/hda"
1921
Connected to host network interface: tun0
1922
Waiting gdb connection on port 1234
1923
@end example
1924

    
1925
Then launch gdb on the 'vmlinux' executable:
1926
@example
1927
> gdb vmlinux
1928
@end example
1929

    
1930
In gdb, connect to QEMU:
1931
@example
1932
(gdb) target remote localhost:1234
1933
@end example
1934

    
1935
Then you can use gdb normally. For example, type 'c' to launch the kernel:
1936
@example
1937
(gdb) c
1938
@end example
1939

    
1940
Here are some useful tips in order to use gdb on system code:
1941

    
1942
@enumerate
1943
@item
1944
Use @code{info reg} to display all the CPU registers.
1945
@item
1946
Use @code{x/10i $eip} to display the code at the PC position.
1947
@item
1948
Use @code{set architecture i8086} to dump 16 bit code. Then use
1949
@code{x/10i $cs*16+$eip} to dump the code at the PC position.
1950
@end enumerate
1951

    
1952
Advanced debugging options:
1953

    
1954
The default single stepping behavior is step with the IRQs and timer service routines off.  It is set this way because when gdb executes a single step it expects to advance beyond the current instruction.  With the IRQs and and timer service routines on, a single step might jump into the one of the interrupt or exception vectors instead of executing the current instruction. This means you may hit the same breakpoint a number of times before executing the instruction gdb wants to have executed.  Because there are rare circumstances where you want to single step into an interrupt vector the behavior can be controlled from GDB.  There are three commands you can query and set the single step behavior:
1955
@table @code
1956
@item maintenance packet qqemu.sstepbits
1957

    
1958
This will display the MASK bits used to control the single stepping IE:
1959
@example
1960
(gdb) maintenance packet qqemu.sstepbits
1961
sending: "qqemu.sstepbits"
1962
received: "ENABLE=1,NOIRQ=2,NOTIMER=4"
1963
@end example
1964
@item maintenance packet qqemu.sstep
1965

    
1966
This will display the current value of the mask used when single stepping IE:
1967
@example
1968
(gdb) maintenance packet qqemu.sstep
1969
sending: "qqemu.sstep"
1970
received: "0x7"
1971
@end example
1972
@item maintenance packet Qqemu.sstep=HEX_VALUE
1973

    
1974
This will change the single step mask, so if wanted to enable IRQs on the single step, but not timers, you would use:
1975
@example
1976
(gdb) maintenance packet Qqemu.sstep=0x5
1977
sending: "qemu.sstep=0x5"
1978
received: "OK"
1979
@end example
1980
@end table
1981

    
1982
@node pcsys_os_specific
1983
@section Target OS specific information
1984

    
1985
@subsection Linux
1986

    
1987
To have access to SVGA graphic modes under X11, use the @code{vesa} or
1988
the @code{cirrus} X11 driver. For optimal performances, use 16 bit
1989
color depth in the guest and the host OS.
1990

    
1991
When using a 2.6 guest Linux kernel, you should add the option
1992
@code{clock=pit} on the kernel command line because the 2.6 Linux
1993
kernels make very strict real time clock checks by default that QEMU
1994
cannot simulate exactly.
1995

    
1996
When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1997
not activated because QEMU is slower with this patch. The QEMU
1998
Accelerator Module is also much slower in this case. Earlier Fedora
1999
Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporate this
2000
patch by default. Newer kernels don't have it.
2001

    
2002
@subsection Windows
2003

    
2004
If you have a slow host, using Windows 95 is better as it gives the
2005
best speed. Windows 2000 is also a good choice.
2006

    
2007
@subsubsection SVGA graphic modes support
2008

    
2009
QEMU emulates a Cirrus Logic GD5446 Video
2010
card. All Windows versions starting from Windows 95 should recognize
2011
and use this graphic card. For optimal performances, use 16 bit color
2012
depth in the guest and the host OS.
2013

    
2014
If you are using Windows XP as guest OS and if you want to use high
2015
resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
2016
1280x1024x16), then you should use the VESA VBE virtual graphic card
2017
(option @option{-std-vga}).
2018

    
2019
@subsubsection CPU usage reduction
2020

    
2021
Windows 9x does not correctly use the CPU HLT
2022
instruction. The result is that it takes host CPU cycles even when
2023
idle. You can install the utility from
2024
@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
2025
problem. Note that no such tool is needed for NT, 2000 or XP.
2026

    
2027
@subsubsection Windows 2000 disk full problem
2028

    
2029
Windows 2000 has a bug which gives a disk full problem during its
2030
installation. When installing it, use the @option{-win2k-hack} QEMU
2031
option to enable a specific workaround. After Windows 2000 is
2032
installed, you no longer need this option (this option slows down the
2033
IDE transfers).
2034

    
2035
@subsubsection Windows 2000 shutdown
2036

    
2037
Windows 2000 cannot automatically shutdown in QEMU although Windows 98
2038
can. It comes from the fact that Windows 2000 does not automatically
2039
use the APM driver provided by the BIOS.
2040

    
2041
In order to correct that, do the following (thanks to Struan
2042
Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
2043
Add/Troubleshoot a device => Add a new device & Next => No, select the
2044
hardware from a list & Next => NT Apm/Legacy Support & Next => Next
2045
(again) a few times. Now the driver is installed and Windows 2000 now
2046
correctly instructs QEMU to shutdown at the appropriate moment.
2047

    
2048
@subsubsection Share a directory between Unix and Windows
2049

    
2050
See @ref{sec_invocation} about the help of the option @option{-smb}.
2051

    
2052
@subsubsection Windows XP security problem
2053

    
2054
Some releases of Windows XP install correctly but give a security
2055
error when booting:
2056
@example
2057
A problem is preventing Windows from accurately checking the
2058
license for this computer. Error code: 0x800703e6.
2059
@end example
2060

    
2061
The workaround is to install a service pack for XP after a boot in safe
2062
mode. Then reboot, and the problem should go away. Since there is no
2063
network while in safe mode, its recommended to download the full
2064
installation of SP1 or SP2 and transfer that via an ISO or using the
2065
vvfat block device ("-hdb fat:directory_which_holds_the_SP").
2066

    
2067
@subsection MS-DOS and FreeDOS
2068

    
2069
@subsubsection CPU usage reduction
2070

    
2071
DOS does not correctly use the CPU HLT instruction. The result is that
2072
it takes host CPU cycles even when idle. You can install the utility
2073
from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
2074
problem.
2075

    
2076
@node QEMU System emulator for non PC targets
2077
@chapter QEMU System emulator for non PC targets
2078

    
2079
QEMU is a generic emulator and it emulates many non PC
2080
machines. Most of the options are similar to the PC emulator. The
2081
differences are mentioned in the following sections.
2082

    
2083
@menu
2084
* QEMU PowerPC System emulator::
2085
* Sparc32 System emulator::
2086
* Sparc64 System emulator::
2087
* MIPS System emulator::
2088
* ARM System emulator::
2089
* ColdFire System emulator::
2090
@end menu
2091

    
2092
@node QEMU PowerPC System emulator
2093
@section QEMU PowerPC System emulator
2094

    
2095
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
2096
or PowerMac PowerPC system.
2097

    
2098
QEMU emulates the following PowerMac peripherals:
2099

    
2100
@itemize @minus
2101
@item
2102
UniNorth PCI Bridge
2103
@item
2104
PCI VGA compatible card with VESA Bochs Extensions
2105
@item
2106
2 PMAC IDE interfaces with hard disk and CD-ROM support
2107
@item
2108
NE2000 PCI adapters
2109
@item
2110
Non Volatile RAM
2111
@item
2112
VIA-CUDA with ADB keyboard and mouse.
2113
@end itemize
2114

    
2115
QEMU emulates the following PREP peripherals:
2116

    
2117
@itemize @minus
2118
@item
2119
PCI Bridge
2120
@item
2121
PCI VGA compatible card with VESA Bochs Extensions
2122
@item
2123
2 IDE interfaces with hard disk and CD-ROM support
2124
@item
2125
Floppy disk
2126
@item
2127
NE2000 network adapters
2128
@item
2129
Serial port
2130
@item
2131
PREP Non Volatile RAM
2132
@item
2133
PC compatible keyboard and mouse.
2134
@end itemize
2135

    
2136
QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
2137
@url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
2138

    
2139
@c man begin OPTIONS
2140

    
2141
The following options are specific to the PowerPC emulation:
2142

    
2143
@table @option
2144

    
2145
@item -g WxH[xDEPTH]
2146

    
2147
Set the initial VGA graphic mode. The default is 800x600x15.
2148

    
2149
@end table
2150

    
2151
@c man end
2152

    
2153

    
2154
More information is available at
2155
@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
2156

    
2157
@node Sparc32 System emulator
2158
@section Sparc32 System emulator
2159

    
2160
Use the executable @file{qemu-system-sparc} to simulate a SPARCstation
2161
5, SPARCstation 10, SPARCstation 20, SPARCserver 600MP (sun4m
2162
architecture), SPARCstation 2 (sun4c architecture), SPARCserver 1000,
2163
or SPARCcenter 2000 (sun4d architecture). The emulation is somewhat
2164
complete.  SMP up to 16 CPUs is supported, but Linux limits the number
2165
of usable CPUs to 4.
2166

    
2167
QEMU emulates the following sun4m/sun4d peripherals:
2168

    
2169
@itemize @minus
2170
@item
2171
IOMMU or IO-UNITs
2172
@item
2173
TCX Frame buffer
2174
@item
2175
Lance (Am7990) Ethernet
2176
@item
2177
Non Volatile RAM M48T08
2178
@item
2179
Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
2180
and power/reset logic
2181
@item
2182
ESP SCSI controller with hard disk and CD-ROM support
2183
@item
2184
Floppy drive (not on SS-600MP)
2185
@item
2186
CS4231 sound device (only on SS-5, not working yet)
2187
@end itemize
2188

    
2189
The number of peripherals is fixed in the architecture.  Maximum
2190
memory size depends on the machine type, for SS-5 it is 256MB and for
2191
others 2047MB.
2192

    
2193
Since version 0.8.2, QEMU uses OpenBIOS
2194
@url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
2195
firmware implementation. The goal is to implement a 100% IEEE
2196
1275-1994 (referred to as Open Firmware) compliant firmware.
2197

    
2198
A sample Linux 2.6 series kernel and ram disk image are available on
2199
the QEMU web site. Please note that currently NetBSD, OpenBSD or
2200
Solaris kernels don't work.
2201

    
2202
@c man begin OPTIONS
2203

    
2204
The following options are specific to the Sparc32 emulation:
2205

    
2206
@table @option
2207

    
2208
@item -g WxHx[xDEPTH]
2209

    
2210
Set the initial TCX graphic mode. The default is 1024x768x8, currently
2211
the only other possible mode is 1024x768x24.
2212

    
2213
@item -prom-env string
2214

    
2215
Set OpenBIOS variables in NVRAM, for example:
2216

    
2217
@example
2218
qemu-system-sparc -prom-env 'auto-boot?=false' \
2219
 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
2220
@end example
2221

    
2222
@item -M [SS-5|SS-10|SS-20|SS-600MP|SS-2|SS-1000|SS-2000]
2223

    
2224
Set the emulated machine type. Default is SS-5.
2225

    
2226
@end table
2227

    
2228
@c man end
2229

    
2230
@node Sparc64 System emulator
2231
@section Sparc64 System emulator
2232

    
2233
Use the executable @file{qemu-system-sparc64} to simulate a Sun4u machine.
2234
The emulator is not usable for anything yet.
2235

    
2236
QEMU emulates the following sun4u peripherals:
2237

    
2238
@itemize @minus
2239
@item
2240
UltraSparc IIi APB PCI Bridge
2241
@item
2242
PCI VGA compatible card with VESA Bochs Extensions
2243
@item
2244
Non Volatile RAM M48T59
2245
@item
2246
PC-compatible serial ports
2247
@end itemize
2248

    
2249
@node MIPS System emulator
2250
@section MIPS System emulator
2251

    
2252
Four executables cover simulation of 32 and 64-bit MIPS systems in
2253
both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
2254
@file{qemu-system-mips64} and @file{qemu-system-mips64el}.
2255
Five different machine types are emulated:
2256

    
2257
@itemize @minus
2258
@item
2259
A generic ISA PC-like machine "mips"
2260
@item
2261
The MIPS Malta prototype board "malta"
2262
@item
2263
An ACER Pica "pica61". This machine needs the 64-bit emulator.
2264
@item
2265
MIPS emulator pseudo board "mipssim"
2266
@item
2267
A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
2268
@end itemize
2269

    
2270
The generic emulation is supported by Debian 'Etch' and is able to
2271
install Debian into a virtual disk image. The following devices are
2272
emulated:
2273

    
2274
@itemize @minus
2275
@item
2276
A range of MIPS CPUs, default is the 24Kf
2277
@item
2278
PC style serial port
2279
@item
2280
PC style IDE disk
2281
@item
2282
NE2000 network card
2283
@end itemize
2284

    
2285
The Malta emulation supports the following devices:
2286

    
2287
@itemize @minus
2288
@item
2289
Core board with MIPS 24Kf CPU and Galileo system controller
2290
@item
2291
PIIX4 PCI/USB/SMbus controller
2292
@item
2293
The Multi-I/O chip's serial device
2294
@item
2295
PCnet32 PCI network card
2296
@item
2297
Malta FPGA serial device
2298
@item
2299
Cirrus VGA graphics card
2300
@end itemize
2301

    
2302
The ACER Pica emulation supports:
2303

    
2304
@itemize @minus
2305
@item
2306
MIPS R4000 CPU
2307
@item
2308
PC-style IRQ and DMA controllers
2309
@item
2310
PC Keyboard
2311
@item
2312
IDE controller
2313
@end itemize
2314

    
2315
The mipssim pseudo board emulation provides an environment similiar
2316
to what the proprietary MIPS emulator uses for running Linux.
2317
It supports:
2318

    
2319
@itemize @minus
2320
@item
2321
A range of MIPS CPUs, default is the 24Kf
2322
@item
2323
PC style serial port
2324
@item
2325
MIPSnet network emulation
2326
@end itemize
2327

    
2328
The MIPS Magnum R4000 emulation supports:
2329

    
2330
@itemize @minus
2331
@item
2332
MIPS R4000 CPU
2333
@item
2334
PC-style IRQ controller
2335
@item
2336
PC Keyboard
2337
@item
2338
SCSI controller
2339
@item
2340
G364 framebuffer
2341
@end itemize
2342

    
2343

    
2344
@node ARM System emulator
2345
@section ARM System emulator
2346

    
2347
Use the executable @file{qemu-system-arm} to simulate a ARM
2348
machine. The ARM Integrator/CP board is emulated with the following
2349
devices:
2350

    
2351
@itemize @minus
2352
@item
2353
ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
2354
@item
2355
Two PL011 UARTs
2356
@item
2357
SMC 91c111 Ethernet adapter
2358
@item
2359
PL110 LCD controller
2360
@item
2361
PL050 KMI with PS/2 keyboard and mouse.
2362
@item
2363
PL181 MultiMedia Card Interface with SD card.
2364
@end itemize
2365

    
2366
The ARM Versatile baseboard is emulated with the following devices:
2367

    
2368
@itemize @minus
2369
@item
2370
ARM926E, ARM1136 or Cortex-A8 CPU
2371
@item
2372
PL190 Vectored Interrupt Controller
2373
@item
2374
Four PL011 UARTs
2375
@item
2376
SMC 91c111 Ethernet adapter
2377
@item
2378
PL110 LCD controller
2379
@item
2380
PL050 KMI with PS/2 keyboard and mouse.
2381
@item
2382
PCI host bridge.  Note the emulated PCI bridge only provides access to
2383
PCI memory space.  It does not provide access to PCI IO space.
2384
This means some devices (eg. ne2k_pci NIC) are not usable, and others
2385
(eg. rtl8139 NIC) are only usable when the guest drivers use the memory
2386
mapped control registers.
2387
@item
2388
PCI OHCI USB controller.
2389
@item
2390
LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
2391
@item
2392
PL181 MultiMedia Card Interface with SD card.
2393
@end itemize
2394

    
2395
The ARM RealView Emulation baseboard is emulated with the following devices:
2396

    
2397
@itemize @minus
2398
@item
2399
ARM926E, ARM1136, ARM11MPCORE(x4) or Cortex-A8 CPU
2400
@item
2401
ARM AMBA Generic/Distributed Interrupt Controller
2402
@item
2403
Four PL011 UARTs
2404
@item
2405
SMC 91c111 Ethernet adapter
2406
@item
2407
PL110 LCD controller
2408
@item
2409
PL050 KMI with PS/2 keyboard and mouse
2410
@item
2411
PCI host bridge
2412
@item
2413
PCI OHCI USB controller
2414
@item
2415
LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
2416
@item
2417
PL181 MultiMedia Card Interface with SD card.
2418
@end itemize
2419

    
2420
The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
2421
and "Terrier") emulation includes the following peripherals:
2422

    
2423
@itemize @minus
2424
@item
2425
Intel PXA270 System-on-chip (ARM V5TE core)
2426
@item
2427
NAND Flash memory
2428
@item
2429
IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
2430
@item
2431
On-chip OHCI USB controller
2432
@item
2433
On-chip LCD controller
2434
@item
2435
On-chip Real Time Clock
2436
@item
2437
TI ADS7846 touchscreen controller on SSP bus
2438
@item
2439
Maxim MAX1111 analog-digital converter on I@math{^2}C bus
2440
@item
2441
GPIO-connected keyboard controller and LEDs
2442
@item
2443
Secure Digital card connected to PXA MMC/SD host
2444
@item
2445
Three on-chip UARTs
2446
@item
2447
WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
2448
@end itemize
2449

    
2450
The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
2451
following elements:
2452

    
2453
@itemize @minus
2454
@item
2455
Texas Instruments OMAP310 System-on-chip (ARM 925T core)
2456
@item
2457
ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
2458
@item
2459
On-chip LCD controller
2460
@item
2461
On-chip Real Time Clock
2462
@item
2463
TI TSC2102i touchscreen controller / analog-digital converter / Audio
2464
CODEC, connected through MicroWire and I@math{^2}S busses
2465
@item
2466
GPIO-connected matrix keypad
2467
@item
2468
Secure Digital card connected to OMAP MMC/SD host
2469
@item
2470
Three on-chip UARTs
2471
@end itemize
2472

    
2473
Nokia N800 and N810 internet tablets (known also as RX-34 and RX-44 / 48)
2474
emulation supports the following elements:
2475

    
2476
@itemize @minus
2477
@item
2478
Texas Instruments OMAP2420 System-on-chip (ARM 1136 core)
2479
@item
2480
RAM and non-volatile OneNAND Flash memories
2481
@item
2482
Display connected to EPSON remote framebuffer chip and OMAP on-chip
2483
display controller and a LS041y3 MIPI DBI-C controller
2484
@item
2485
TI TSC2301 (in N800) and TI TSC2005 (in N810) touchscreen controllers
2486
driven through SPI bus
2487
@item
2488
National Semiconductor LM8323-controlled qwerty keyboard driven
2489
through I@math{^2}C bus
2490
@item
2491
Secure Digital card connected to OMAP MMC/SD host
2492
@item
2493
Three OMAP on-chip UARTs and on-chip STI debugging console
2494
@item
2495
Mentor Graphics "Inventra" dual-role USB controller embedded in a TI
2496
TUSB6010 chip - only USB host mode is supported
2497
@item
2498
TI TMP105 temperature sensor driven through I@math{^2}C bus
2499
@item
2500
TI TWL92230C power management companion with an RTC on I@math{^2}C bus
2501
@item
2502
Nokia RETU and TAHVO multi-purpose chips with an RTC, connected
2503
through CBUS
2504
@end itemize
2505

    
2506
The Luminary Micro Stellaris LM3S811EVB emulation includes the following
2507
devices:
2508

    
2509
@itemize @minus
2510
@item
2511
Cortex-M3 CPU core.
2512
@item
2513
64k Flash and 8k SRAM.
2514
@item
2515
Timers, UARTs, ADC and I@math{^2}C interface.
2516
@item
2517
OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
2518
@end itemize
2519

    
2520
The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
2521
devices:
2522

    
2523
@itemize @minus
2524
@item
2525
Cortex-M3 CPU core.
2526
@item
2527
256k Flash and 64k SRAM.
2528
@item
2529
Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
2530
@item
2531
OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
2532
@end itemize
2533

    
2534
The Freecom MusicPal internet radio emulation includes the following
2535
elements:
2536

    
2537
@itemize @minus
2538
@item
2539
Marvell MV88W8618 ARM core.
2540
@item
2541
32 MB RAM, 256 KB SRAM, 8 MB flash.
2542
@item
2543
Up to 2 16550 UARTs
2544
@item
2545
MV88W8xx8 Ethernet controller
2546
@item
2547
MV88W8618 audio controller, WM8750 CODEC and mixer
2548
@item
2549
128?64 display with brightness control
2550
@item
2551
2 buttons, 2 navigation wheels with button function
2552
@end itemize
2553

    
2554
A Linux 2.6 test image is available on the QEMU web site. More
2555
information is available in the QEMU mailing-list archive.
2556

    
2557
@node ColdFire System emulator
2558
@section ColdFire System emulator
2559

    
2560
Use the executable @file{qemu-system-m68k} to simulate a ColdFire machine.
2561
The emulator is able to boot a uClinux kernel.
2562

    
2563
The M5208EVB emulation includes the following devices:
2564

    
2565
@itemize @minus
2566
@item
2567
MCF5208 ColdFire V2 Microprocessor (ISA A+ with EMAC).
2568
@item
2569
Three Two on-chip UARTs.
2570
@item
2571
Fast Ethernet Controller (FEC)
2572
@end itemize
2573

    
2574
The AN5206 emulation includes the following devices:
2575

    
2576
@itemize @minus
2577
@item
2578
MCF5206 ColdFire V2 Microprocessor.
2579
@item
2580
Two on-chip UARTs.
2581
@end itemize
2582

    
2583
@node QEMU User space emulator
2584
@chapter QEMU User space emulator
2585

    
2586
@menu
2587
* Supported Operating Systems ::
2588
* Linux User space emulator::
2589
* Mac OS X/Darwin User space emulator ::
2590
@end menu
2591

    
2592
@node Supported Operating Systems
2593
@section Supported Operating Systems
2594

    
2595
The following OS are supported in user space emulation:
2596

    
2597
@itemize @minus
2598
@item
2599
Linux (referred as qemu-linux-user)
2600
@item
2601
Mac OS X/Darwin (referred as qemu-darwin-user)
2602
@end itemize
2603

    
2604
@node Linux User space emulator
2605
@section Linux User space emulator
2606

    
2607
@menu
2608
* Quick Start::
2609
* Wine launch::
2610
* Command line options::
2611
* Other binaries::
2612
@end menu
2613

    
2614
@node Quick Start
2615
@subsection Quick Start
2616

    
2617
In order to launch a Linux process, QEMU needs the process executable
2618
itself and all the target (x86) dynamic libraries used by it.
2619

    
2620
@itemize
2621

    
2622
@item On x86, you can just try to launch any process by using the native
2623
libraries:
2624

    
2625
@example
2626
qemu-i386 -L / /bin/ls
2627
@end example
2628

    
2629
@code{-L /} tells that the x86 dynamic linker must be searched with a
2630
@file{/} prefix.
2631

    
2632
@item Since QEMU is also a linux process, you can launch qemu with
2633
qemu (NOTE: you can only do that if you compiled QEMU from the sources):
2634

    
2635
@example
2636
qemu-i386 -L / qemu-i386 -L / /bin/ls
2637
@end example
2638

    
2639
@item On non x86 CPUs, you need first to download at least an x86 glibc
2640
(@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
2641
@code{LD_LIBRARY_PATH} is not set:
2642

    
2643
@example
2644
unset LD_LIBRARY_PATH
2645
@end example
2646

    
2647
Then you can launch the precompiled @file{ls} x86 executable:
2648

    
2649
@example
2650
qemu-i386 tests/i386/ls
2651
@end example
2652
You can look at @file{qemu-binfmt-conf.sh} so that
2653
QEMU is automatically launched by the Linux kernel when you try to
2654
launch x86 executables. It requires the @code{binfmt_misc} module in the
2655
Linux kernel.
2656

    
2657
@item The x86 version of QEMU is also included. You can try weird things such as:
2658
@example
2659
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
2660
          /usr/local/qemu-i386/bin/ls-i386
2661
@end example
2662

    
2663
@end itemize
2664

    
2665
@node Wine launch
2666
@subsection Wine launch
2667

    
2668
@itemize
2669

    
2670
@item Ensure that you have a working QEMU with the x86 glibc
2671
distribution (see previous section). In order to verify it, you must be
2672
able to do:
2673

    
2674
@example
2675
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
2676
@end example
2677

    
2678
@item Download the binary x86 Wine install
2679
(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
2680

    
2681
@item Configure Wine on your account. Look at the provided script
2682
@file{/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous
2683
@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
2684

    
2685
@item Then you can try the example @file{putty.exe}:
2686

    
2687
@example
2688
qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
2689
          /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
2690
@end example
2691

    
2692
@end itemize
2693

    
2694
@node Command line options
2695
@subsection Command line options
2696

    
2697
@example
2698
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
2699
@end example
2700

    
2701
@table @option
2702
@item -h
2703
Print the help
2704
@item -L path
2705
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
2706
@item -s size
2707
Set the x86 stack size in bytes (default=524288)
2708
@end table
2709

    
2710
Debug options:
2711

    
2712
@table @option
2713
@item -d
2714
Activate log (logfile=/tmp/qemu.log)
2715
@item -p pagesize
2716
Act as if the host page size was 'pagesize' bytes
2717
@end table
2718

    
2719
Environment variables:
2720

    
2721
@table @env
2722
@item QEMU_STRACE
2723
Print system calls and arguments similar to the 'strace' program
2724
(NOTE: the actual 'strace' program will not work because the user
2725
space emulator hasn't implemented ptrace).  At the moment this is
2726
incomplete.  All system calls that don't have a specific argument
2727
format are printed with information for six arguments.  Many
2728
flag-style arguments don't have decoders and will show up as numbers.
2729
@end table
2730

    
2731
@node Other binaries
2732
@subsection Other binaries
2733

    
2734
@command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF
2735
binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
2736
configurations), and arm-uclinux bFLT format binaries.
2737

    
2738
@command{qemu-m68k} is capable of running semihosted binaries using the BDM
2739
(m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
2740
coldfire uClinux bFLT format binaries.
2741

    
2742
The binary format is detected automatically.
2743

    
2744
@command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries
2745
(Sparc64 CPU, 32 bit ABI).
2746

    
2747
@command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
2748
SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
2749

    
2750
@node Mac OS X/Darwin User space emulator
2751
@section Mac OS X/Darwin User space emulator
2752

    
2753
@menu
2754
* Mac OS X/Darwin Status::
2755
* Mac OS X/Darwin Quick Start::
2756
* Mac OS X/Darwin Command line options::
2757
@end menu
2758

    
2759
@node Mac OS X/Darwin Status
2760
@subsection Mac OS X/Darwin Status
2761

    
2762
@itemize @minus
2763
@item
2764
target x86 on x86: Most apps (Cocoa and Carbon too) works. [1]
2765
@item
2766
target PowerPC on x86: Not working as the ppc commpage can't be mapped (yet!)
2767
@item
2768
target PowerPC on PowerPC: Most apps (Cocoa and Carbon too) works. [1]
2769
@item
2770
target x86 on PowerPC: most utilities work. Cocoa and Carbon apps are not yet supported.
2771
@end itemize
2772

    
2773
[1] If you're host commpage can be executed by qemu.
2774

    
2775
@node Mac OS X/Darwin Quick Start
2776
@subsection Quick Start
2777

    
2778
In order to launch a Mac OS X/Darwin process, QEMU needs the process executable
2779
itself and all the target dynamic libraries used by it. If you don't have the FAT
2780
libraries (you're running Mac OS X/ppc) you'll need to obtain it from a Mac OS X
2781
CD or compile them by hand.
2782

    
2783
@itemize
2784

    
2785
@item On x86, you can just try to launch any process by using the native
2786
libraries:
2787

    
2788
@example
2789
qemu-i386 /bin/ls
2790
@end example
2791

    
2792
or to run the ppc version of the executable:
2793

    
2794
@example
2795
qemu-ppc /bin/ls
2796
@end example
2797

    
2798
@item On ppc, you'll have to tell qemu where your x86 libraries (and dynamic linker)
2799
are installed:
2800

    
2801
@example
2802
qemu-i386 -L /opt/x86_root/ /bin/ls
2803
@end example
2804

    
2805
@code{-L /opt/x86_root/} tells that the dynamic linker (dyld) path is in
2806
@file{/opt/x86_root/usr/bin/dyld}.
2807

    
2808
@end itemize
2809

    
2810
@node Mac OS X/Darwin Command line options
2811
@subsection Command line options
2812

    
2813
@example
2814
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
2815
@end example
2816

    
2817
@table @option
2818
@item -h
2819
Print the help
2820
@item -L path
2821
Set the library root path (default=/)
2822
@item -s size
2823
Set the stack size in bytes (default=524288)
2824
@end table
2825

    
2826
Debug options:
2827

    
2828
@table @option
2829
@item -d
2830
Activate log (logfile=/tmp/qemu.log)
2831
@item -p pagesize
2832
Act as if the host page size was 'pagesize' bytes
2833
@end table
2834

    
2835
@node compilation
2836
@chapter Compilation from the sources
2837

    
2838
@menu
2839
* Linux/Unix::
2840
* Windows::
2841
* Cross compilation for Windows with Linux::
2842
* Mac OS X::
2843
@end menu
2844

    
2845
@node Linux/Unix
2846
@section Linux/Unix
2847

    
2848
@subsection Compilation
2849

    
2850
First you must decompress the sources:
2851
@example
2852
cd /tmp
2853
tar zxvf qemu-x.y.z.tar.gz
2854
cd qemu-x.y.z
2855
@end example
2856

    
2857
Then you configure QEMU and build it (usually no options are needed):
2858
@example
2859
./configure
2860
make
2861
@end example
2862

    
2863
Then type as root user:
2864
@example
2865
make install
2866
@end example
2867
to install QEMU in @file{/usr/local}.
2868

    
2869
@subsection GCC version
2870

    
2871
In order to compile QEMU successfully, it is very important that you
2872
have the right tools. The most important one is gcc. On most hosts and
2873
in particular on x86 ones, @emph{gcc 4.x is not supported}. If your
2874
Linux distribution includes a gcc 4.x compiler, you can usually
2875
install an older version (it is invoked by @code{gcc32} or
2876
@code{gcc34}). The QEMU configure script automatically probes for
2877
these older versions so that usually you don't have to do anything.
2878

    
2879
@node Windows
2880
@section Windows
2881

    
2882
@itemize
2883
@item Install the current versions of MSYS and MinGW from
2884
@url{http://www.mingw.org/}. You can find detailed installation
2885
instructions in the download section and the FAQ.
2886

    
2887
@item Download
2888
the MinGW development library of SDL 1.2.x
2889
(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
2890
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
2891
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
2892
directory. Edit the @file{sdl-config} script so that it gives the
2893
correct SDL directory when invoked.
2894

    
2895
@item Extract the current version of QEMU.
2896

    
2897
@item Start the MSYS shell (file @file{msys.bat}).
2898

    
2899
@item Change to the QEMU directory. Launch @file{./configure} and
2900
@file{make}.  If you have problems using SDL, verify that
2901
@file{sdl-config} can be launched from the MSYS command line.
2902

    
2903
@item You can install QEMU in @file{Program Files/Qemu} by typing
2904
@file{make install}. Don't forget to copy @file{SDL.dll} in
2905
@file{Program Files/Qemu}.
2906

    
2907
@end itemize
2908

    
2909
@node Cross compilation for Windows with Linux
2910
@section Cross compilation for Windows with Linux
2911

    
2912
@itemize
2913
@item
2914
Install the MinGW cross compilation tools available at
2915
@url{http://www.mingw.org/}.
2916

    
2917
@item
2918
Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
2919
unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
2920
variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
2921
the QEMU configuration script.
2922

    
2923
@item
2924
Configure QEMU for Windows cross compilation:
2925
@example
2926
./configure --enable-mingw32
2927
@end example
2928
If necessary, you can change the cross-prefix according to the prefix
2929
chosen for the MinGW tools with --cross-prefix. You can also use
2930
--prefix to set the Win32 install path.
2931

    
2932
@item You can install QEMU in the installation directory by typing
2933
@file{make install}. Don't forget to copy @file{SDL.dll} in the
2934
installation directory.
2935

    
2936
@end itemize
2937

    
2938
Note: Currently, Wine does not seem able to launch
2939
QEMU for Win32.
2940

    
2941
@node Mac OS X
2942
@section Mac OS X
2943

    
2944
The Mac OS X patches are not fully merged in QEMU, so you should look
2945
at the QEMU mailing list archive to have all the necessary
2946
information.
2947

    
2948
@node Index
2949
@chapter Index
2950
@printindex cp
2951

    
2952
@bye