Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 3e3f6754

History | View | Annotate | Download (78.5 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 (32-bit Sparc processor)
78
@item Sun4u (64-bit Sparc processor, in progress)
79
@item Malta board (32-bit MIPS processor)
80
@item ARM Integrator/CP (ARM)
81
@item ARM Versatile baseboard (ARM)
82
@item ARM RealView Emulation baseboard (ARM)
83
@item Spitz, Akita, Borzoi and Terrier PDAs (PXA270 processor)
84
@item Luminary Micro LM3S811EVB (ARM Cortex-M3)
85
@item Luminary Micro LM3S6965EVB (ARM Cortex-M3)
86
@item Freescale MCF5208EVB (ColdFire V2).
87
@item Arnewsh MCF5206 evaluation board (ColdFire V2).
88
@item Palm Tungsten|E PDA (OMAP310 processor)
89
@end itemize
90

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

    
93
@node Installation
94
@chapter Installation
95

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

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

    
104
@node install_linux
105
@section Linux
106

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

    
110
@node install_windows
111
@section Windows
112

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

    
116
@node install_mac
117
@section Mac OS X
118

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

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

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

    
140
@node pcsys_introduction
141
@section Introduction
142

    
143
@c man begin DESCRIPTION
144

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

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

    
174
SMP is supported with up to 255 CPUs.
175

    
176
Note that adlib is only available when QEMU was configured with
177
-enable-adlib
178

    
179
QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
180
VGA BIOS.
181

    
182
QEMU uses YM3812 emulation by Tatsuyuki Satoh.
183

    
184
@c man end
185

    
186
@node pcsys_quickstart
187
@section Quick Start
188

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

    
191
@example
192
qemu linux.img
193
@end example
194

    
195
Linux should boot and give you a prompt.
196

    
197
@node sec_invocation
198
@section Invocation
199

    
200
@example
201
@c man begin SYNOPSIS
202
usage: qemu [options] [@var{disk_image}]
203
@c man end
204
@end example
205

    
206
@c man begin OPTIONS
207
@var{disk_image} is a raw hard disk image for IDE hard disk 0.
208

    
209
General options:
210
@table @option
211
@item -M @var{machine}
212
Select the emulated @var{machine} (@code{-M ?} for list)
213

    
214
@item -fda @var{file}
215
@item -fdb @var{file}
216
Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can
217
use the host floppy by using @file{/dev/fd0} as filename (@pxref{host_drives}).
218

    
219
@item -hda @var{file}
220
@item -hdb @var{file}
221
@item -hdc @var{file}
222
@item -hdd @var{file}
223
Use @var{file} as hard disk 0, 1, 2 or 3 image (@pxref{disk_images}).
224

    
225
@item -cdrom @var{file}
226
Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and
227
@option{-cdrom} at the same time). You can use the host CD-ROM by
228
using @file{/dev/cdrom} as filename (@pxref{host_drives}).
229

    
230
@item -boot [a|c|d|n]
231
Boot on floppy (a), hard disk (c), CD-ROM (d), or Etherboot (n). Hard disk boot
232
is the default.
233

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

    
239
@item -no-fd-bootchk
240
Disable boot signature checking for floppy disks in Bochs BIOS. It may
241
be needed to boot from old floppy disks.
242

    
243
@item -m @var{megs}
244
Set virtual RAM size to @var{megs} megabytes. Default is 128 MiB.
245

    
246
@item -smp @var{n}
247
Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
248
CPUs are supported. On Sparc32 target, Linux limits the number of usable CPUs
249
to 4.
250

    
251
@item -audio-help
252

    
253
Will show the audio subsystem help: list of drivers, tunable
254
parameters.
255

    
256
@item -soundhw @var{card1}[,@var{card2},...] or -soundhw all
257

    
258
Enable audio and selected sound hardware. Use ? to print all
259
available sound hardware.
260

    
261
@example
262
qemu -soundhw sb16,adlib hda
263
qemu -soundhw es1370 hda
264
qemu -soundhw all hda
265
qemu -soundhw ?
266
@end example
267

    
268
@item -localtime
269
Set the real time clock to local time (the default is to UTC
270
time). This option is needed to have correct date in MS-DOS or
271
Windows.
272

    
273
@item -startdate @var{date}
274
Set the initial date of the real time clock. Valid format for
275
@var{date} are: @code{now} or @code{2006-06-17T16:01:21} or
276
@code{2006-06-17}. The default value is @code{now}.
277

    
278
@item -pidfile @var{file}
279
Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
280
from a script.
281

    
282
@item -daemonize
283
Daemonize the QEMU process after initialization.  QEMU will not detach from
284
standard IO until it is ready to receive connections on any of its devices.
285
This option is a useful way for external programs to launch QEMU without having
286
to cope with initialization race conditions.
287

    
288
@item -win2k-hack
289
Use it when installing Windows 2000 to avoid a disk full bug. After
290
Windows 2000 is installed, you no longer need this option (this option
291
slows down the IDE transfers).
292

    
293
@item -option-rom @var{file}
294
Load the contents of @var{file} as an option ROM.
295
This option is useful to load things like EtherBoot.
296

    
297
@item -name @var{name}
298
Sets the @var{name} of the guest.
299
This name will be display in the SDL window caption.
300
The @var{name} will also be used for the VNC server.
301

    
302
@end table
303

    
304
Display options:
305
@table @option
306

    
307
@item -nographic
308

    
309
Normally, QEMU uses SDL to display the VGA output. With this option,
310
you can totally disable graphical output so that QEMU is a simple
311
command line application. The emulated serial port is redirected on
312
the console. Therefore, you can still use QEMU to debug a Linux kernel
313
with a serial console.
314

    
315
@item -no-frame
316

    
317
Do not use decorations for SDL windows and start them using the whole
318
available screen space. This makes the using QEMU in a dedicated desktop
319
workspace more convenient.
320

    
321
@item -full-screen
322
Start in full screen.
323

    
324
@item -vnc @var{display}[,@var{option}[,@var{option}[,...]]]
325

    
326
Normally, QEMU uses SDL to display the VGA output.  With this option,
327
you can have QEMU listen on VNC display @var{display} and redirect the VGA
328
display over the VNC session.  It is very useful to enable the usb
329
tablet device when using this option (option @option{-usbdevice
330
tablet}). When using the VNC display, you must use the @option{-k}
331
parameter to set the keyboard layout if you are not using en-us. Valid
332
syntax for the @var{display} is
333

    
334
@table @code
335

    
336
@item @var{interface}:@var{d}
337

    
338
TCP connections will only be allowed from @var{interface} on display @var{d}.
339
By convention the TCP port is 5900+@var{d}. Optionally, @var{interface} can
340
be omitted in which case the server will bind to all interfaces.
341

    
342
@item @var{unix}:@var{path}
343

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

    
347
@item none
348

    
349
VNC is initialized by not started. The monitor @code{change} command can be used
350
to later start the VNC server.
351

    
352
@end table
353

    
354
Following the @var{display} value there may be one or more @var{option} flags
355
separated by commas. Valid options are
356

    
357
@table @code
358

    
359
@item password
360

    
361
Require that password based authentication is used for client connections.
362
The password must be set separately using the @code{change} command in the
363
@ref{pcsys_monitor}
364

    
365
@item tls
366

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

    
372
@item x509=@var{/path/to/certificate/dir}
373

    
374
Valid if @option{tls} is specified. Require that x509 credentials are used
375
for negotiating the TLS session. The server will send its x509 certificate
376
to the client. It is recommended that a password be set on the VNC server
377
to provide authentication of the client when this is used. The path following
378
this option specifies where the x509 certificates are to be loaded from.
379
See the @ref{vnc_security} section for details on generating certificates.
380

    
381
@item x509verify=@var{/path/to/certificate/dir}
382

    
383
Valid if @option{tls} is specified. Require that x509 credentials are used
384
for negotiating the TLS session. The server will send its x509 certificate
385
to the client, and request that the client send its own x509 certificate.
386
The server will validate the client's certificate against the CA certificate,
387
and reject clients when validation fails. If the certificate authority is
388
trusted, this is a sufficient authentication mechanism. You may still wish
389
to set a password on the VNC server as a second authentication layer. The
390
path following this option specifies where the x509 certificates are to
391
be loaded from. See the @ref{vnc_security} section for details on generating
392
certificates.
393

    
394
@end table
395

    
396
@item -k @var{language}
397

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

    
404
The available layouts are:
405
@example
406
ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
407
da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
408
de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
409
@end example
410

    
411
The default is @code{en-us}.
412

    
413
@end table
414

    
415
USB options:
416
@table @option
417

    
418
@item -usb
419
Enable the USB driver (will be the default soon)
420

    
421
@item -usbdevice @var{devname}
422
Add the USB device @var{devname}. @xref{usb_devices}.
423
@end table
424

    
425
Network options:
426

    
427
@table @option
428

    
429
@item -net nic[,vlan=@var{n}][,macaddr=@var{addr}][,model=@var{type}]
430
Create a new Network Interface Card and connect it to VLAN @var{n} (@var{n}
431
= 0 is the default). The NIC is an ne2k_pci by default on the PC
432
target. Optionally, the MAC address can be changed. If no
433
@option{-net} option is specified, a single NIC is created.
434
Qemu can emulate several different models of network card.
435
Valid values for @var{type} are
436
@code{i82551}, @code{i82557b}, @code{i82559er},
437
@code{ne2k_pci}, @code{ne2k_isa}, @code{pcnet}, @code{rtl8139},
438
@code{smc91c111}, @code{lance} and @code{mcf_fec}.
439
Not all devices are supported on all targets.  Use -net nic,model=?
440
for a list of available devices for your target.
441

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

    
447
@item -net tap[,vlan=@var{n}][,fd=@var{h}][,ifname=@var{name}][,script=@var{file}]
448
Connect the host TAP network interface @var{name} to VLAN @var{n} and
449
use the network script @var{file} to configure it. The default
450
network script is @file{/etc/qemu-ifup}. Use @option{script=no} to
451
disable script execution. If @var{name} is not
452
provided, the OS automatically provides one. @option{fd}=@var{h} can be
453
used to specify the handle of an already opened host TAP interface. Example:
454

    
455
@example
456
qemu linux.img -net nic -net tap
457
@end example
458

    
459
More complicated example (two NICs, each one connected to a TAP device)
460
@example
461
qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
462
               -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
463
@end example
464

    
465

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

    
468
Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual
469
machine using a TCP socket connection. If @option{listen} is
470
specified, QEMU waits for incoming connections on @var{port}
471
(@var{host} is optional). @option{connect} is used to connect to
472
another QEMU instance using the @option{listen} option. @option{fd}=@var{h}
473
specifies an already opened TCP socket.
474

    
475
Example:
476
@example
477
# launch a first QEMU instance
478
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
479
               -net socket,listen=:1234
480
# connect the VLAN 0 of this instance to the VLAN 0
481
# of the first instance
482
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
483
               -net socket,connect=127.0.0.1:1234
484
@end example
485

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

    
488
Create a VLAN @var{n} shared with another QEMU virtual
489
machines using a UDP multicast socket, effectively making a bus for
490
every QEMU with same multicast address @var{maddr} and @var{port}.
491
NOTES:
492
@enumerate
493
@item
494
Several QEMU can be running on different hosts and share same bus (assuming
495
correct multicast setup for these hosts).
496
@item
497
mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see
498
@url{http://user-mode-linux.sf.net}.
499
@item
500
Use @option{fd=h} to specify an already opened UDP multicast socket.
501
@end enumerate
502

    
503
Example:
504
@example
505
# launch one QEMU instance
506
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
507
               -net socket,mcast=230.0.0.1:1234
508
# launch another QEMU instance on same "bus"
509
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
510
               -net socket,mcast=230.0.0.1:1234
511
# launch yet another QEMU instance on same "bus"
512
qemu linux.img -net nic,macaddr=52:54:00:12:34:58 \
513
               -net socket,mcast=230.0.0.1:1234
514
@end example
515

    
516
Example (User Mode Linux compat.):
517
@example
518
# launch QEMU instance (note mcast address selected
519
# is UML's default)
520
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
521
               -net socket,mcast=239.192.168.1:1102
522
# launch UML
523
/path/to/linux ubd0=/path/to/root_fs eth0=mcast
524
@end example
525

    
526
@item -net none
527
Indicate that no network devices should be configured. It is used to
528
override the default configuration (@option{-net nic -net user}) which
529
is activated if no @option{-net} options are provided.
530

    
531
@item -tftp @var{dir}
532
When using the user mode network stack, activate a built-in TFTP
533
server. The files in @var{dir} will be exposed as the root of a TFTP server.
534
The TFTP client on the guest must be configured in binary mode (use the command
535
@code{bin} of the Unix TFTP client). The host IP address on the guest is as
536
usual 10.0.2.2.
537

    
538
@item -bootp @var{file}
539
When using the user mode network stack, broadcast @var{file} as the BOOTP
540
filename.  In conjunction with @option{-tftp}, this can be used to network boot
541
a guest from a local directory.
542

    
543
Example (using pxelinux):
544
@example
545
qemu -hda linux.img -boot n -tftp /path/to/tftp/files -bootp /pxelinux.0
546
@end example
547

    
548
@item -smb @var{dir}
549
When using the user mode network stack, activate a built-in SMB
550
server so that Windows OSes can access to the host files in @file{@var{dir}}
551
transparently.
552

    
553
In the guest Windows OS, the line:
554
@example
555
10.0.2.4 smbserver
556
@end example
557
must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
558
or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
559

    
560
Then @file{@var{dir}} can be accessed in @file{\\smbserver\qemu}.
561

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

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

    
568
When using the user mode network stack, redirect incoming TCP or UDP
569
connections to the host port @var{host-port} to the guest
570
@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
571
is not specified, its value is 10.0.2.15 (default address given by the
572
built-in DHCP server).
573

    
574
For example, to redirect host X11 connection from screen 1 to guest
575
screen 0, use the following:
576

    
577
@example
578
# on the host
579
qemu -redir tcp:6001::6000 [...]
580
# this host xterm should open in the guest X11 server
581
xterm -display :1
582
@end example
583

    
584
To redirect telnet connections from host port 5555 to telnet port on
585
the guest, use the following:
586

    
587
@example
588
# on the host
589
qemu -redir tcp:5555::23 [...]
590
telnet localhost 5555
591
@end example
592

    
593
Then when you use on the host @code{telnet localhost 5555}, you
594
connect to the guest telnet server.
595

    
596
@end table
597

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

    
602
@table @option
603

    
604
@item -kernel @var{bzImage}
605
Use @var{bzImage} as kernel image.
606

    
607
@item -append @var{cmdline}
608
Use @var{cmdline} as kernel command line
609

    
610
@item -initrd @var{file}
611
Use @var{file} as initial ram disk.
612

    
613
@end table
614

    
615
Debug/Expert options:
616
@table @option
617

    
618
@item -serial @var{dev}
619
Redirect the virtual serial port to host character device
620
@var{dev}. The default device is @code{vc} in graphical mode and
621
@code{stdio} in non graphical mode.
622

    
623
This option can be used several times to simulate up to 4 serials
624
ports.
625

    
626
Use @code{-serial none} to disable all serial ports.
627

    
628
Available character devices are:
629
@table @code
630
@item vc[:WxH]
631
Virtual console. Optionally, a width and height can be given in pixel with
632
@example
633
vc:800x600
634
@end example
635
It is also possible to specify width or height in characters:
636
@example
637
vc:80Cx24C
638
@end example
639
@item pty
640
[Linux only] Pseudo TTY (a new PTY is automatically allocated)
641
@item none
642
No device is allocated.
643
@item null
644
void device
645
@item /dev/XXX
646
[Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
647
parameters are set according to the emulated ones.
648
@item /dev/parport@var{N}
649
[Linux only, parallel port only] Use host parallel port
650
@var{N}. Currently SPP and EPP parallel port features can be used.
651
@item file:@var{filename}
652
Write output to @var{filename}. No character can be read.
653
@item stdio
654
[Unix only] standard input/output
655
@item pipe:@var{filename}
656
name pipe @var{filename}
657
@item COM@var{n}
658
[Windows only] Use host serial port @var{n}
659
@item udp:[@var{remote_host}]:@var{remote_port}[@@[@var{src_ip}]:@var{src_port}]
660
This implements UDP Net Console.
661
When @var{remote_host} or @var{src_ip} are not specified
662
they default to @code{0.0.0.0}.
663
When not using a specified @var{src_port} a random port is automatically chosen.
664

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

    
670
If you plan to send characters back via netconsole or you want to stop
671
and start qemu a lot of times, you should have qemu use the same
672
source port each time by using something like @code{-serial
673
udp::4555@@:4556} to qemu. Another approach is to use a patched
674
version of netcat which can listen to a TCP port and send and receive
675
characters via udp.  If you have a patched version of netcat which
676
activates telnet remote echo and single char transfer, then you can
677
use the following options to step up a netcat redirector to allow
678
telnet on port 5555 to access the qemu port.
679
@table @code
680
@item Qemu Options:
681
-serial udp::4555@@:4556
682
@item netcat options:
683
-u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
684
@item telnet options:
685
localhost 5555
686
@end table
687

    
688

    
689
@item tcp:[@var{host}]:@var{port}[,@var{server}][,nowait][,nodelay]
690
The TCP Net Console has two modes of operation.  It can send the serial
691
I/O to a location or wait for a connection from a location.  By default
692
the TCP Net Console is sent to @var{host} at the @var{port}.  If you use
693
the @var{server} option QEMU will wait for a client socket application
694
to connect to the port before continuing, unless the @code{nowait}
695
option was specified.  The @code{nodelay} option disables the Nagle buffering
696
algorithm.  If @var{host} is omitted, 0.0.0.0 is assumed. Only
697
one TCP connection at a time is accepted. You can use @code{telnet} to
698
connect to the corresponding character device.
699
@table @code
700
@item Example to send tcp console to 192.168.0.2 port 4444
701
-serial tcp:192.168.0.2:4444
702
@item Example to listen and wait on port 4444 for connection
703
-serial tcp::4444,server
704
@item Example to not wait and listen on ip 192.168.0.100 port 4444
705
-serial tcp:192.168.0.100:4444,server,nowait
706
@end table
707

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

    
717
@item unix:@var{path}[,server][,nowait]
718
A unix domain socket is used instead of a tcp socket.  The option works the
719
same as if you had specified @code{-serial tcp} except the unix domain socket
720
@var{path} is used for connections.
721

    
722
@item mon:@var{dev_string}
723
This is a special option to allow the monitor to be multiplexed onto
724
another serial port.  The monitor is accessed with key sequence of
725
@key{Control-a} and then pressing @key{c}. See monitor access
726
@ref{pcsys_keys} in the -nographic section for more keys.
727
@var{dev_string} should be any one of the serial devices specified
728
above.  An example to multiplex the monitor onto a telnet server
729
listening on port 4444 would be:
730
@table @code
731
@item -serial mon:telnet::4444,server,nowait
732
@end table
733

    
734
@end table
735

    
736
@item -parallel @var{dev}
737
Redirect the virtual parallel port to host device @var{dev} (same
738
devices as the serial port). On Linux hosts, @file{/dev/parportN} can
739
be used to use hardware devices connected on the corresponding host
740
parallel port.
741

    
742
This option can be used several times to simulate up to 3 parallel
743
ports.
744

    
745
Use @code{-parallel none} to disable all parallel ports.
746

    
747
@item -monitor @var{dev}
748
Redirect the monitor to host device @var{dev} (same devices as the
749
serial port).
750
The default device is @code{vc} in graphical mode and @code{stdio} in
751
non graphical mode.
752

    
753
@item -echr numeric_ascii_value
754
Change the escape character used for switching to the monitor when using
755
monitor and serial sharing.  The default is @code{0x01} when using the
756
@code{-nographic} option.  @code{0x01} is equal to pressing
757
@code{Control-a}.  You can select a different character from the ascii
758
control keys where 1 through 26 map to Control-a through Control-z.  For
759
instance you could use the either of the following to change the escape
760
character to Control-t.
761
@table @code
762
@item -echr 0x14
763
@item -echr 20
764
@end table
765

    
766
@item -s
767
Wait gdb connection to port 1234 (@pxref{gdb_usage}).
768
@item -p @var{port}
769
Change gdb connection port.  @var{port} can be either a decimal number
770
to specify a TCP port, or a host device (same devices as the serial port).
771
@item -S
772
Do not start CPU at startup (you must type 'c' in the monitor).
773
@item -d
774
Output log in /tmp/qemu.log
775
@item -hdachs @var{c},@var{h},@var{s},[,@var{t}]
776
Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
777
@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
778
translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
779
all those parameters. This option is useful for old MS-DOS disk
780
images.
781

    
782
@item -L path
783
Set the directory for the BIOS, VGA BIOS and keymaps.
784

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

    
791
@item -no-acpi
792
Disable ACPI (Advanced Configuration and Power Interface) support. Use
793
it if your guest OS complains about ACPI problems (PC target machine
794
only).
795

    
796
@item -no-reboot
797
Exit instead of rebooting.
798

    
799
@item -loadvm file
800
Start right away with a saved state (@code{loadvm} in monitor)
801

    
802
@item -semihosting
803
Enable semihosting syscall emulation (ARM and M68K target machines only).
804

    
805
On ARM this implements the "Angel" interface.
806
On M68K this implements the "ColdFire GDB" interface used by libgloss.
807

    
808
Note that this allows guest direct access to the host filesystem,
809
so should only be used with trusted guest OS.
810
@end table
811

    
812
@c man end
813

    
814
@node pcsys_keys
815
@section Keys
816

    
817
@c man begin OPTIONS
818

    
819
During the graphical emulation, you can use the following keys:
820
@table @key
821
@item Ctrl-Alt-f
822
Toggle full screen
823

    
824
@item Ctrl-Alt-n
825
Switch to virtual console 'n'. Standard console mappings are:
826
@table @emph
827
@item 1
828
Target system display
829
@item 2
830
Monitor
831
@item 3
832
Serial port
833
@end table
834

    
835
@item Ctrl-Alt
836
Toggle mouse and keyboard grab.
837
@end table
838

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

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

    
845
@table @key
846
@item Ctrl-a h
847
Print this help
848
@item Ctrl-a x
849
Exit emulator
850
@item Ctrl-a s
851
Save disk data back to file (if -snapshot)
852
@item Ctrl-a t
853
toggle console timestamps
854
@item Ctrl-a b
855
Send break (magic sysrq in Linux)
856
@item Ctrl-a c
857
Switch between console and monitor
858
@item Ctrl-a Ctrl-a
859
Send Ctrl-a
860
@end table
861
@c man end
862

    
863
@ignore
864

    
865
@c man begin SEEALSO
866
The HTML documentation of QEMU for more precise information and Linux
867
user mode emulator invocation.
868
@c man end
869

    
870
@c man begin AUTHOR
871
Fabrice Bellard
872
@c man end
873

    
874
@end ignore
875

    
876
@node pcsys_monitor
877
@section QEMU Monitor
878

    
879
The QEMU monitor is used to give complex commands to the QEMU
880
emulator. You can use it to:
881

    
882
@itemize @minus
883

    
884
@item
885
Remove or insert removable media images
886
(such as CD-ROM or floppies).
887

    
888
@item
889
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
890
from a disk file.
891

    
892
@item Inspect the VM state without an external debugger.
893

    
894
@end itemize
895

    
896
@subsection Commands
897

    
898
The following commands are available:
899

    
900
@table @option
901

    
902
@item help or ? [@var{cmd}]
903
Show the help for all commands or just for command @var{cmd}.
904

    
905
@item commit
906
Commit changes to the disk images (if -snapshot is used).
907

    
908
@item info @var{subcommand}
909
Show various information about the system state.
910

    
911
@table @option
912
@item info network
913
show the various VLANs and the associated devices
914
@item info block
915
show the block devices
916
@item info registers
917
show the cpu registers
918
@item info history
919
show the command line history
920
@item info pci
921
show emulated PCI device
922
@item info usb
923
show USB devices plugged on the virtual USB hub
924
@item info usbhost
925
show all USB host devices
926
@item info capture
927
show information about active capturing
928
@item info snapshots
929
show list of VM snapshots
930
@item info mice
931
show which guest mouse is receiving events
932
@end table
933

    
934
@item q or quit
935
Quit the emulator.
936

    
937
@item eject [-f] @var{device}
938
Eject a removable medium (use -f to force it).
939

    
940
@item change @var{device} @var{setting}
941

    
942
Change the configuration of a device.
943

    
944
@table @option
945
@item change @var{diskdevice} @var{filename}
946
Change the medium for a removable disk device to point to @var{filename}. eg
947

    
948
@example
949
(qemu) change cdrom /path/to/some.iso
950
@end example
951

    
952
@item change vnc @var{display},@var{options}
953
Change the configuration of the VNC server. The valid syntax for @var{display}
954
and @var{options} are described at @ref{sec_invocation}. eg
955

    
956
@example
957
(qemu) change vnc localhost:1
958
@end example
959

    
960
@item change vnc password
961

    
962
Change the password associated with the VNC server. The monitor will prompt for
963
the new password to be entered. VNC passwords are only significant upto 8 letters.
964
eg.
965

    
966
@example
967
(qemu) change vnc password
968
Password: ********
969
@end example
970

    
971
@end table
972

    
973
@item screendump @var{filename}
974
Save screen into PPM image @var{filename}.
975

    
976
@item mouse_move @var{dx} @var{dy} [@var{dz}]
977
Move the active mouse to the specified coordinates @var{dx} @var{dy}
978
with optional scroll axis @var{dz}.
979

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

    
983
@item mouse_set @var{index}
984
Set which mouse device receives events at given @var{index}, index
985
can be obtained with
986
@example
987
info mice
988
@end example
989

    
990
@item wavcapture @var{filename} [@var{frequency} [@var{bits} [@var{channels}]]]
991
Capture audio into @var{filename}. Using sample rate @var{frequency}
992
bits per sample @var{bits} and number of channels @var{channels}.
993

    
994
Defaults:
995
@itemize @minus
996
@item Sample rate = 44100 Hz - CD quality
997
@item Bits = 16
998
@item Number of channels = 2 - Stereo
999
@end itemize
1000

    
1001
@item stopcapture @var{index}
1002
Stop capture with a given @var{index}, index can be obtained with
1003
@example
1004
info capture
1005
@end example
1006

    
1007
@item log @var{item1}[,...]
1008
Activate logging of the specified items to @file{/tmp/qemu.log}.
1009

    
1010
@item savevm [@var{tag}|@var{id}]
1011
Create a snapshot of the whole virtual machine. If @var{tag} is
1012
provided, it is used as human readable identifier. If there is already
1013
a snapshot with the same tag or ID, it is replaced. More info at
1014
@ref{vm_snapshots}.
1015

    
1016
@item loadvm @var{tag}|@var{id}
1017
Set the whole virtual machine to the snapshot identified by the tag
1018
@var{tag} or the unique snapshot ID @var{id}.
1019

    
1020
@item delvm @var{tag}|@var{id}
1021
Delete the snapshot identified by @var{tag} or @var{id}.
1022

    
1023
@item stop
1024
Stop emulation.
1025

    
1026
@item c or cont
1027
Resume emulation.
1028

    
1029
@item gdbserver [@var{port}]
1030
Start gdbserver session (default @var{port}=1234)
1031

    
1032
@item x/fmt @var{addr}
1033
Virtual memory dump starting at @var{addr}.
1034

    
1035
@item xp /@var{fmt} @var{addr}
1036
Physical memory dump starting at @var{addr}.
1037

    
1038
@var{fmt} is a format which tells the command how to format the
1039
data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
1040

    
1041
@table @var
1042
@item count
1043
is the number of items to be dumped.
1044

    
1045
@item format
1046
can be x (hex), d (signed decimal), u (unsigned decimal), o (octal),
1047
c (char) or i (asm instruction).
1048

    
1049
@item size
1050
can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
1051
@code{h} or @code{w} can be specified with the @code{i} format to
1052
respectively select 16 or 32 bit code instruction size.
1053

    
1054
@end table
1055

    
1056
Examples:
1057
@itemize
1058
@item
1059
Dump 10 instructions at the current instruction pointer:
1060
@example
1061
(qemu) x/10i $eip
1062
0x90107063:  ret
1063
0x90107064:  sti
1064
0x90107065:  lea    0x0(%esi,1),%esi
1065
0x90107069:  lea    0x0(%edi,1),%edi
1066
0x90107070:  ret
1067
0x90107071:  jmp    0x90107080
1068
0x90107073:  nop
1069
0x90107074:  nop
1070
0x90107075:  nop
1071
0x90107076:  nop
1072
@end example
1073

    
1074
@item
1075
Dump 80 16 bit values at the start of the video memory.
1076
@smallexample
1077
(qemu) xp/80hx 0xb8000
1078
0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
1079
0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
1080
0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
1081
0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
1082
0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
1083
0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
1084
0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
1085
0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
1086
0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
1087
0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
1088
@end smallexample
1089
@end itemize
1090

    
1091
@item p or print/@var{fmt} @var{expr}
1092

    
1093
Print expression value. Only the @var{format} part of @var{fmt} is
1094
used.
1095

    
1096
@item sendkey @var{keys}
1097

    
1098
Send @var{keys} to the emulator. Use @code{-} to press several keys
1099
simultaneously. Example:
1100
@example
1101
sendkey ctrl-alt-f1
1102
@end example
1103

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

    
1107
@item system_reset
1108

    
1109
Reset the system.
1110

    
1111
@item usb_add @var{devname}
1112

    
1113
Add the USB device @var{devname}.  For details of available devices see
1114
@ref{usb_devices}
1115

    
1116
@item usb_del @var{devname}
1117

    
1118
Remove the USB device @var{devname} from the QEMU virtual USB
1119
hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
1120
command @code{info usb} to see the devices you can remove.
1121

    
1122
@end table
1123

    
1124
@subsection Integer expressions
1125

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

    
1130
@node disk_images
1131
@section Disk Images
1132

    
1133
Since version 0.6.1, QEMU supports many disk image formats, including
1134
growable disk images (their size increase as non empty sectors are
1135
written), compressed and encrypted disk images. Version 0.8.3 added
1136
the new qcow2 disk image format which is essential to support VM
1137
snapshots.
1138

    
1139
@menu
1140
* disk_images_quickstart::    Quick start for disk image creation
1141
* disk_images_snapshot_mode:: Snapshot mode
1142
* vm_snapshots::              VM snapshots
1143
* qemu_img_invocation::       qemu-img Invocation
1144
* host_drives::               Using host drives
1145
* disk_images_fat_images::    Virtual FAT disk images
1146
@end menu
1147

    
1148
@node disk_images_quickstart
1149
@subsection Quick start for disk image creation
1150

    
1151
You can create a disk image with the command:
1152
@example
1153
qemu-img create myimage.img mysize
1154
@end example
1155
where @var{myimage.img} is the disk image filename and @var{mysize} is its
1156
size in kilobytes. You can add an @code{M} suffix to give the size in
1157
megabytes and a @code{G} suffix for gigabytes.
1158

    
1159
See @ref{qemu_img_invocation} for more information.
1160

    
1161
@node disk_images_snapshot_mode
1162
@subsection Snapshot mode
1163

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

    
1170
@node vm_snapshots
1171
@subsection VM snapshots
1172

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

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

    
1183
Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
1184
a VM snapshot. @code{info snapshots} lists the available snapshots
1185
with their associated information:
1186

    
1187
@example
1188
(qemu) info snapshots
1189
Snapshot devices: hda
1190
Snapshot list (from hda):
1191
ID        TAG                 VM SIZE                DATE       VM CLOCK
1192
1         start                   41M 2006-08-06 12:38:02   00:00:14.954
1193
2                                 40M 2006-08-06 12:43:29   00:00:18.633
1194
3         msys                    40M 2006-08-06 12:44:04   00:00:23.514
1195
@end example
1196

    
1197
A VM snapshot is made of a VM state info (its size is shown in
1198
@code{info snapshots}) and a snapshot of every writable disk image.
1199
The VM state info is stored in the first @code{qcow2} non removable
1200
and writable block device. The disk image snapshots are stored in
1201
every disk image. The size of a snapshot in a disk image is difficult
1202
to evaluate and is not shown by @code{info snapshots} because the
1203
associated disk sectors are shared among all the snapshots to save
1204
disk space (otherwise each snapshot would need a full copy of all the
1205
disk images).
1206

    
1207
When using the (unrelated) @code{-snapshot} option
1208
(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
1209
but they are deleted as soon as you exit QEMU.
1210

    
1211
VM snapshots currently have the following known limitations:
1212
@itemize
1213
@item
1214
They cannot cope with removable devices if they are removed or
1215
inserted after a snapshot is done.
1216
@item
1217
A few device drivers still have incomplete snapshot support so their
1218
state is not saved or restored properly (in particular USB).
1219
@end itemize
1220

    
1221
@node qemu_img_invocation
1222
@subsection @code{qemu-img} Invocation
1223

    
1224
@include qemu-img.texi
1225

    
1226
@node host_drives
1227
@subsection Using host drives
1228

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

    
1232
@subsubsection Linux
1233

    
1234
On Linux, you can directly use the host device filename instead of a
1235
disk image filename provided you have enough privileges to access
1236
it. For example, use @file{/dev/cdrom} to access to the CDROM or
1237
@file{/dev/fd0} for the floppy.
1238

    
1239
@table @code
1240
@item CD
1241
You can specify a CDROM device even if no CDROM is loaded. QEMU has
1242
specific code to detect CDROM insertion or removal. CDROM ejection by
1243
the guest OS is supported. Currently only data CDs are supported.
1244
@item Floppy
1245
You can specify a floppy device even if no floppy is loaded. Floppy
1246
removal is currently not detected accurately (if you change floppy
1247
without doing floppy access while the floppy is not loaded, the guest
1248
OS will think that the same floppy is loaded).
1249
@item Hard disks
1250
Hard disks can be used. Normally you must specify the whole disk
1251
(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
1252
see it as a partitioned disk. WARNING: unless you know what you do, it
1253
is better to only make READ-ONLY accesses to the hard disk otherwise
1254
you may corrupt your host data (use the @option{-snapshot} command
1255
line option or modify the device permissions accordingly).
1256
@end table
1257

    
1258
@subsubsection Windows
1259

    
1260
@table @code
1261
@item CD
1262
The preferred syntax is the drive letter (e.g. @file{d:}). The
1263
alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
1264
supported as an alias to the first CDROM drive.
1265

    
1266
Currently there is no specific code to handle removable media, so it
1267
is better to use the @code{change} or @code{eject} monitor commands to
1268
change or eject media.
1269
@item Hard disks
1270
Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
1271
where @var{N} is the drive number (0 is the first hard disk).
1272

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

    
1279

    
1280
@subsubsection Mac OS X
1281

    
1282
@file{/dev/cdrom} is an alias to the first CDROM.
1283

    
1284
Currently there is no specific code to handle removable media, so it
1285
is better to use the @code{change} or @code{eject} monitor commands to
1286
change or eject media.
1287

    
1288
@node disk_images_fat_images
1289
@subsection Virtual FAT disk images
1290

    
1291
QEMU can automatically create a virtual FAT disk image from a
1292
directory tree. In order to use it, just type:
1293

    
1294
@example
1295
qemu linux.img -hdb fat:/my_directory
1296
@end example
1297

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

    
1302
Floppies can be emulated with the @code{:floppy:} option:
1303

    
1304
@example
1305
qemu linux.img -fda fat:floppy:/my_directory
1306
@end example
1307

    
1308
A read/write support is available for testing (beta stage) with the
1309
@code{:rw:} option:
1310

    
1311
@example
1312
qemu linux.img -fda fat:floppy:rw:/my_directory
1313
@end example
1314

    
1315
What you should @emph{never} do:
1316
@itemize
1317
@item use non-ASCII filenames ;
1318
@item use "-snapshot" together with ":rw:" ;
1319
@item expect it to work when loadvm'ing ;
1320
@item write to the FAT directory on the host system while accessing it with the guest system.
1321
@end itemize
1322

    
1323
@node pcsys_network
1324
@section Network emulation
1325

    
1326
QEMU can simulate several network cards (PCI or ISA cards on the PC
1327
target) and can connect them to an arbitrary number of Virtual Local
1328
Area Networks (VLANs). Host TAP devices can be connected to any QEMU
1329
VLAN. VLAN can be connected between separate instances of QEMU to
1330
simulate large networks. For simpler usage, a non privileged user mode
1331
network stack can replace the TAP device to have a basic network
1332
connection.
1333

    
1334
@subsection VLANs
1335

    
1336
QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
1337
connection between several network devices. These devices can be for
1338
example QEMU virtual Ethernet cards or virtual Host ethernet devices
1339
(TAP devices).
1340

    
1341
@subsection Using TAP network interfaces
1342

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

    
1347
@subsubsection Linux host
1348

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

    
1356
See @ref{sec_invocation} to have examples of command lines using the
1357
TAP network interfaces.
1358

    
1359
@subsubsection Windows host
1360

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

    
1366
@subsection Using the user mode network stack
1367

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

    
1373
@example
1374

    
1375
         QEMU VLAN      <------>  Firewall/DHCP server <-----> Internet
1376
                           |          (10.0.2.2)
1377
                           |
1378
                           ---->  DNS server (10.0.2.3)
1379
                           |
1380
                           ---->  SMB server (10.0.2.4)
1381
@end example
1382

    
1383
The QEMU VM behaves as if it was behind a firewall which blocks all
1384
incoming connections. You can use a DHCP client to automatically
1385
configure the network in the QEMU VM. The DHCP server assign addresses
1386
to the hosts starting from 10.0.2.15.
1387

    
1388
In order to check that the user mode network is working, you can ping
1389
the address 10.0.2.2 and verify that you got an address in the range
1390
10.0.2.x from the QEMU virtual DHCP server.
1391

    
1392
Note that @code{ping} is not supported reliably to the internet as it
1393
would require root privileges. It means you can only ping the local
1394
router (10.0.2.2).
1395

    
1396
When using the built-in TFTP server, the router is also the TFTP
1397
server.
1398

    
1399
When using the @option{-redir} option, TCP or UDP connections can be
1400
redirected from the host to the guest. It allows for example to
1401
redirect X11, telnet or SSH connections.
1402

    
1403
@subsection Connecting VLANs between QEMU instances
1404

    
1405
Using the @option{-net socket} option, it is possible to make VLANs
1406
that span several QEMU instances. See @ref{sec_invocation} to have a
1407
basic example.
1408

    
1409
@node direct_linux_boot
1410
@section Direct Linux Boot
1411

    
1412
This section explains how to launch a Linux kernel inside QEMU without
1413
having to make a full bootable image. It is very useful for fast Linux
1414
kernel testing.
1415

    
1416
The syntax is:
1417
@example
1418
qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1419
@end example
1420

    
1421
Use @option{-kernel} to provide the Linux kernel image and
1422
@option{-append} to give the kernel command line arguments. The
1423
@option{-initrd} option can be used to provide an INITRD image.
1424

    
1425
When using the direct Linux boot, a disk image for the first hard disk
1426
@file{hda} is required because its boot sector is used to launch the
1427
Linux kernel.
1428

    
1429
If you do not need graphical output, you can disable it and redirect
1430
the virtual serial port and the QEMU monitor to the console with the
1431
@option{-nographic} option. The typical command line is:
1432
@example
1433
qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1434
     -append "root=/dev/hda console=ttyS0" -nographic
1435
@end example
1436

    
1437
Use @key{Ctrl-a c} to switch between the serial console and the
1438
monitor (@pxref{pcsys_keys}).
1439

    
1440
@node pcsys_usb
1441
@section USB emulation
1442

    
1443
QEMU emulates a PCI UHCI USB controller. You can virtually plug
1444
virtual USB devices or real host USB devices (experimental, works only
1445
on Linux hosts).  Qemu will automatically create and connect virtual USB hubs
1446
as necessary to connect multiple USB devices.
1447

    
1448
@menu
1449
* usb_devices::
1450
* host_usb_devices::
1451
@end menu
1452
@node usb_devices
1453
@subsection Connecting USB devices
1454

    
1455
USB devices can be connected with the @option{-usbdevice} commandline option
1456
or the @code{usb_add} monitor command.  Available devices are:
1457

    
1458
@table @var
1459
@item @code{mouse}
1460
Virtual Mouse.  This will override the PS/2 mouse emulation when activated.
1461
@item @code{tablet}
1462
Pointer device that uses absolute coordinates (like a touchscreen).
1463
This means qemu is able to report the mouse position without having
1464
to grab the mouse.  Also overrides the PS/2 mouse emulation when activated.
1465
@item @code{disk:@var{file}}
1466
Mass storage device based on @var{file} (@pxref{disk_images})
1467
@item @code{host:@var{bus.addr}}
1468
Pass through the host device identified by @var{bus.addr}
1469
(Linux only)
1470
@item @code{host:@var{vendor_id:product_id}}
1471
Pass through the host device identified by @var{vendor_id:product_id}
1472
(Linux only)
1473
@item @code{wacom-tablet}
1474
Virtual Wacom PenPartner tablet.  This device is similar to the @code{tablet}
1475
above but it can be used with the tslib library because in addition to touch
1476
coordinates it reports touch pressure.
1477
@item @code{keyboard}
1478
Standard USB keyboard.  Will override the PS/2 keyboard (if present).
1479
@end table
1480

    
1481
@node host_usb_devices
1482
@subsection Using host USB devices on a Linux host
1483

    
1484
WARNING: this is an experimental feature. QEMU will slow down when
1485
using it. USB devices requiring real time streaming (i.e. USB Video
1486
Cameras) are not supported yet.
1487

    
1488
@enumerate
1489
@item If you use an early Linux 2.4 kernel, verify that no Linux driver
1490
is actually using the USB device. A simple way to do that is simply to
1491
disable the corresponding kernel module by renaming it from @file{mydriver.o}
1492
to @file{mydriver.o.disabled}.
1493

    
1494
@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1495
@example
1496
ls /proc/bus/usb
1497
001  devices  drivers
1498
@end example
1499

    
1500
@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:
1501
@example
1502
chown -R myuid /proc/bus/usb
1503
@end example
1504

    
1505
@item Launch QEMU and do in the monitor:
1506
@example
1507
info usbhost
1508
  Device 1.2, speed 480 Mb/s
1509
    Class 00: USB device 1234:5678, USB DISK
1510
@end example
1511
You should see the list of the devices you can use (Never try to use
1512
hubs, it won't work).
1513

    
1514
@item Add the device in QEMU by using:
1515
@example
1516
usb_add host:1234:5678
1517
@end example
1518

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

    
1522
@item Now you can try to use the host USB device in QEMU.
1523

    
1524
@end enumerate
1525

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

    
1529
@node vnc_security
1530
@section VNC security
1531

    
1532
The VNC server capability provides access to the graphical console
1533
of the guest VM across the network. This has a number of security
1534
considerations depending on the deployment scenarios.
1535

    
1536
@menu
1537
* vnc_sec_none::
1538
* vnc_sec_password::
1539
* vnc_sec_certificate::
1540
* vnc_sec_certificate_verify::
1541
* vnc_sec_certificate_pw::
1542
* vnc_generate_cert::
1543
@end menu
1544
@node vnc_sec_none
1545
@subsection Without passwords
1546

    
1547
The simplest VNC server setup does not include any form of authentication.
1548
For this setup it is recommended to restrict it to listen on a UNIX domain
1549
socket only. For example
1550

    
1551
@example
1552
qemu [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
1553
@end example
1554

    
1555
This ensures that only users on local box with read/write access to that
1556
path can access the VNC server. To securely access the VNC server from a
1557
remote machine, a combination of netcat+ssh can be used to provide a secure
1558
tunnel.
1559

    
1560
@node vnc_sec_password
1561
@subsection With passwords
1562

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

    
1572
@example
1573
qemu [...OPTIONS...] -vnc :1,password -monitor stdio
1574
(qemu) change vnc password
1575
Password: ********
1576
(qemu)
1577
@end example
1578

    
1579
@node vnc_sec_certificate
1580
@subsection With x509 certificates
1581

    
1582
The QEMU VNC server also implements the VeNCrypt extension allowing use of
1583
TLS for encryption of the session, and x509 certificates for authentication.
1584
The use of x509 certificates is strongly recommended, because TLS on its
1585
own is susceptible to man-in-the-middle attacks. Basic x509 certificate
1586
support provides a secure session, but no authentication. This allows any
1587
client to connect, and provides an encrypted session.
1588

    
1589
@example
1590
qemu [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
1591
@end example
1592

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

    
1599
@node vnc_sec_certificate_verify
1600
@subsection With x509 certificates and client verification
1601

    
1602
Certificates can also provide a means to authenticate the client connecting.
1603
The server will request that the client provide a certificate, which it will
1604
then validate against the CA certificate. This is a good choice if deploying
1605
in an environment with a private internal certificate authority.
1606

    
1607
@example
1608
qemu [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
1609
@end example
1610

    
1611

    
1612
@node vnc_sec_certificate_pw
1613
@subsection With x509 certificates, client verification and passwords
1614

    
1615
Finally, the previous method can be combined with VNC password authentication
1616
to provide two layers of authentication for clients.
1617

    
1618
@example
1619
qemu [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
1620
(qemu) change vnc password
1621
Password: ********
1622
(qemu)
1623
@end example
1624

    
1625
@node vnc_generate_cert
1626
@subsection Generating certificates for VNC
1627

    
1628
The GNU TLS packages provides a command called @code{certtool} which can
1629
be used to generate certificates and keys in PEM format. At a minimum it
1630
is neccessary to setup a certificate authority, and issue certificates to
1631
each server. If using certificates for authentication, then each client
1632
will also need to be issued a certificate. The recommendation is for the
1633
server to keep its certificates in either @code{/etc/pki/qemu} or for
1634
unprivileged users in @code{$HOME/.pki/qemu}.
1635

    
1636
@menu
1637
* vnc_generate_ca::
1638
* vnc_generate_server::
1639
* vnc_generate_client::
1640
@end menu
1641
@node vnc_generate_ca
1642
@subsubsection Setup the Certificate Authority
1643

    
1644
This step only needs to be performed once per organization / organizational
1645
unit. First the CA needs a private key. This key must be kept VERY secret
1646
and secure. If this key is compromised the entire trust chain of the certificates
1647
issued with it is lost.
1648

    
1649
@example
1650
# certtool --generate-privkey > ca-key.pem
1651
@end example
1652

    
1653
A CA needs to have a public certificate. For simplicity it can be a self-signed
1654
certificate, or one issue by a commercial certificate issuing authority. To
1655
generate a self-signed certificate requires one core piece of information, the
1656
name of the organization.
1657

    
1658
@example
1659
# cat > ca.info <<EOF
1660
cn = Name of your organization
1661
ca
1662
cert_signing_key
1663
EOF
1664
# certtool --generate-self-signed \
1665
           --load-privkey ca-key.pem
1666
           --template ca.info \
1667
           --outfile ca-cert.pem
1668
@end example
1669

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

    
1673
@node vnc_generate_server
1674
@subsubsection Issuing server certificates
1675

    
1676
Each server (or host) needs to be issued with a key and certificate. When connecting
1677
the certificate is sent to the client which validates it against the CA certificate.
1678
The core piece of information for a server certificate is the hostname. This should
1679
be the fully qualified hostname that the client will connect with, since the client
1680
will typically also verify the hostname in the certificate. On the host holding the
1681
secure CA private key:
1682

    
1683
@example
1684
# cat > server.info <<EOF
1685
organization = Name  of your organization
1686
cn = server.foo.example.com
1687
tls_www_server
1688
encryption_key
1689
signing_key
1690
EOF
1691
# certtool --generate-privkey > server-key.pem
1692
# certtool --generate-certificate \
1693
           --load-ca-certificate ca-cert.pem \
1694
           --load-ca-privkey ca-key.pem \
1695
           --load-privkey server server-key.pem \
1696
           --template server.info \
1697
           --outfile server-cert.pem
1698
@end example
1699

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

    
1704
@node vnc_generate_client
1705
@subsubsection Issuing client certificates
1706

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

    
1713
@example
1714
# cat > client.info <<EOF
1715
country = GB
1716
state = London
1717
locality = London
1718
organiazation = Name of your organization
1719
cn = client.foo.example.com
1720
tls_www_client
1721
encryption_key
1722
signing_key
1723
EOF
1724
# certtool --generate-privkey > client-key.pem
1725
# certtool --generate-certificate \
1726
           --load-ca-certificate ca-cert.pem \
1727
           --load-ca-privkey ca-key.pem \
1728
           --load-privkey client-key.pem \
1729
           --template client.info \
1730
           --outfile client-cert.pem
1731
@end example
1732

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

    
1736
@node gdb_usage
1737
@section GDB usage
1738

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

    
1742
In order to use gdb, launch qemu with the '-s' option. It will wait for a
1743
gdb connection:
1744
@example
1745
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1746
       -append "root=/dev/hda"
1747
Connected to host network interface: tun0
1748
Waiting gdb connection on port 1234
1749
@end example
1750

    
1751
Then launch gdb on the 'vmlinux' executable:
1752
@example
1753
> gdb vmlinux
1754
@end example
1755

    
1756
In gdb, connect to QEMU:
1757
@example
1758
(gdb) target remote localhost:1234
1759
@end example
1760

    
1761
Then you can use gdb normally. For example, type 'c' to launch the kernel:
1762
@example
1763
(gdb) c
1764
@end example
1765

    
1766
Here are some useful tips in order to use gdb on system code:
1767

    
1768
@enumerate
1769
@item
1770
Use @code{info reg} to display all the CPU registers.
1771
@item
1772
Use @code{x/10i $eip} to display the code at the PC position.
1773
@item
1774
Use @code{set architecture i8086} to dump 16 bit code. Then use
1775
@code{x/10i $cs*16+$eip} to dump the code at the PC position.
1776
@end enumerate
1777

    
1778
@node pcsys_os_specific
1779
@section Target OS specific information
1780

    
1781
@subsection Linux
1782

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

    
1787
When using a 2.6 guest Linux kernel, you should add the option
1788
@code{clock=pit} on the kernel command line because the 2.6 Linux
1789
kernels make very strict real time clock checks by default that QEMU
1790
cannot simulate exactly.
1791

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

    
1798
@subsection Windows
1799

    
1800
If you have a slow host, using Windows 95 is better as it gives the
1801
best speed. Windows 2000 is also a good choice.
1802

    
1803
@subsubsection SVGA graphic modes support
1804

    
1805
QEMU emulates a Cirrus Logic GD5446 Video
1806
card. All Windows versions starting from Windows 95 should recognize
1807
and use this graphic card. For optimal performances, use 16 bit color
1808
depth in the guest and the host OS.
1809

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

    
1815
@subsubsection CPU usage reduction
1816

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

    
1823
@subsubsection Windows 2000 disk full problem
1824

    
1825
Windows 2000 has a bug which gives a disk full problem during its
1826
installation. When installing it, use the @option{-win2k-hack} QEMU
1827
option to enable a specific workaround. After Windows 2000 is
1828
installed, you no longer need this option (this option slows down the
1829
IDE transfers).
1830

    
1831
@subsubsection Windows 2000 shutdown
1832

    
1833
Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1834
can. It comes from the fact that Windows 2000 does not automatically
1835
use the APM driver provided by the BIOS.
1836

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

    
1844
@subsubsection Share a directory between Unix and Windows
1845

    
1846
See @ref{sec_invocation} about the help of the option @option{-smb}.
1847

    
1848
@subsubsection Windows XP security problem
1849

    
1850
Some releases of Windows XP install correctly but give a security
1851
error when booting:
1852
@example
1853
A problem is preventing Windows from accurately checking the
1854
license for this computer. Error code: 0x800703e6.
1855
@end example
1856

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

    
1863
@subsection MS-DOS and FreeDOS
1864

    
1865
@subsubsection CPU usage reduction
1866

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

    
1872
@node QEMU System emulator for non PC targets
1873
@chapter QEMU System emulator for non PC targets
1874

    
1875
QEMU is a generic emulator and it emulates many non PC
1876
machines. Most of the options are similar to the PC emulator. The
1877
differences are mentioned in the following sections.
1878

    
1879
@menu
1880
* QEMU PowerPC System emulator::
1881
* Sparc32 System emulator::
1882
* Sparc64 System emulator::
1883
* MIPS System emulator::
1884
* ARM System emulator::
1885
* ColdFire System emulator::
1886
@end menu
1887

    
1888
@node QEMU PowerPC System emulator
1889
@section QEMU PowerPC System emulator
1890

    
1891
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1892
or PowerMac PowerPC system.
1893

    
1894
QEMU emulates the following PowerMac peripherals:
1895

    
1896
@itemize @minus
1897
@item
1898
UniNorth PCI Bridge
1899
@item
1900
PCI VGA compatible card with VESA Bochs Extensions
1901
@item
1902
2 PMAC IDE interfaces with hard disk and CD-ROM support
1903
@item
1904
NE2000 PCI adapters
1905
@item
1906
Non Volatile RAM
1907
@item
1908
VIA-CUDA with ADB keyboard and mouse.
1909
@end itemize
1910

    
1911
QEMU emulates the following PREP peripherals:
1912

    
1913
@itemize @minus
1914
@item
1915
PCI Bridge
1916
@item
1917
PCI VGA compatible card with VESA Bochs Extensions
1918
@item
1919
2 IDE interfaces with hard disk and CD-ROM support
1920
@item
1921
Floppy disk
1922
@item
1923
NE2000 network adapters
1924
@item
1925
Serial port
1926
@item
1927
PREP Non Volatile RAM
1928
@item
1929
PC compatible keyboard and mouse.
1930
@end itemize
1931

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

    
1935
@c man begin OPTIONS
1936

    
1937
The following options are specific to the PowerPC emulation:
1938

    
1939
@table @option
1940

    
1941
@item -g WxH[xDEPTH]
1942

    
1943
Set the initial VGA graphic mode. The default is 800x600x15.
1944

    
1945
@end table
1946

    
1947
@c man end
1948

    
1949

    
1950
More information is available at
1951
@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
1952

    
1953
@node Sparc32 System emulator
1954
@section Sparc32 System emulator
1955

    
1956
Use the executable @file{qemu-system-sparc} to simulate a SPARCstation
1957
5, SPARCstation 10, or SPARCserver 600MP (sun4m architecture). The
1958
emulation is somewhat complete.  SMP up to 16 CPUs is supported, but
1959
Linux limits the number of usable CPUs to 4.
1960

    
1961
QEMU emulates the following sun4m peripherals:
1962

    
1963
@itemize @minus
1964
@item
1965
IOMMU
1966
@item
1967
TCX Frame buffer
1968
@item
1969
Lance (Am7990) Ethernet
1970
@item
1971
Non Volatile RAM M48T08
1972
@item
1973
Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1974
and power/reset logic
1975
@item
1976
ESP SCSI controller with hard disk and CD-ROM support
1977
@item
1978
Floppy drive (not on SS-600MP)
1979
@item
1980
CS4231 sound device (only on SS-5, not working yet)
1981
@end itemize
1982

    
1983
The number of peripherals is fixed in the architecture.  Maximum
1984
memory size depends on the machine type, for SS-5 it is 256MB and for
1985
SS-10 and SS-600MP 2047MB.
1986

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

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

    
1996
@c man begin OPTIONS
1997

    
1998
The following options are specific to the Sparc32 emulation:
1999

    
2000
@table @option
2001

    
2002
@item -g WxHx[xDEPTH]
2003

    
2004
Set the initial TCX graphic mode. The default is 1024x768x8, currently
2005
the only other possible mode is 1024x768x24.
2006

    
2007
@item -prom-env string
2008

    
2009
Set OpenBIOS variables in NVRAM, for example:
2010

    
2011
@example
2012
qemu-system-sparc -prom-env 'auto-boot?=false' \
2013
 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
2014
@end example
2015

    
2016
@item -M [SS-5|SS-10]
2017

    
2018
Set the emulated machine type. Default is SS-5.
2019

    
2020
@end table
2021

    
2022
@c man end
2023

    
2024
@node Sparc64 System emulator
2025
@section Sparc64 System emulator
2026

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

    
2030
QEMU emulates the following sun4u peripherals:
2031

    
2032
@itemize @minus
2033
@item
2034
UltraSparc IIi APB PCI Bridge
2035
@item
2036
PCI VGA compatible card with VESA Bochs Extensions
2037
@item
2038
Non Volatile RAM M48T59
2039
@item
2040
PC-compatible serial ports
2041
@end itemize
2042

    
2043
@node MIPS System emulator
2044
@section MIPS System emulator
2045

    
2046
Use the executable @file{qemu-system-mips} to simulate a MIPS machine.
2047
Three different machine types are emulated:
2048

    
2049
@itemize @minus
2050
@item
2051
A generic ISA PC-like machine "mips"
2052
@item
2053
The MIPS Malta prototype board "malta"
2054
@item
2055
An ACER Pica "pica61"
2056
@item
2057
MIPS emulator pseudo board "mipssim"
2058
@end itemize
2059

    
2060
The generic emulation is supported by Debian 'Etch' and is able to
2061
install Debian into a virtual disk image. The following devices are
2062
emulated:
2063

    
2064
@itemize @minus
2065
@item
2066
A range of MIPS CPUs, default is the 24Kf
2067
@item
2068
PC style serial port
2069
@item
2070
PC style IDE disk
2071
@item
2072
NE2000 network card
2073
@end itemize
2074

    
2075
The Malta emulation supports the following devices:
2076

    
2077
@itemize @minus
2078
@item
2079
Core board with MIPS 24Kf CPU and Galileo system controller
2080
@item
2081
PIIX4 PCI/USB/SMbus controller
2082
@item
2083
The Multi-I/O chip's serial device
2084
@item
2085
PCnet32 PCI network card
2086
@item
2087
Malta FPGA serial device
2088
@item
2089
Cirrus VGA graphics card
2090
@end itemize
2091

    
2092
The ACER Pica emulation supports:
2093

    
2094
@itemize @minus
2095
@item
2096
MIPS R4000 CPU
2097
@item
2098
PC-style IRQ and DMA controllers
2099
@item
2100
PC Keyboard
2101
@item
2102
IDE controller
2103
@end itemize
2104

    
2105
The mipssim pseudo board emulation provides an environment similiar
2106
to what the proprietary MIPS emulator uses for running Linux.
2107
It supports:
2108

    
2109
@itemize @minus
2110
@item
2111
A range of MIPS CPUs, default is the 24Kf
2112
@item
2113
PC style serial port
2114
@item
2115
MIPSnet network emulation
2116
@end itemize
2117

    
2118
@node ARM System emulator
2119
@section ARM System emulator
2120

    
2121
Use the executable @file{qemu-system-arm} to simulate a ARM
2122
machine. The ARM Integrator/CP board is emulated with the following
2123
devices:
2124

    
2125
@itemize @minus
2126
@item
2127
ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
2128
@item
2129
Two PL011 UARTs
2130
@item
2131
SMC 91c111 Ethernet adapter
2132
@item
2133
PL110 LCD controller
2134
@item
2135
PL050 KMI with PS/2 keyboard and mouse.
2136
@item
2137
PL181 MultiMedia Card Interface with SD card.
2138
@end itemize
2139

    
2140
The ARM Versatile baseboard is emulated with the following devices:
2141

    
2142
@itemize @minus
2143
@item
2144
ARM926E, ARM1136 or Cortex-A8 CPU
2145
@item
2146
PL190 Vectored Interrupt Controller
2147
@item
2148
Four PL011 UARTs
2149
@item
2150
SMC 91c111 Ethernet adapter
2151
@item
2152
PL110 LCD controller
2153
@item
2154
PL050 KMI with PS/2 keyboard and mouse.
2155
@item
2156
PCI host bridge.  Note the emulated PCI bridge only provides access to
2157
PCI memory space.  It does not provide access to PCI IO space.
2158
This means some devices (eg. ne2k_pci NIC) are not usable, and others
2159
(eg. rtl8139 NIC) are only usable when the guest drivers use the memory
2160
mapped control registers.
2161
@item
2162
PCI OHCI USB controller.
2163
@item
2164
LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
2165
@item
2166
PL181 MultiMedia Card Interface with SD card.
2167
@end itemize
2168

    
2169
The ARM RealView Emulation baseboard is emulated with the following devices:
2170

    
2171
@itemize @minus
2172
@item
2173
ARM926E, ARM1136, ARM11MPCORE(x4) or Cortex-A8 CPU
2174
@item
2175
ARM AMBA Generic/Distributed Interrupt Controller
2176
@item
2177
Four PL011 UARTs
2178
@item
2179
SMC 91c111 Ethernet adapter
2180
@item
2181
PL110 LCD controller
2182
@item
2183
PL050 KMI with PS/2 keyboard and mouse
2184
@item
2185
PCI host bridge
2186
@item
2187
PCI OHCI USB controller
2188
@item
2189
LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
2190
@item
2191
PL181 MultiMedia Card Interface with SD card.
2192
@end itemize
2193

    
2194
The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
2195
and "Terrier") emulation includes the following peripherals:
2196

    
2197
@itemize @minus
2198
@item
2199
Intel PXA270 System-on-chip (ARM V5TE core)
2200
@item
2201
NAND Flash memory
2202
@item
2203
IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
2204
@item
2205
On-chip OHCI USB controller
2206
@item
2207
On-chip LCD controller
2208
@item
2209
On-chip Real Time Clock
2210
@item
2211
TI ADS7846 touchscreen controller on SSP bus
2212
@item
2213
Maxim MAX1111 analog-digital converter on I@math{^2}C bus
2214
@item
2215
GPIO-connected keyboard controller and LEDs
2216
@item
2217
Secure Digital card connected to PXA MMC/SD host
2218
@item
2219
Three on-chip UARTs
2220
@item
2221
WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
2222
@end itemize
2223

    
2224
The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
2225
following elements:
2226

    
2227
@itemize @minus
2228
@item
2229
Texas Instruments OMAP310 System-on-chip (ARM 925T core)
2230
@item
2231
ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
2232
@item
2233
On-chip LCD controller
2234
@item
2235
On-chip Real Time Clock
2236
@item
2237
TI TSC2102i touchscreen controller / analog-digital converter / Audio
2238
CODEC, connected through MicroWire and I@math{^2}S busses
2239
@item
2240
GPIO-connected matrix keypad
2241
@item
2242
Secure Digital card connected to OMAP MMC/SD host
2243
@item
2244
Three on-chip UARTs
2245
@end itemize
2246

    
2247
The Luminary Micro Stellaris LM3S811EVB emulation includes the following
2248
devices:
2249

    
2250
@itemize @minus
2251
@item
2252
Cortex-M3 CPU core.
2253
@item
2254
64k Flash and 8k SRAM.
2255
@item
2256
Timers, UARTs, ADC and I@math{^2}C interface.
2257
@item
2258
OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
2259
@end itemize
2260

    
2261
The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
2262
devices:
2263

    
2264
@itemize @minus
2265
@item
2266
Cortex-M3 CPU core.
2267
@item
2268
256k Flash and 64k SRAM.
2269
@item
2270
Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
2271
@item
2272
OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
2273
@end itemize
2274

    
2275
A Linux 2.6 test image is available on the QEMU web site. More
2276
information is available in the QEMU mailing-list archive.
2277

    
2278
@node ColdFire System emulator
2279
@section ColdFire System emulator
2280

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

    
2284
The M5208EVB emulation includes the following devices:
2285

    
2286
@itemize @minus
2287
@item
2288
MCF5208 ColdFire V2 Microprocessor (ISA A+ with EMAC).
2289
@item
2290
Three Two on-chip UARTs.
2291
@item
2292
Fast Ethernet Controller (FEC)
2293
@end itemize
2294

    
2295
The AN5206 emulation includes the following devices:
2296

    
2297
@itemize @minus
2298
@item
2299
MCF5206 ColdFire V2 Microprocessor.
2300
@item
2301
Two on-chip UARTs.
2302
@end itemize
2303

    
2304
@node QEMU User space emulator
2305
@chapter QEMU User space emulator
2306

    
2307
@menu
2308
* Supported Operating Systems ::
2309
* Linux User space emulator::
2310
* Mac OS X/Darwin User space emulator ::
2311
@end menu
2312

    
2313
@node Supported Operating Systems
2314
@section Supported Operating Systems
2315

    
2316
The following OS are supported in user space emulation:
2317

    
2318
@itemize @minus
2319
@item
2320
Linux (referred as qemu-linux-user)
2321
@item
2322
Mac OS X/Darwin (referred as qemu-darwin-user)
2323
@end itemize
2324

    
2325
@node Linux User space emulator
2326
@section Linux User space emulator
2327

    
2328
@menu
2329
* Quick Start::
2330
* Wine launch::
2331
* Command line options::
2332
* Other binaries::
2333
@end menu
2334

    
2335
@node Quick Start
2336
@subsection Quick Start
2337

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

    
2341
@itemize
2342

    
2343
@item On x86, you can just try to launch any process by using the native
2344
libraries:
2345

    
2346
@example
2347
qemu-i386 -L / /bin/ls
2348
@end example
2349

    
2350
@code{-L /} tells that the x86 dynamic linker must be searched with a
2351
@file{/} prefix.
2352

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

    
2356
@example
2357
qemu-i386 -L / qemu-i386 -L / /bin/ls
2358
@end example
2359

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

    
2364
@example
2365
unset LD_LIBRARY_PATH
2366
@end example
2367

    
2368
Then you can launch the precompiled @file{ls} x86 executable:
2369

    
2370
@example
2371
qemu-i386 tests/i386/ls
2372
@end example
2373
You can look at @file{qemu-binfmt-conf.sh} so that
2374
QEMU is automatically launched by the Linux kernel when you try to
2375
launch x86 executables. It requires the @code{binfmt_misc} module in the
2376
Linux kernel.
2377

    
2378
@item The x86 version of QEMU is also included. You can try weird things such as:
2379
@example
2380
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
2381
          /usr/local/qemu-i386/bin/ls-i386
2382
@end example
2383

    
2384
@end itemize
2385

    
2386
@node Wine launch
2387
@subsection Wine launch
2388

    
2389
@itemize
2390

    
2391
@item Ensure that you have a working QEMU with the x86 glibc
2392
distribution (see previous section). In order to verify it, you must be
2393
able to do:
2394

    
2395
@example
2396
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
2397
@end example
2398

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

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

    
2406
@item Then you can try the example @file{putty.exe}:
2407

    
2408
@example
2409
qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
2410
          /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
2411
@end example
2412

    
2413
@end itemize
2414

    
2415
@node Command line options
2416
@subsection Command line options
2417

    
2418
@example
2419
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
2420
@end example
2421

    
2422
@table @option
2423
@item -h
2424
Print the help
2425
@item -L path
2426
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
2427
@item -s size
2428
Set the x86 stack size in bytes (default=524288)
2429
@end table
2430

    
2431
Debug options:
2432

    
2433
@table @option
2434
@item -d
2435
Activate log (logfile=/tmp/qemu.log)
2436
@item -p pagesize
2437
Act as if the host page size was 'pagesize' bytes
2438
@end table
2439

    
2440
@node Other binaries
2441
@subsection Other binaries
2442

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

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

    
2451
The binary format is detected automatically.
2452

    
2453
@command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries
2454
(Sparc64 CPU, 32 bit ABI).
2455

    
2456
@command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
2457
SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
2458

    
2459
@node Mac OS X/Darwin User space emulator
2460
@section Mac OS X/Darwin User space emulator
2461

    
2462
@menu
2463
* Mac OS X/Darwin Status::
2464
* Mac OS X/Darwin Quick Start::
2465
* Mac OS X/Darwin Command line options::
2466
@end menu
2467

    
2468
@node Mac OS X/Darwin Status
2469
@subsection Mac OS X/Darwin Status
2470

    
2471
@itemize @minus
2472
@item
2473
target x86 on x86: Most apps (Cocoa and Carbon too) works. [1]
2474
@item
2475
target PowerPC on x86: Not working as the ppc commpage can't be mapped (yet!)
2476
@item
2477
target PowerPC on PowerPC: Most apps (Cocoa and Carbon too) works. [1]
2478
@item
2479
target x86 on PowerPC: most utilities work. Cocoa and Carbon apps are not yet supported.
2480
@end itemize
2481

    
2482
[1] If you're host commpage can be executed by qemu.
2483

    
2484
@node Mac OS X/Darwin Quick Start
2485
@subsection Quick Start
2486

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

    
2492
@itemize
2493

    
2494
@item On x86, you can just try to launch any process by using the native
2495
libraries:
2496

    
2497
@example
2498
qemu-i386 /bin/ls
2499
@end example
2500

    
2501
or to run the ppc version of the executable:
2502

    
2503
@example
2504
qemu-ppc /bin/ls
2505
@end example
2506

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

    
2510
@example
2511
qemu-i386 -L /opt/x86_root/ /bin/ls
2512
@end example
2513

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

    
2517
@end itemize
2518

    
2519
@node Mac OS X/Darwin Command line options
2520
@subsection Command line options
2521

    
2522
@example
2523
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
2524
@end example
2525

    
2526
@table @option
2527
@item -h
2528
Print the help
2529
@item -L path
2530
Set the library root path (default=/)
2531
@item -s size
2532
Set the stack size in bytes (default=524288)
2533
@end table
2534

    
2535
Debug options:
2536

    
2537
@table @option
2538
@item -d
2539
Activate log (logfile=/tmp/qemu.log)
2540
@item -p pagesize
2541
Act as if the host page size was 'pagesize' bytes
2542
@end table
2543

    
2544
@node compilation
2545
@chapter Compilation from the sources
2546

    
2547
@menu
2548
* Linux/Unix::
2549
* Windows::
2550
* Cross compilation for Windows with Linux::
2551
* Mac OS X::
2552
@end menu
2553

    
2554
@node Linux/Unix
2555
@section Linux/Unix
2556

    
2557
@subsection Compilation
2558

    
2559
First you must decompress the sources:
2560
@example
2561
cd /tmp
2562
tar zxvf qemu-x.y.z.tar.gz
2563
cd qemu-x.y.z
2564
@end example
2565

    
2566
Then you configure QEMU and build it (usually no options are needed):
2567
@example
2568
./configure
2569
make
2570
@end example
2571

    
2572
Then type as root user:
2573
@example
2574
make install
2575
@end example
2576
to install QEMU in @file{/usr/local}.
2577

    
2578
@subsection GCC version
2579

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

    
2588
@node Windows
2589
@section Windows
2590

    
2591
@itemize
2592
@item Install the current versions of MSYS and MinGW from
2593
@url{http://www.mingw.org/}. You can find detailed installation
2594
instructions in the download section and the FAQ.
2595

    
2596
@item Download
2597
the MinGW development library of SDL 1.2.x
2598
(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
2599
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
2600
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
2601
directory. Edit the @file{sdl-config} script so that it gives the
2602
correct SDL directory when invoked.
2603

    
2604
@item Extract the current version of QEMU.
2605

    
2606
@item Start the MSYS shell (file @file{msys.bat}).
2607

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

    
2612
@item You can install QEMU in @file{Program Files/Qemu} by typing
2613
@file{make install}. Don't forget to copy @file{SDL.dll} in
2614
@file{Program Files/Qemu}.
2615

    
2616
@end itemize
2617

    
2618
@node Cross compilation for Windows with Linux
2619
@section Cross compilation for Windows with Linux
2620

    
2621
@itemize
2622
@item
2623
Install the MinGW cross compilation tools available at
2624
@url{http://www.mingw.org/}.
2625

    
2626
@item
2627
Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
2628
unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
2629
variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
2630
the QEMU configuration script.
2631

    
2632
@item
2633
Configure QEMU for Windows cross compilation:
2634
@example
2635
./configure --enable-mingw32
2636
@end example
2637
If necessary, you can change the cross-prefix according to the prefix
2638
chosen for the MinGW tools with --cross-prefix. You can also use
2639
--prefix to set the Win32 install path.
2640

    
2641
@item You can install QEMU in the installation directory by typing
2642
@file{make install}. Don't forget to copy @file{SDL.dll} in the
2643
installation directory.
2644

    
2645
@end itemize
2646

    
2647
Note: Currently, Wine does not seem able to launch
2648
QEMU for Win32.
2649

    
2650
@node Mac OS X
2651
@section Mac OS X
2652

    
2653
The Mac OS X patches are not fully merged in QEMU, so you should look
2654
at the QEMU mailing list archive to have all the necessary
2655
information.
2656

    
2657
@node Index
2658
@chapter Index
2659
@printindex cp
2660

    
2661
@bye