Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 00f82b8a

History | View | Annotate | Download (84.8 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
@end itemize
91

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

    
94
@node Installation
95
@chapter Installation
96

    
97
If you want to compile QEMU yourself, see @ref{compilation}.
98

    
99
@menu
100
* install_linux::   Linux
101
* install_windows:: Windows
102
* install_mac::     Macintosh
103
@end menu
104

    
105
@node install_linux
106
@section Linux
107

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

    
111
@node install_windows
112
@section Windows
113

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

    
117
@node install_mac
118
@section Mac OS X
119

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

    
123
@node QEMU PC System emulator
124
@chapter QEMU PC System emulator
125

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

    
141
@node pcsys_introduction
142
@section Introduction
143

    
144
@c man begin DESCRIPTION
145

    
146
The QEMU PC System emulator simulates the
147
following peripherals:
148

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

    
179
SMP is supported with up to 255 CPUs.
180

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

    
184
QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
185
VGA BIOS.
186

    
187
QEMU uses YM3812 emulation by Tatsuyuki Satoh.
188

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

    
192
@c man end
193

    
194
@node pcsys_quickstart
195
@section Quick Start
196

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

    
199
@example
200
qemu linux.img
201
@end example
202

    
203
Linux should boot and give you a prompt.
204

    
205
@node sec_invocation
206
@section Invocation
207

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

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

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

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

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

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

    
238
@item -drive @var{option}[,@var{option}[,@var{option}[,...]]]
239

    
240
Define a new drive. Valid options are:
241

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

    
266
Instead of @option{-cdrom} you can use:
267
@example
268
qemu -drive file=file,index=2,media=cdrom
269
@end example
270

    
271
Instead of @option{-hda}, @option{-hdb}, @option{-hdc}, @option{-hdd}, you can
272
use:
273
@example
274
qemu -drive file=file,index=0,media=disk
275
qemu -drive file=file,index=1,media=disk
276
qemu -drive file=file,index=2,media=disk
277
qemu -drive file=file,index=3,media=disk
278
@end example
279

    
280
You can connect a CDROM to the slave of ide0:
281
@example
282
qemu -drive file=file,if=ide,index=1,media=cdrom
283
@end example
284

    
285
If you don't specify the "file=" argument, you define an empty drive:
286
@example
287
qemu -drive if=ide,index=1,media=cdrom
288
@end example
289

    
290
You can connect a SCSI disk with unit ID 6 on the bus #0:
291
@example
292
qemu -drive file=file,if=scsi,bus=0,unit=6
293
@end example
294

    
295
Instead of @option{-fda}, @option{-fdb}, you can use:
296
@example
297
qemu -drive file=file,index=0,if=floppy
298
qemu -drive file=file,index=1,if=floppy
299
@end example
300

    
301
By default, @var{interface} is "ide" and @var{index} is automatically
302
incremented:
303
@example
304
qemu -drive file=a -drive file=b"
305
@end example
306
is interpreted like:
307
@example
308
qemu -hda a -hdb b
309
@end example
310

    
311
@item -boot [a|c|d|n]
312
Boot on floppy (a), hard disk (c), CD-ROM (d), or Etherboot (n). Hard disk boot
313
is the default.
314

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

    
320
@item -no-fd-bootchk
321
Disable boot signature checking for floppy disks in Bochs BIOS. It may
322
be needed to boot from old floppy disks.
323

    
324
@item -m @var{megs}
325
Set virtual RAM size to @var{megs} megabytes. Default is 128 MiB.  Optionally,
326
a suffix of ``M'' or ``G'' can be used to signify a value in megabytes or
327
gigabytes respectively.
328

    
329
@item -smp @var{n}
330
Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
331
CPUs are supported. On Sparc32 target, Linux limits the number of usable CPUs
332
to 4.
333

    
334
@item -audio-help
335

    
336
Will show the audio subsystem help: list of drivers, tunable
337
parameters.
338

    
339
@item -soundhw @var{card1}[,@var{card2},...] or -soundhw all
340

    
341
Enable audio and selected sound hardware. Use ? to print all
342
available sound hardware.
343

    
344
@example
345
qemu -soundhw sb16,adlib hda
346
qemu -soundhw es1370 hda
347
qemu -soundhw ac97 hda
348
qemu -soundhw all hda
349
qemu -soundhw ?
350
@end example
351

    
352
Note that Linux's i810_audio OSS kernel (for AC97) module might
353
require manually specifying clocking.
354

    
355
@example
356
modprobe i810_audio clocking=48000
357
@end example
358

    
359
@item -localtime
360
Set the real time clock to local time (the default is to UTC
361
time). This option is needed to have correct date in MS-DOS or
362
Windows.
363

    
364
@item -startdate @var{date}
365
Set the initial date of the real time clock. Valid format for
366
@var{date} are: @code{now} or @code{2006-06-17T16:01:21} or
367
@code{2006-06-17}. The default value is @code{now}.
368

    
369
@item -pidfile @var{file}
370
Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
371
from a script.
372

    
373
@item -daemonize
374
Daemonize the QEMU process after initialization.  QEMU will not detach from
375
standard IO until it is ready to receive connections on any of its devices.
376
This option is a useful way for external programs to launch QEMU without having
377
to cope with initialization race conditions.
378

    
379
@item -win2k-hack
380
Use it when installing Windows 2000 to avoid a disk full bug. After
381
Windows 2000 is installed, you no longer need this option (this option
382
slows down the IDE transfers).
383

    
384
@item -option-rom @var{file}
385
Load the contents of @var{file} as an option ROM.
386
This option is useful to load things like EtherBoot.
387

    
388
@item -name @var{name}
389
Sets the @var{name} of the guest.
390
This name will be display in the SDL window caption.
391
The @var{name} will also be used for the VNC server.
392

    
393
@end table
394

    
395
Display options:
396
@table @option
397

    
398
@item -nographic
399

    
400
Normally, QEMU uses SDL to display the VGA output. With this option,
401
you can totally disable graphical output so that QEMU is a simple
402
command line application. The emulated serial port is redirected on
403
the console. Therefore, you can still use QEMU to debug a Linux kernel
404
with a serial console.
405

    
406
@item -curses
407

    
408
Normally, QEMU uses SDL to display the VGA output.  With this option,
409
QEMU can display the VGA output when in text mode using a 
410
curses/ncurses interface.  Nothing is displayed in graphical mode.
411

    
412
@item -no-frame
413

    
414
Do not use decorations for SDL windows and start them using the whole
415
available screen space. This makes the using QEMU in a dedicated desktop
416
workspace more convenient.
417

    
418
@item -no-quit
419

    
420
Disable SDL window close capability.
421

    
422
@item -full-screen
423
Start in full screen.
424

    
425
@item -vnc @var{display}[,@var{option}[,@var{option}[,...]]]
426

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

    
435
@table @code
436

    
437
@item @var{host}:@var{d}
438

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

    
443
@item @code{unix}:@var{path}
444

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

    
448
@item none
449

    
450
VNC is initialized but not started. The monitor @code{change} command
451
can be used to later start the VNC server.
452

    
453
@end table
454

    
455
Following the @var{display} value there may be one or more @var{option} flags
456
separated by commas. Valid options are
457

    
458
@table @code
459

    
460
@item reverse
461

    
462
Connect to a listening VNC client via a ``reverse'' connection. The
463
client is specified by the @var{display}. For reverse network
464
connections (@var{host}:@var{d},@code{reverse}), the @var{d} argument
465
is a TCP port number, not a display number.
466

    
467
@item password
468

    
469
Require that password based authentication is used for client connections.
470
The password must be set separately using the @code{change} command in the
471
@ref{pcsys_monitor}
472

    
473
@item tls
474

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

    
480
@item x509=@var{/path/to/certificate/dir}
481

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

    
489
@item x509verify=@var{/path/to/certificate/dir}
490

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

    
502
@end table
503

    
504
@item -k @var{language}
505

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

    
512
The available layouts are:
513
@example
514
ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
515
da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
516
de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
517
@end example
518

    
519
The default is @code{en-us}.
520

    
521
@end table
522

    
523
USB options:
524
@table @option
525

    
526
@item -usb
527
Enable the USB driver (will be the default soon)
528

    
529
@item -usbdevice @var{devname}
530
Add the USB device @var{devname}. @xref{usb_devices}.
531

    
532
@table @code
533

    
534
@item mouse
535
Virtual Mouse. This will override the PS/2 mouse emulation when activated.
536

    
537
@item tablet
538
Pointer device that uses absolute coordinates (like a touchscreen). This
539
means qemu is able to report the mouse position without having to grab the
540
mouse. Also overrides the PS/2 mouse emulation when activated.
541

    
542
@item disk:file
543
Mass storage device based on file
544

    
545
@item host:bus.addr
546
Pass through the host device identified by bus.addr (Linux only).
547

    
548
@item host:vendor_id:product_id
549
Pass through the host device identified by vendor_id:product_id (Linux only).
550

    
551
@item serial:[vendorid=@var{vendor_id}][,productid=@var{product_id}]:@var{dev}
552
Serial converter to host character device @var{dev}, see @code{-serial} for the
553
available devices.
554

    
555
@item braille
556
Braille device.  This will use BrlAPI to display the braille output on a real
557
or fake device.
558

    
559
@end table
560

    
561
@end table
562

    
563
Network options:
564

    
565
@table @option
566

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

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

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

    
593
@example
594
qemu linux.img -net nic -net tap
595
@end example
596

    
597
More complicated example (two NICs, each one connected to a TAP device)
598
@example
599
qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
600
               -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
601
@end example
602

    
603

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

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

    
613
Example:
614
@example
615
# launch a first QEMU instance
616
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
617
               -net socket,listen=:1234
618
# connect the VLAN 0 of this instance to the VLAN 0
619
# of the first instance
620
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
621
               -net socket,connect=127.0.0.1:1234
622
@end example
623

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

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

    
641
Example:
642
@example
643
# launch one QEMU instance
644
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
645
               -net socket,mcast=230.0.0.1:1234
646
# launch another QEMU instance on same "bus"
647
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
648
               -net socket,mcast=230.0.0.1:1234
649
# launch yet another QEMU instance on same "bus"
650
qemu linux.img -net nic,macaddr=52:54:00:12:34:58 \
651
               -net socket,mcast=230.0.0.1:1234
652
@end example
653

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

    
664
@item -net none
665
Indicate that no network devices should be configured. It is used to
666
override the default configuration (@option{-net nic -net user}) which
667
is activated if no @option{-net} options are provided.
668

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

    
676
@item -bootp @var{file}
677
When using the user mode network stack, broadcast @var{file} as the BOOTP
678
filename.  In conjunction with @option{-tftp}, this can be used to network boot
679
a guest from a local directory.
680

    
681
Example (using pxelinux):
682
@example
683
qemu -hda linux.img -boot n -tftp /path/to/tftp/files -bootp /pxelinux.0
684
@end example
685

    
686
@item -smb @var{dir}
687
When using the user mode network stack, activate a built-in SMB
688
server so that Windows OSes can access to the host files in @file{@var{dir}}
689
transparently.
690

    
691
In the guest Windows OS, the line:
692
@example
693
10.0.2.4 smbserver
694
@end example
695
must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
696
or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
697

    
698
Then @file{@var{dir}} can be accessed in @file{\\smbserver\qemu}.
699

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

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

    
706
When using the user mode network stack, redirect incoming TCP or UDP
707
connections to the host port @var{host-port} to the guest
708
@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
709
is not specified, its value is 10.0.2.15 (default address given by the
710
built-in DHCP server).
711

    
712
For example, to redirect host X11 connection from screen 1 to guest
713
screen 0, use the following:
714

    
715
@example
716
# on the host
717
qemu -redir tcp:6001::6000 [...]
718
# this host xterm should open in the guest X11 server
719
xterm -display :1
720
@end example
721

    
722
To redirect telnet connections from host port 5555 to telnet port on
723
the guest, use the following:
724

    
725
@example
726
# on the host
727
qemu -redir tcp:5555::23 [...]
728
telnet localhost 5555
729
@end example
730

    
731
Then when you use on the host @code{telnet localhost 5555}, you
732
connect to the guest telnet server.
733

    
734
@end table
735

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

    
740
@table @option
741

    
742
@item -kernel @var{bzImage}
743
Use @var{bzImage} as kernel image.
744

    
745
@item -append @var{cmdline}
746
Use @var{cmdline} as kernel command line
747

    
748
@item -initrd @var{file}
749
Use @var{file} as initial ram disk.
750

    
751
@end table
752

    
753
Debug/Expert options:
754
@table @option
755

    
756
@item -serial @var{dev}
757
Redirect the virtual serial port to host character device
758
@var{dev}. The default device is @code{vc} in graphical mode and
759
@code{stdio} in non graphical mode.
760

    
761
This option can be used several times to simulate up to 4 serials
762
ports.
763

    
764
Use @code{-serial none} to disable all serial ports.
765

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

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

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

    
826

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

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

    
855
@item unix:@var{path}[,server][,nowait]
856
A unix domain socket is used instead of a tcp socket.  The option works the
857
same as if you had specified @code{-serial tcp} except the unix domain socket
858
@var{path} is used for connections.
859

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

    
872
@item braille
873
Braille device.  This will use BrlAPI to display the braille output on a real
874
or fake device.
875

    
876
@end table
877

    
878
@item -parallel @var{dev}
879
Redirect the virtual parallel port to host device @var{dev} (same
880
devices as the serial port). On Linux hosts, @file{/dev/parportN} can
881
be used to use hardware devices connected on the corresponding host
882
parallel port.
883

    
884
This option can be used several times to simulate up to 3 parallel
885
ports.
886

    
887
Use @code{-parallel none} to disable all parallel ports.
888

    
889
@item -monitor @var{dev}
890
Redirect the monitor to host device @var{dev} (same devices as the
891
serial port).
892
The default device is @code{vc} in graphical mode and @code{stdio} in
893
non graphical mode.
894

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

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

    
924
@item -L path
925
Set the directory for the BIOS, VGA BIOS and keymaps.
926

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

    
933
@item -no-acpi
934
Disable ACPI (Advanced Configuration and Power Interface) support. Use
935
it if your guest OS complains about ACPI problems (PC target machine
936
only).
937

    
938
@item -no-reboot
939
Exit instead of rebooting.
940

    
941
@item -no-shutdown
942
Don't exit QEMU on guest shutdown, but instead only stop the emulation.
943
This allows for instance switching to monitor to commit changes to the
944
disk image.
945

    
946
@item -loadvm file
947
Start right away with a saved state (@code{loadvm} in monitor)
948

    
949
@item -semihosting
950
Enable semihosting syscall emulation (ARM and M68K target machines only).
951

    
952
On ARM this implements the "Angel" interface.
953
On M68K this implements the "ColdFire GDB" interface used by libgloss.
954

    
955
Note that this allows guest direct access to the host filesystem,
956
so should only be used with trusted guest OS.
957
@end table
958

    
959
@c man end
960

    
961
@node pcsys_keys
962
@section Keys
963

    
964
@c man begin OPTIONS
965

    
966
During the graphical emulation, you can use the following keys:
967
@table @key
968
@item Ctrl-Alt-f
969
Toggle full screen
970

    
971
@item Ctrl-Alt-n
972
Switch to virtual console 'n'. Standard console mappings are:
973
@table @emph
974
@item 1
975
Target system display
976
@item 2
977
Monitor
978
@item 3
979
Serial port
980
@end table
981

    
982
@item Ctrl-Alt
983
Toggle mouse and keyboard grab.
984
@end table
985

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

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

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

    
1010
@ignore
1011

    
1012
@c man begin SEEALSO
1013
The HTML documentation of QEMU for more precise information and Linux
1014
user mode emulator invocation.
1015
@c man end
1016

    
1017
@c man begin AUTHOR
1018
Fabrice Bellard
1019
@c man end
1020

    
1021
@end ignore
1022

    
1023
@node pcsys_monitor
1024
@section QEMU Monitor
1025

    
1026
The QEMU monitor is used to give complex commands to the QEMU
1027
emulator. You can use it to:
1028

    
1029
@itemize @minus
1030

    
1031
@item
1032
Remove or insert removable media images
1033
(such as CD-ROM or floppies).
1034

    
1035
@item
1036
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
1037
from a disk file.
1038

    
1039
@item Inspect the VM state without an external debugger.
1040

    
1041
@end itemize
1042

    
1043
@subsection Commands
1044

    
1045
The following commands are available:
1046

    
1047
@table @option
1048

    
1049
@item help or ? [@var{cmd}]
1050
Show the help for all commands or just for command @var{cmd}.
1051

    
1052
@item commit
1053
Commit changes to the disk images (if -snapshot is used).
1054

    
1055
@item info @var{subcommand}
1056
Show various information about the system state.
1057

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

    
1081
@item q or quit
1082
Quit the emulator.
1083

    
1084
@item eject [-f] @var{device}
1085
Eject a removable medium (use -f to force it).
1086

    
1087
@item change @var{device} @var{setting}
1088

    
1089
Change the configuration of a device.
1090

    
1091
@table @option
1092
@item change @var{diskdevice} @var{filename}
1093
Change the medium for a removable disk device to point to @var{filename}. eg
1094

    
1095
@example
1096
(qemu) change ide1-cd0 /path/to/some.iso
1097
@end example
1098

    
1099
@item change vnc @var{display},@var{options}
1100
Change the configuration of the VNC server. The valid syntax for @var{display}
1101
and @var{options} are described at @ref{sec_invocation}. eg
1102

    
1103
@example
1104
(qemu) change vnc localhost:1
1105
@end example
1106

    
1107
@item change vnc password
1108

    
1109
Change the password associated with the VNC server. The monitor will prompt for
1110
the new password to be entered. VNC passwords are only significant upto 8 letters.
1111
eg.
1112

    
1113
@example
1114
(qemu) change vnc password
1115
Password: ********
1116
@end example
1117

    
1118
@end table
1119

    
1120
@item screendump @var{filename}
1121
Save screen into PPM image @var{filename}.
1122

    
1123
@item mouse_move @var{dx} @var{dy} [@var{dz}]
1124
Move the active mouse to the specified coordinates @var{dx} @var{dy}
1125
with optional scroll axis @var{dz}.
1126

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

    
1130
@item mouse_set @var{index}
1131
Set which mouse device receives events at given @var{index}, index
1132
can be obtained with
1133
@example
1134
info mice
1135
@end example
1136

    
1137
@item wavcapture @var{filename} [@var{frequency} [@var{bits} [@var{channels}]]]
1138
Capture audio into @var{filename}. Using sample rate @var{frequency}
1139
bits per sample @var{bits} and number of channels @var{channels}.
1140

    
1141
Defaults:
1142
@itemize @minus
1143
@item Sample rate = 44100 Hz - CD quality
1144
@item Bits = 16
1145
@item Number of channels = 2 - Stereo
1146
@end itemize
1147

    
1148
@item stopcapture @var{index}
1149
Stop capture with a given @var{index}, index can be obtained with
1150
@example
1151
info capture
1152
@end example
1153

    
1154
@item log @var{item1}[,...]
1155
Activate logging of the specified items to @file{/tmp/qemu.log}.
1156

    
1157
@item savevm [@var{tag}|@var{id}]
1158
Create a snapshot of the whole virtual machine. If @var{tag} is
1159
provided, it is used as human readable identifier. If there is already
1160
a snapshot with the same tag or ID, it is replaced. More info at
1161
@ref{vm_snapshots}.
1162

    
1163
@item loadvm @var{tag}|@var{id}
1164
Set the whole virtual machine to the snapshot identified by the tag
1165
@var{tag} or the unique snapshot ID @var{id}.
1166

    
1167
@item delvm @var{tag}|@var{id}
1168
Delete the snapshot identified by @var{tag} or @var{id}.
1169

    
1170
@item stop
1171
Stop emulation.
1172

    
1173
@item c or cont
1174
Resume emulation.
1175

    
1176
@item gdbserver [@var{port}]
1177
Start gdbserver session (default @var{port}=1234)
1178

    
1179
@item x/fmt @var{addr}
1180
Virtual memory dump starting at @var{addr}.
1181

    
1182
@item xp /@var{fmt} @var{addr}
1183
Physical memory dump starting at @var{addr}.
1184

    
1185
@var{fmt} is a format which tells the command how to format the
1186
data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
1187

    
1188
@table @var
1189
@item count
1190
is the number of items to be dumped.
1191

    
1192
@item format
1193
can be x (hex), d (signed decimal), u (unsigned decimal), o (octal),
1194
c (char) or i (asm instruction).
1195

    
1196
@item size
1197
can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
1198
@code{h} or @code{w} can be specified with the @code{i} format to
1199
respectively select 16 or 32 bit code instruction size.
1200

    
1201
@end table
1202

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

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

    
1238
@item p or print/@var{fmt} @var{expr}
1239

    
1240
Print expression value. Only the @var{format} part of @var{fmt} is
1241
used.
1242

    
1243
@item sendkey @var{keys}
1244

    
1245
Send @var{keys} to the emulator. Use @code{-} to press several keys
1246
simultaneously. Example:
1247
@example
1248
sendkey ctrl-alt-f1
1249
@end example
1250

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

    
1254
@item system_reset
1255

    
1256
Reset the system.
1257

    
1258
@item usb_add @var{devname}
1259

    
1260
Add the USB device @var{devname}.  For details of available devices see
1261
@ref{usb_devices}
1262

    
1263
@item usb_del @var{devname}
1264

    
1265
Remove the USB device @var{devname} from the QEMU virtual USB
1266
hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
1267
command @code{info usb} to see the devices you can remove.
1268

    
1269
@end table
1270

    
1271
@subsection Integer expressions
1272

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

    
1277
@node disk_images
1278
@section Disk Images
1279

    
1280
Since version 0.6.1, QEMU supports many disk image formats, including
1281
growable disk images (their size increase as non empty sectors are
1282
written), compressed and encrypted disk images. Version 0.8.3 added
1283
the new qcow2 disk image format which is essential to support VM
1284
snapshots.
1285

    
1286
@menu
1287
* disk_images_quickstart::    Quick start for disk image creation
1288
* disk_images_snapshot_mode:: Snapshot mode
1289
* vm_snapshots::              VM snapshots
1290
* qemu_img_invocation::       qemu-img Invocation
1291
* host_drives::               Using host drives
1292
* disk_images_fat_images::    Virtual FAT disk images
1293
@end menu
1294

    
1295
@node disk_images_quickstart
1296
@subsection Quick start for disk image creation
1297

    
1298
You can create a disk image with the command:
1299
@example
1300
qemu-img create myimage.img mysize
1301
@end example
1302
where @var{myimage.img} is the disk image filename and @var{mysize} is its
1303
size in kilobytes. You can add an @code{M} suffix to give the size in
1304
megabytes and a @code{G} suffix for gigabytes.
1305

    
1306
See @ref{qemu_img_invocation} for more information.
1307

    
1308
@node disk_images_snapshot_mode
1309
@subsection Snapshot mode
1310

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

    
1317
@node vm_snapshots
1318
@subsection VM snapshots
1319

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

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

    
1330
Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
1331
a VM snapshot. @code{info snapshots} lists the available snapshots
1332
with their associated information:
1333

    
1334
@example
1335
(qemu) info snapshots
1336
Snapshot devices: hda
1337
Snapshot list (from hda):
1338
ID        TAG                 VM SIZE                DATE       VM CLOCK
1339
1         start                   41M 2006-08-06 12:38:02   00:00:14.954
1340
2                                 40M 2006-08-06 12:43:29   00:00:18.633
1341
3         msys                    40M 2006-08-06 12:44:04   00:00:23.514
1342
@end example
1343

    
1344
A VM snapshot is made of a VM state info (its size is shown in
1345
@code{info snapshots}) and a snapshot of every writable disk image.
1346
The VM state info is stored in the first @code{qcow2} non removable
1347
and writable block device. The disk image snapshots are stored in
1348
every disk image. The size of a snapshot in a disk image is difficult
1349
to evaluate and is not shown by @code{info snapshots} because the
1350
associated disk sectors are shared among all the snapshots to save
1351
disk space (otherwise each snapshot would need a full copy of all the
1352
disk images).
1353

    
1354
When using the (unrelated) @code{-snapshot} option
1355
(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
1356
but they are deleted as soon as you exit QEMU.
1357

    
1358
VM snapshots currently have the following known limitations:
1359
@itemize
1360
@item
1361
They cannot cope with removable devices if they are removed or
1362
inserted after a snapshot is done.
1363
@item
1364
A few device drivers still have incomplete snapshot support so their
1365
state is not saved or restored properly (in particular USB).
1366
@end itemize
1367

    
1368
@node qemu_img_invocation
1369
@subsection @code{qemu-img} Invocation
1370

    
1371
@include qemu-img.texi
1372

    
1373
@node host_drives
1374
@subsection Using host drives
1375

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

    
1379
@subsubsection Linux
1380

    
1381
On Linux, you can directly use the host device filename instead of a
1382
disk image filename provided you have enough privileges to access
1383
it. For example, use @file{/dev/cdrom} to access to the CDROM or
1384
@file{/dev/fd0} for the floppy.
1385

    
1386
@table @code
1387
@item CD
1388
You can specify a CDROM device even if no CDROM is loaded. QEMU has
1389
specific code to detect CDROM insertion or removal. CDROM ejection by
1390
the guest OS is supported. Currently only data CDs are supported.
1391
@item Floppy
1392
You can specify a floppy device even if no floppy is loaded. Floppy
1393
removal is currently not detected accurately (if you change floppy
1394
without doing floppy access while the floppy is not loaded, the guest
1395
OS will think that the same floppy is loaded).
1396
@item Hard disks
1397
Hard disks can be used. Normally you must specify the whole disk
1398
(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
1399
see it as a partitioned disk. WARNING: unless you know what you do, it
1400
is better to only make READ-ONLY accesses to the hard disk otherwise
1401
you may corrupt your host data (use the @option{-snapshot} command
1402
line option or modify the device permissions accordingly).
1403
@end table
1404

    
1405
@subsubsection Windows
1406

    
1407
@table @code
1408
@item CD
1409
The preferred syntax is the drive letter (e.g. @file{d:}). The
1410
alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
1411
supported as an alias to the first CDROM drive.
1412

    
1413
Currently there is no specific code to handle removable media, so it
1414
is better to use the @code{change} or @code{eject} monitor commands to
1415
change or eject media.
1416
@item Hard disks
1417
Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
1418
where @var{N} is the drive number (0 is the first hard disk).
1419

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

    
1426

    
1427
@subsubsection Mac OS X
1428

    
1429
@file{/dev/cdrom} is an alias to the first CDROM.
1430

    
1431
Currently there is no specific code to handle removable media, so it
1432
is better to use the @code{change} or @code{eject} monitor commands to
1433
change or eject media.
1434

    
1435
@node disk_images_fat_images
1436
@subsection Virtual FAT disk images
1437

    
1438
QEMU can automatically create a virtual FAT disk image from a
1439
directory tree. In order to use it, just type:
1440

    
1441
@example
1442
qemu linux.img -hdb fat:/my_directory
1443
@end example
1444

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

    
1449
Floppies can be emulated with the @code{:floppy:} option:
1450

    
1451
@example
1452
qemu linux.img -fda fat:floppy:/my_directory
1453
@end example
1454

    
1455
A read/write support is available for testing (beta stage) with the
1456
@code{:rw:} option:
1457

    
1458
@example
1459
qemu linux.img -fda fat:floppy:rw:/my_directory
1460
@end example
1461

    
1462
What you should @emph{never} do:
1463
@itemize
1464
@item use non-ASCII filenames ;
1465
@item use "-snapshot" together with ":rw:" ;
1466
@item expect it to work when loadvm'ing ;
1467
@item write to the FAT directory on the host system while accessing it with the guest system.
1468
@end itemize
1469

    
1470
@node pcsys_network
1471
@section Network emulation
1472

    
1473
QEMU can simulate several network cards (PCI or ISA cards on the PC
1474
target) and can connect them to an arbitrary number of Virtual Local
1475
Area Networks (VLANs). Host TAP devices can be connected to any QEMU
1476
VLAN. VLAN can be connected between separate instances of QEMU to
1477
simulate large networks. For simpler usage, a non privileged user mode
1478
network stack can replace the TAP device to have a basic network
1479
connection.
1480

    
1481
@subsection VLANs
1482

    
1483
QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
1484
connection between several network devices. These devices can be for
1485
example QEMU virtual Ethernet cards or virtual Host ethernet devices
1486
(TAP devices).
1487

    
1488
@subsection Using TAP network interfaces
1489

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

    
1494
@subsubsection Linux host
1495

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

    
1503
See @ref{sec_invocation} to have examples of command lines using the
1504
TAP network interfaces.
1505

    
1506
@subsubsection Windows host
1507

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

    
1513
@subsection Using the user mode network stack
1514

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

    
1520
@example
1521

    
1522
         QEMU VLAN      <------>  Firewall/DHCP server <-----> Internet
1523
                           |          (10.0.2.2)
1524
                           |
1525
                           ---->  DNS server (10.0.2.3)
1526
                           |
1527
                           ---->  SMB server (10.0.2.4)
1528
@end example
1529

    
1530
The QEMU VM behaves as if it was behind a firewall which blocks all
1531
incoming connections. You can use a DHCP client to automatically
1532
configure the network in the QEMU VM. The DHCP server assign addresses
1533
to the hosts starting from 10.0.2.15.
1534

    
1535
In order to check that the user mode network is working, you can ping
1536
the address 10.0.2.2 and verify that you got an address in the range
1537
10.0.2.x from the QEMU virtual DHCP server.
1538

    
1539
Note that @code{ping} is not supported reliably to the internet as it
1540
would require root privileges. It means you can only ping the local
1541
router (10.0.2.2).
1542

    
1543
When using the built-in TFTP server, the router is also the TFTP
1544
server.
1545

    
1546
When using the @option{-redir} option, TCP or UDP connections can be
1547
redirected from the host to the guest. It allows for example to
1548
redirect X11, telnet or SSH connections.
1549

    
1550
@subsection Connecting VLANs between QEMU instances
1551

    
1552
Using the @option{-net socket} option, it is possible to make VLANs
1553
that span several QEMU instances. See @ref{sec_invocation} to have a
1554
basic example.
1555

    
1556
@node direct_linux_boot
1557
@section Direct Linux Boot
1558

    
1559
This section explains how to launch a Linux kernel inside QEMU without
1560
having to make a full bootable image. It is very useful for fast Linux
1561
kernel testing.
1562

    
1563
The syntax is:
1564
@example
1565
qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1566
@end example
1567

    
1568
Use @option{-kernel} to provide the Linux kernel image and
1569
@option{-append} to give the kernel command line arguments. The
1570
@option{-initrd} option can be used to provide an INITRD image.
1571

    
1572
When using the direct Linux boot, a disk image for the first hard disk
1573
@file{hda} is required because its boot sector is used to launch the
1574
Linux kernel.
1575

    
1576
If you do not need graphical output, you can disable it and redirect
1577
the virtual serial port and the QEMU monitor to the console with the
1578
@option{-nographic} option. The typical command line is:
1579
@example
1580
qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1581
     -append "root=/dev/hda console=ttyS0" -nographic
1582
@end example
1583

    
1584
Use @key{Ctrl-a c} to switch between the serial console and the
1585
monitor (@pxref{pcsys_keys}).
1586

    
1587
@node pcsys_usb
1588
@section USB emulation
1589

    
1590
QEMU emulates a PCI UHCI USB controller. You can virtually plug
1591
virtual USB devices or real host USB devices (experimental, works only
1592
on Linux hosts).  Qemu will automatically create and connect virtual USB hubs
1593
as necessary to connect multiple USB devices.
1594

    
1595
@menu
1596
* usb_devices::
1597
* host_usb_devices::
1598
@end menu
1599
@node usb_devices
1600
@subsection Connecting USB devices
1601

    
1602
USB devices can be connected with the @option{-usbdevice} commandline option
1603
or the @code{usb_add} monitor command.  Available devices are:
1604

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

    
1641
@node host_usb_devices
1642
@subsection Using host USB devices on a Linux host
1643

    
1644
WARNING: this is an experimental feature. QEMU will slow down when
1645
using it. USB devices requiring real time streaming (i.e. USB Video
1646
Cameras) are not supported yet.
1647

    
1648
@enumerate
1649
@item If you use an early Linux 2.4 kernel, verify that no Linux driver
1650
is actually using the USB device. A simple way to do that is simply to
1651
disable the corresponding kernel module by renaming it from @file{mydriver.o}
1652
to @file{mydriver.o.disabled}.
1653

    
1654
@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1655
@example
1656
ls /proc/bus/usb
1657
001  devices  drivers
1658
@end example
1659

    
1660
@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:
1661
@example
1662
chown -R myuid /proc/bus/usb
1663
@end example
1664

    
1665
@item Launch QEMU and do in the monitor:
1666
@example
1667
info usbhost
1668
  Device 1.2, speed 480 Mb/s
1669
    Class 00: USB device 1234:5678, USB DISK
1670
@end example
1671
You should see the list of the devices you can use (Never try to use
1672
hubs, it won't work).
1673

    
1674
@item Add the device in QEMU by using:
1675
@example
1676
usb_add host:1234:5678
1677
@end example
1678

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

    
1682
@item Now you can try to use the host USB device in QEMU.
1683

    
1684
@end enumerate
1685

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

    
1689
@node vnc_security
1690
@section VNC security
1691

    
1692
The VNC server capability provides access to the graphical console
1693
of the guest VM across the network. This has a number of security
1694
considerations depending on the deployment scenarios.
1695

    
1696
@menu
1697
* vnc_sec_none::
1698
* vnc_sec_password::
1699
* vnc_sec_certificate::
1700
* vnc_sec_certificate_verify::
1701
* vnc_sec_certificate_pw::
1702
* vnc_generate_cert::
1703
@end menu
1704
@node vnc_sec_none
1705
@subsection Without passwords
1706

    
1707
The simplest VNC server setup does not include any form of authentication.
1708
For this setup it is recommended to restrict it to listen on a UNIX domain
1709
socket only. For example
1710

    
1711
@example
1712
qemu [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
1713
@end example
1714

    
1715
This ensures that only users on local box with read/write access to that
1716
path can access the VNC server. To securely access the VNC server from a
1717
remote machine, a combination of netcat+ssh can be used to provide a secure
1718
tunnel.
1719

    
1720
@node vnc_sec_password
1721
@subsection With passwords
1722

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

    
1732
@example
1733
qemu [...OPTIONS...] -vnc :1,password -monitor stdio
1734
(qemu) change vnc password
1735
Password: ********
1736
(qemu)
1737
@end example
1738

    
1739
@node vnc_sec_certificate
1740
@subsection With x509 certificates
1741

    
1742
The QEMU VNC server also implements the VeNCrypt extension allowing use of
1743
TLS for encryption of the session, and x509 certificates for authentication.
1744
The use of x509 certificates is strongly recommended, because TLS on its
1745
own is susceptible to man-in-the-middle attacks. Basic x509 certificate
1746
support provides a secure session, but no authentication. This allows any
1747
client to connect, and provides an encrypted session.
1748

    
1749
@example
1750
qemu [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
1751
@end example
1752

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

    
1759
@node vnc_sec_certificate_verify
1760
@subsection With x509 certificates and client verification
1761

    
1762
Certificates can also provide a means to authenticate the client connecting.
1763
The server will request that the client provide a certificate, which it will
1764
then validate against the CA certificate. This is a good choice if deploying
1765
in an environment with a private internal certificate authority.
1766

    
1767
@example
1768
qemu [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
1769
@end example
1770

    
1771

    
1772
@node vnc_sec_certificate_pw
1773
@subsection With x509 certificates, client verification and passwords
1774

    
1775
Finally, the previous method can be combined with VNC password authentication
1776
to provide two layers of authentication for clients.
1777

    
1778
@example
1779
qemu [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
1780
(qemu) change vnc password
1781
Password: ********
1782
(qemu)
1783
@end example
1784

    
1785
@node vnc_generate_cert
1786
@subsection Generating certificates for VNC
1787

    
1788
The GNU TLS packages provides a command called @code{certtool} which can
1789
be used to generate certificates and keys in PEM format. At a minimum it
1790
is neccessary to setup a certificate authority, and issue certificates to
1791
each server. If using certificates for authentication, then each client
1792
will also need to be issued a certificate. The recommendation is for the
1793
server to keep its certificates in either @code{/etc/pki/qemu} or for
1794
unprivileged users in @code{$HOME/.pki/qemu}.
1795

    
1796
@menu
1797
* vnc_generate_ca::
1798
* vnc_generate_server::
1799
* vnc_generate_client::
1800
@end menu
1801
@node vnc_generate_ca
1802
@subsubsection Setup the Certificate Authority
1803

    
1804
This step only needs to be performed once per organization / organizational
1805
unit. First the CA needs a private key. This key must be kept VERY secret
1806
and secure. If this key is compromised the entire trust chain of the certificates
1807
issued with it is lost.
1808

    
1809
@example
1810
# certtool --generate-privkey > ca-key.pem
1811
@end example
1812

    
1813
A CA needs to have a public certificate. For simplicity it can be a self-signed
1814
certificate, or one issue by a commercial certificate issuing authority. To
1815
generate a self-signed certificate requires one core piece of information, the
1816
name of the organization.
1817

    
1818
@example
1819
# cat > ca.info <<EOF
1820
cn = Name of your organization
1821
ca
1822
cert_signing_key
1823
EOF
1824
# certtool --generate-self-signed \
1825
           --load-privkey ca-key.pem
1826
           --template ca.info \
1827
           --outfile ca-cert.pem
1828
@end example
1829

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

    
1833
@node vnc_generate_server
1834
@subsubsection Issuing server certificates
1835

    
1836
Each server (or host) needs to be issued with a key and certificate. When connecting
1837
the certificate is sent to the client which validates it against the CA certificate.
1838
The core piece of information for a server certificate is the hostname. This should
1839
be the fully qualified hostname that the client will connect with, since the client
1840
will typically also verify the hostname in the certificate. On the host holding the
1841
secure CA private key:
1842

    
1843
@example
1844
# cat > server.info <<EOF
1845
organization = Name  of your organization
1846
cn = server.foo.example.com
1847
tls_www_server
1848
encryption_key
1849
signing_key
1850
EOF
1851
# certtool --generate-privkey > server-key.pem
1852
# certtool --generate-certificate \
1853
           --load-ca-certificate ca-cert.pem \
1854
           --load-ca-privkey ca-key.pem \
1855
           --load-privkey server server-key.pem \
1856
           --template server.info \
1857
           --outfile server-cert.pem
1858
@end example
1859

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

    
1864
@node vnc_generate_client
1865
@subsubsection Issuing client certificates
1866

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

    
1873
@example
1874
# cat > client.info <<EOF
1875
country = GB
1876
state = London
1877
locality = London
1878
organiazation = Name of your organization
1879
cn = client.foo.example.com
1880
tls_www_client
1881
encryption_key
1882
signing_key
1883
EOF
1884
# certtool --generate-privkey > client-key.pem
1885
# certtool --generate-certificate \
1886
           --load-ca-certificate ca-cert.pem \
1887
           --load-ca-privkey ca-key.pem \
1888
           --load-privkey client-key.pem \
1889
           --template client.info \
1890
           --outfile client-cert.pem
1891
@end example
1892

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

    
1896
@node gdb_usage
1897
@section GDB usage
1898

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

    
1902
In order to use gdb, launch qemu with the '-s' option. It will wait for a
1903
gdb connection:
1904
@example
1905
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1906
       -append "root=/dev/hda"
1907
Connected to host network interface: tun0
1908
Waiting gdb connection on port 1234
1909
@end example
1910

    
1911
Then launch gdb on the 'vmlinux' executable:
1912
@example
1913
> gdb vmlinux
1914
@end example
1915

    
1916
In gdb, connect to QEMU:
1917
@example
1918
(gdb) target remote localhost:1234
1919
@end example
1920

    
1921
Then you can use gdb normally. For example, type 'c' to launch the kernel:
1922
@example
1923
(gdb) c
1924
@end example
1925

    
1926
Here are some useful tips in order to use gdb on system code:
1927

    
1928
@enumerate
1929
@item
1930
Use @code{info reg} to display all the CPU registers.
1931
@item
1932
Use @code{x/10i $eip} to display the code at the PC position.
1933
@item
1934
Use @code{set architecture i8086} to dump 16 bit code. Then use
1935
@code{x/10i $cs*16+$eip} to dump the code at the PC position.
1936
@end enumerate
1937

    
1938
@node pcsys_os_specific
1939
@section Target OS specific information
1940

    
1941
@subsection Linux
1942

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

    
1947
When using a 2.6 guest Linux kernel, you should add the option
1948
@code{clock=pit} on the kernel command line because the 2.6 Linux
1949
kernels make very strict real time clock checks by default that QEMU
1950
cannot simulate exactly.
1951

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

    
1958
@subsection Windows
1959

    
1960
If you have a slow host, using Windows 95 is better as it gives the
1961
best speed. Windows 2000 is also a good choice.
1962

    
1963
@subsubsection SVGA graphic modes support
1964

    
1965
QEMU emulates a Cirrus Logic GD5446 Video
1966
card. All Windows versions starting from Windows 95 should recognize
1967
and use this graphic card. For optimal performances, use 16 bit color
1968
depth in the guest and the host OS.
1969

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

    
1975
@subsubsection CPU usage reduction
1976

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

    
1983
@subsubsection Windows 2000 disk full problem
1984

    
1985
Windows 2000 has a bug which gives a disk full problem during its
1986
installation. When installing it, use the @option{-win2k-hack} QEMU
1987
option to enable a specific workaround. After Windows 2000 is
1988
installed, you no longer need this option (this option slows down the
1989
IDE transfers).
1990

    
1991
@subsubsection Windows 2000 shutdown
1992

    
1993
Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1994
can. It comes from the fact that Windows 2000 does not automatically
1995
use the APM driver provided by the BIOS.
1996

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

    
2004
@subsubsection Share a directory between Unix and Windows
2005

    
2006
See @ref{sec_invocation} about the help of the option @option{-smb}.
2007

    
2008
@subsubsection Windows XP security problem
2009

    
2010
Some releases of Windows XP install correctly but give a security
2011
error when booting:
2012
@example
2013
A problem is preventing Windows from accurately checking the
2014
license for this computer. Error code: 0x800703e6.
2015
@end example
2016

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

    
2023
@subsection MS-DOS and FreeDOS
2024

    
2025
@subsubsection CPU usage reduction
2026

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

    
2032
@node QEMU System emulator for non PC targets
2033
@chapter QEMU System emulator for non PC targets
2034

    
2035
QEMU is a generic emulator and it emulates many non PC
2036
machines. Most of the options are similar to the PC emulator. The
2037
differences are mentioned in the following sections.
2038

    
2039
@menu
2040
* QEMU PowerPC System emulator::
2041
* Sparc32 System emulator::
2042
* Sparc64 System emulator::
2043
* MIPS System emulator::
2044
* ARM System emulator::
2045
* ColdFire System emulator::
2046
@end menu
2047

    
2048
@node QEMU PowerPC System emulator
2049
@section QEMU PowerPC System emulator
2050

    
2051
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
2052
or PowerMac PowerPC system.
2053

    
2054
QEMU emulates the following PowerMac peripherals:
2055

    
2056
@itemize @minus
2057
@item
2058
UniNorth PCI Bridge
2059
@item
2060
PCI VGA compatible card with VESA Bochs Extensions
2061
@item
2062
2 PMAC IDE interfaces with hard disk and CD-ROM support
2063
@item
2064
NE2000 PCI adapters
2065
@item
2066
Non Volatile RAM
2067
@item
2068
VIA-CUDA with ADB keyboard and mouse.
2069
@end itemize
2070

    
2071
QEMU emulates the following PREP peripherals:
2072

    
2073
@itemize @minus
2074
@item
2075
PCI Bridge
2076
@item
2077
PCI VGA compatible card with VESA Bochs Extensions
2078
@item
2079
2 IDE interfaces with hard disk and CD-ROM support
2080
@item
2081
Floppy disk
2082
@item
2083
NE2000 network adapters
2084
@item
2085
Serial port
2086
@item
2087
PREP Non Volatile RAM
2088
@item
2089
PC compatible keyboard and mouse.
2090
@end itemize
2091

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

    
2095
@c man begin OPTIONS
2096

    
2097
The following options are specific to the PowerPC emulation:
2098

    
2099
@table @option
2100

    
2101
@item -g WxH[xDEPTH]
2102

    
2103
Set the initial VGA graphic mode. The default is 800x600x15.
2104

    
2105
@end table
2106

    
2107
@c man end
2108

    
2109

    
2110
More information is available at
2111
@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
2112

    
2113
@node Sparc32 System emulator
2114
@section Sparc32 System emulator
2115

    
2116
Use the executable @file{qemu-system-sparc} to simulate a SPARCstation
2117
5, SPARCstation 10, SPARCstation 20, SPARCserver 600MP (sun4m
2118
architecture), SPARCstation 2 (sun4c architecture), SPARCserver 1000,
2119
or SPARCcenter 2000 (sun4d architecture). The emulation is somewhat
2120
complete.  SMP up to 16 CPUs is supported, but Linux limits the number
2121
of usable CPUs to 4.
2122

    
2123
QEMU emulates the following sun4m/sun4d peripherals:
2124

    
2125
@itemize @minus
2126
@item
2127
IOMMU or IO-UNITs
2128
@item
2129
TCX Frame buffer
2130
@item
2131
Lance (Am7990) Ethernet
2132
@item
2133
Non Volatile RAM M48T08
2134
@item
2135
Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
2136
and power/reset logic
2137
@item
2138
ESP SCSI controller with hard disk and CD-ROM support
2139
@item
2140
Floppy drive (not on SS-600MP)
2141
@item
2142
CS4231 sound device (only on SS-5, not working yet)
2143
@end itemize
2144

    
2145
The number of peripherals is fixed in the architecture.  Maximum
2146
memory size depends on the machine type, for SS-5 it is 256MB and for
2147
others 2047MB.
2148

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

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

    
2158
@c man begin OPTIONS
2159

    
2160
The following options are specific to the Sparc32 emulation:
2161

    
2162
@table @option
2163

    
2164
@item -g WxHx[xDEPTH]
2165

    
2166
Set the initial TCX graphic mode. The default is 1024x768x8, currently
2167
the only other possible mode is 1024x768x24.
2168

    
2169
@item -prom-env string
2170

    
2171
Set OpenBIOS variables in NVRAM, for example:
2172

    
2173
@example
2174
qemu-system-sparc -prom-env 'auto-boot?=false' \
2175
 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
2176
@end example
2177

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

    
2180
Set the emulated machine type. Default is SS-5.
2181

    
2182
@end table
2183

    
2184
@c man end
2185

    
2186
@node Sparc64 System emulator
2187
@section Sparc64 System emulator
2188

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

    
2192
QEMU emulates the following sun4u peripherals:
2193

    
2194
@itemize @minus
2195
@item
2196
UltraSparc IIi APB PCI Bridge
2197
@item
2198
PCI VGA compatible card with VESA Bochs Extensions
2199
@item
2200
Non Volatile RAM M48T59
2201
@item
2202
PC-compatible serial ports
2203
@end itemize
2204

    
2205
@node MIPS System emulator
2206
@section MIPS System emulator
2207

    
2208
Four executables cover simulation of 32 and 64-bit MIPS systems in
2209
both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
2210
@file{qemu-system-mips64} and @file{qemu-system-mips64el}.
2211
Five different machine types are emulated:
2212

    
2213
@itemize @minus
2214
@item
2215
A generic ISA PC-like machine "mips"
2216
@item
2217
The MIPS Malta prototype board "malta"
2218
@item
2219
An ACER Pica "pica61". This machine needs the 64-bit emulator.
2220
@item
2221
MIPS emulator pseudo board "mipssim"
2222
@item
2223
A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
2224
@end itemize
2225

    
2226
The generic emulation is supported by Debian 'Etch' and is able to
2227
install Debian into a virtual disk image. The following devices are
2228
emulated:
2229

    
2230
@itemize @minus
2231
@item
2232
A range of MIPS CPUs, default is the 24Kf
2233
@item
2234
PC style serial port
2235
@item
2236
PC style IDE disk
2237
@item
2238
NE2000 network card
2239
@end itemize
2240

    
2241
The Malta emulation supports the following devices:
2242

    
2243
@itemize @minus
2244
@item
2245
Core board with MIPS 24Kf CPU and Galileo system controller
2246
@item
2247
PIIX4 PCI/USB/SMbus controller
2248
@item
2249
The Multi-I/O chip's serial device
2250
@item
2251
PCnet32 PCI network card
2252
@item
2253
Malta FPGA serial device
2254
@item
2255
Cirrus VGA graphics card
2256
@end itemize
2257

    
2258
The ACER Pica emulation supports:
2259

    
2260
@itemize @minus
2261
@item
2262
MIPS R4000 CPU
2263
@item
2264
PC-style IRQ and DMA controllers
2265
@item
2266
PC Keyboard
2267
@item
2268
IDE controller
2269
@end itemize
2270

    
2271
The mipssim pseudo board emulation provides an environment similiar
2272
to what the proprietary MIPS emulator uses for running Linux.
2273
It supports:
2274

    
2275
@itemize @minus
2276
@item
2277
A range of MIPS CPUs, default is the 24Kf
2278
@item
2279
PC style serial port
2280
@item
2281
MIPSnet network emulation
2282
@end itemize
2283

    
2284
The MIPS Magnum R4000 emulation supports:
2285

    
2286
@itemize @minus
2287
@item
2288
MIPS R4000 CPU
2289
@item
2290
PC-style IRQ controller
2291
@item
2292
PC Keyboard
2293
@item
2294
SCSI controller
2295
@item
2296
G364 framebuffer
2297
@end itemize
2298

    
2299

    
2300
@node ARM System emulator
2301
@section ARM System emulator
2302

    
2303
Use the executable @file{qemu-system-arm} to simulate a ARM
2304
machine. The ARM Integrator/CP board is emulated with the following
2305
devices:
2306

    
2307
@itemize @minus
2308
@item
2309
ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
2310
@item
2311
Two PL011 UARTs
2312
@item
2313
SMC 91c111 Ethernet adapter
2314
@item
2315
PL110 LCD controller
2316
@item
2317
PL050 KMI with PS/2 keyboard and mouse.
2318
@item
2319
PL181 MultiMedia Card Interface with SD card.
2320
@end itemize
2321

    
2322
The ARM Versatile baseboard is emulated with the following devices:
2323

    
2324
@itemize @minus
2325
@item
2326
ARM926E, ARM1136 or Cortex-A8 CPU
2327
@item
2328
PL190 Vectored Interrupt Controller
2329
@item
2330
Four PL011 UARTs
2331
@item
2332
SMC 91c111 Ethernet adapter
2333
@item
2334
PL110 LCD controller
2335
@item
2336
PL050 KMI with PS/2 keyboard and mouse.
2337
@item
2338
PCI host bridge.  Note the emulated PCI bridge only provides access to
2339
PCI memory space.  It does not provide access to PCI IO space.
2340
This means some devices (eg. ne2k_pci NIC) are not usable, and others
2341
(eg. rtl8139 NIC) are only usable when the guest drivers use the memory
2342
mapped control registers.
2343
@item
2344
PCI OHCI USB controller.
2345
@item
2346
LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
2347
@item
2348
PL181 MultiMedia Card Interface with SD card.
2349
@end itemize
2350

    
2351
The ARM RealView Emulation baseboard is emulated with the following devices:
2352

    
2353
@itemize @minus
2354
@item
2355
ARM926E, ARM1136, ARM11MPCORE(x4) or Cortex-A8 CPU
2356
@item
2357
ARM AMBA Generic/Distributed Interrupt Controller
2358
@item
2359
Four PL011 UARTs
2360
@item
2361
SMC 91c111 Ethernet adapter
2362
@item
2363
PL110 LCD controller
2364
@item
2365
PL050 KMI with PS/2 keyboard and mouse
2366
@item
2367
PCI host bridge
2368
@item
2369
PCI OHCI USB controller
2370
@item
2371
LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
2372
@item
2373
PL181 MultiMedia Card Interface with SD card.
2374
@end itemize
2375

    
2376
The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
2377
and "Terrier") emulation includes the following peripherals:
2378

    
2379
@itemize @minus
2380
@item
2381
Intel PXA270 System-on-chip (ARM V5TE core)
2382
@item
2383
NAND Flash memory
2384
@item
2385
IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
2386
@item
2387
On-chip OHCI USB controller
2388
@item
2389
On-chip LCD controller
2390
@item
2391
On-chip Real Time Clock
2392
@item
2393
TI ADS7846 touchscreen controller on SSP bus
2394
@item
2395
Maxim MAX1111 analog-digital converter on I@math{^2}C bus
2396
@item
2397
GPIO-connected keyboard controller and LEDs
2398
@item
2399
Secure Digital card connected to PXA MMC/SD host
2400
@item
2401
Three on-chip UARTs
2402
@item
2403
WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
2404
@end itemize
2405

    
2406
The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
2407
following elements:
2408

    
2409
@itemize @minus
2410
@item
2411
Texas Instruments OMAP310 System-on-chip (ARM 925T core)
2412
@item
2413
ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
2414
@item
2415
On-chip LCD controller
2416
@item
2417
On-chip Real Time Clock
2418
@item
2419
TI TSC2102i touchscreen controller / analog-digital converter / Audio
2420
CODEC, connected through MicroWire and I@math{^2}S busses
2421
@item
2422
GPIO-connected matrix keypad
2423
@item
2424
Secure Digital card connected to OMAP MMC/SD host
2425
@item
2426
Three on-chip UARTs
2427
@end itemize
2428

    
2429
The Luminary Micro Stellaris LM3S811EVB emulation includes the following
2430
devices:
2431

    
2432
@itemize @minus
2433
@item
2434
Cortex-M3 CPU core.
2435
@item
2436
64k Flash and 8k SRAM.
2437
@item
2438
Timers, UARTs, ADC and I@math{^2}C interface.
2439
@item
2440
OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
2441
@end itemize
2442

    
2443
The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
2444
devices:
2445

    
2446
@itemize @minus
2447
@item
2448
Cortex-M3 CPU core.
2449
@item
2450
256k Flash and 64k SRAM.
2451
@item
2452
Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
2453
@item
2454
OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
2455
@end itemize
2456

    
2457
A Linux 2.6 test image is available on the QEMU web site. More
2458
information is available in the QEMU mailing-list archive.
2459

    
2460
@node ColdFire System emulator
2461
@section ColdFire System emulator
2462

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

    
2466
The M5208EVB emulation includes the following devices:
2467

    
2468
@itemize @minus
2469
@item
2470
MCF5208 ColdFire V2 Microprocessor (ISA A+ with EMAC).
2471
@item
2472
Three Two on-chip UARTs.
2473
@item
2474
Fast Ethernet Controller (FEC)
2475
@end itemize
2476

    
2477
The AN5206 emulation includes the following devices:
2478

    
2479
@itemize @minus
2480
@item
2481
MCF5206 ColdFire V2 Microprocessor.
2482
@item
2483
Two on-chip UARTs.
2484
@end itemize
2485

    
2486
@node QEMU User space emulator
2487
@chapter QEMU User space emulator
2488

    
2489
@menu
2490
* Supported Operating Systems ::
2491
* Linux User space emulator::
2492
* Mac OS X/Darwin User space emulator ::
2493
@end menu
2494

    
2495
@node Supported Operating Systems
2496
@section Supported Operating Systems
2497

    
2498
The following OS are supported in user space emulation:
2499

    
2500
@itemize @minus
2501
@item
2502
Linux (referred as qemu-linux-user)
2503
@item
2504
Mac OS X/Darwin (referred as qemu-darwin-user)
2505
@end itemize
2506

    
2507
@node Linux User space emulator
2508
@section Linux User space emulator
2509

    
2510
@menu
2511
* Quick Start::
2512
* Wine launch::
2513
* Command line options::
2514
* Other binaries::
2515
@end menu
2516

    
2517
@node Quick Start
2518
@subsection Quick Start
2519

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

    
2523
@itemize
2524

    
2525
@item On x86, you can just try to launch any process by using the native
2526
libraries:
2527

    
2528
@example
2529
qemu-i386 -L / /bin/ls
2530
@end example
2531

    
2532
@code{-L /} tells that the x86 dynamic linker must be searched with a
2533
@file{/} prefix.
2534

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

    
2538
@example
2539
qemu-i386 -L / qemu-i386 -L / /bin/ls
2540
@end example
2541

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

    
2546
@example
2547
unset LD_LIBRARY_PATH
2548
@end example
2549

    
2550
Then you can launch the precompiled @file{ls} x86 executable:
2551

    
2552
@example
2553
qemu-i386 tests/i386/ls
2554
@end example
2555
You can look at @file{qemu-binfmt-conf.sh} so that
2556
QEMU is automatically launched by the Linux kernel when you try to
2557
launch x86 executables. It requires the @code{binfmt_misc} module in the
2558
Linux kernel.
2559

    
2560
@item The x86 version of QEMU is also included. You can try weird things such as:
2561
@example
2562
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
2563
          /usr/local/qemu-i386/bin/ls-i386
2564
@end example
2565

    
2566
@end itemize
2567

    
2568
@node Wine launch
2569
@subsection Wine launch
2570

    
2571
@itemize
2572

    
2573
@item Ensure that you have a working QEMU with the x86 glibc
2574
distribution (see previous section). In order to verify it, you must be
2575
able to do:
2576

    
2577
@example
2578
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
2579
@end example
2580

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

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

    
2588
@item Then you can try the example @file{putty.exe}:
2589

    
2590
@example
2591
qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
2592
          /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
2593
@end example
2594

    
2595
@end itemize
2596

    
2597
@node Command line options
2598
@subsection Command line options
2599

    
2600
@example
2601
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
2602
@end example
2603

    
2604
@table @option
2605
@item -h
2606
Print the help
2607
@item -L path
2608
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
2609
@item -s size
2610
Set the x86 stack size in bytes (default=524288)
2611
@end table
2612

    
2613
Debug options:
2614

    
2615
@table @option
2616
@item -d
2617
Activate log (logfile=/tmp/qemu.log)
2618
@item -p pagesize
2619
Act as if the host page size was 'pagesize' bytes
2620
@end table
2621

    
2622
Environment variables:
2623

    
2624
@table @env
2625
@item QEMU_STRACE
2626
Print system calls and arguments similar to the 'strace' program
2627
(NOTE: the actual 'strace' program will not work because the user
2628
space emulator hasn't implemented ptrace).  At the moment this is
2629
incomplete.  All system calls that don't have a specific argument
2630
format are printed with information for six arguments.  Many
2631
flag-style arguments don't have decoders and will show up as numbers.
2632
@end table
2633

    
2634
@node Other binaries
2635
@subsection Other binaries
2636

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

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

    
2645
The binary format is detected automatically.
2646

    
2647
@command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries
2648
(Sparc64 CPU, 32 bit ABI).
2649

    
2650
@command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
2651
SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
2652

    
2653
@node Mac OS X/Darwin User space emulator
2654
@section Mac OS X/Darwin User space emulator
2655

    
2656
@menu
2657
* Mac OS X/Darwin Status::
2658
* Mac OS X/Darwin Quick Start::
2659
* Mac OS X/Darwin Command line options::
2660
@end menu
2661

    
2662
@node Mac OS X/Darwin Status
2663
@subsection Mac OS X/Darwin Status
2664

    
2665
@itemize @minus
2666
@item
2667
target x86 on x86: Most apps (Cocoa and Carbon too) works. [1]
2668
@item
2669
target PowerPC on x86: Not working as the ppc commpage can't be mapped (yet!)
2670
@item
2671
target PowerPC on PowerPC: Most apps (Cocoa and Carbon too) works. [1]
2672
@item
2673
target x86 on PowerPC: most utilities work. Cocoa and Carbon apps are not yet supported.
2674
@end itemize
2675

    
2676
[1] If you're host commpage can be executed by qemu.
2677

    
2678
@node Mac OS X/Darwin Quick Start
2679
@subsection Quick Start
2680

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

    
2686
@itemize
2687

    
2688
@item On x86, you can just try to launch any process by using the native
2689
libraries:
2690

    
2691
@example
2692
qemu-i386 /bin/ls
2693
@end example
2694

    
2695
or to run the ppc version of the executable:
2696

    
2697
@example
2698
qemu-ppc /bin/ls
2699
@end example
2700

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

    
2704
@example
2705
qemu-i386 -L /opt/x86_root/ /bin/ls
2706
@end example
2707

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

    
2711
@end itemize
2712

    
2713
@node Mac OS X/Darwin Command line options
2714
@subsection Command line options
2715

    
2716
@example
2717
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
2718
@end example
2719

    
2720
@table @option
2721
@item -h
2722
Print the help
2723
@item -L path
2724
Set the library root path (default=/)
2725
@item -s size
2726
Set the stack size in bytes (default=524288)
2727
@end table
2728

    
2729
Debug options:
2730

    
2731
@table @option
2732
@item -d
2733
Activate log (logfile=/tmp/qemu.log)
2734
@item -p pagesize
2735
Act as if the host page size was 'pagesize' bytes
2736
@end table
2737

    
2738
@node compilation
2739
@chapter Compilation from the sources
2740

    
2741
@menu
2742
* Linux/Unix::
2743
* Windows::
2744
* Cross compilation for Windows with Linux::
2745
* Mac OS X::
2746
@end menu
2747

    
2748
@node Linux/Unix
2749
@section Linux/Unix
2750

    
2751
@subsection Compilation
2752

    
2753
First you must decompress the sources:
2754
@example
2755
cd /tmp
2756
tar zxvf qemu-x.y.z.tar.gz
2757
cd qemu-x.y.z
2758
@end example
2759

    
2760
Then you configure QEMU and build it (usually no options are needed):
2761
@example
2762
./configure
2763
make
2764
@end example
2765

    
2766
Then type as root user:
2767
@example
2768
make install
2769
@end example
2770
to install QEMU in @file{/usr/local}.
2771

    
2772
@subsection GCC version
2773

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

    
2782
@node Windows
2783
@section Windows
2784

    
2785
@itemize
2786
@item Install the current versions of MSYS and MinGW from
2787
@url{http://www.mingw.org/}. You can find detailed installation
2788
instructions in the download section and the FAQ.
2789

    
2790
@item Download
2791
the MinGW development library of SDL 1.2.x
2792
(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
2793
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
2794
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
2795
directory. Edit the @file{sdl-config} script so that it gives the
2796
correct SDL directory when invoked.
2797

    
2798
@item Extract the current version of QEMU.
2799

    
2800
@item Start the MSYS shell (file @file{msys.bat}).
2801

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

    
2806
@item You can install QEMU in @file{Program Files/Qemu} by typing
2807
@file{make install}. Don't forget to copy @file{SDL.dll} in
2808
@file{Program Files/Qemu}.
2809

    
2810
@end itemize
2811

    
2812
@node Cross compilation for Windows with Linux
2813
@section Cross compilation for Windows with Linux
2814

    
2815
@itemize
2816
@item
2817
Install the MinGW cross compilation tools available at
2818
@url{http://www.mingw.org/}.
2819

    
2820
@item
2821
Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
2822
unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
2823
variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
2824
the QEMU configuration script.
2825

    
2826
@item
2827
Configure QEMU for Windows cross compilation:
2828
@example
2829
./configure --enable-mingw32
2830
@end example
2831
If necessary, you can change the cross-prefix according to the prefix
2832
chosen for the MinGW tools with --cross-prefix. You can also use
2833
--prefix to set the Win32 install path.
2834

    
2835
@item You can install QEMU in the installation directory by typing
2836
@file{make install}. Don't forget to copy @file{SDL.dll} in the
2837
installation directory.
2838

    
2839
@end itemize
2840

    
2841
Note: Currently, Wine does not seem able to launch
2842
QEMU for Win32.
2843

    
2844
@node Mac OS X
2845
@section Mac OS X
2846

    
2847
The Mac OS X patches are not fully merged in QEMU, so you should look
2848
at the QEMU mailing list archive to have all the necessary
2849
information.
2850

    
2851
@node Index
2852
@chapter Index
2853
@printindex cp
2854

    
2855
@bye