Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 42550fde

History | View | Annotate | Download (57.2 kB)

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

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

    
19
@ifnottex
20
@node Top
21
@top
22

    
23
@menu
24
* Introduction::
25
* Installation::
26
* QEMU PC System emulator::
27
* QEMU System emulator for non PC targets::
28
* QEMU Linux 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 (Linux host only). In this mode, QEMU can launch
61
Linux 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 (ARM926E or 1026E processor)
81
@item ARM Versatile baseboard (ARM926E)
82
@end itemize
83

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

    
86
@node Installation
87
@chapter Installation
88

    
89
If you want to compile QEMU yourself, see @ref{compilation}.
90

    
91
@menu
92
* install_linux::   Linux
93
* install_windows:: Windows
94
* install_mac::     Macintosh
95
@end menu
96

    
97
@node install_linux
98
@section Linux
99

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

    
103
@node install_windows
104
@section Windows
105

    
106
Download the experimental binary installer at
107
@url{http://www.free.oszoo.org/@/download.html}.
108

    
109
@node install_mac
110
@section Mac OS X
111

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

    
115
@node QEMU PC System emulator
116
@chapter QEMU PC System emulator
117

    
118
@menu
119
* pcsys_introduction:: Introduction
120
* pcsys_quickstart::   Quick Start
121
* sec_invocation::     Invocation
122
* pcsys_keys::         Keys
123
* pcsys_monitor::      QEMU Monitor
124
* disk_images::        Disk Images
125
* pcsys_network::      Network emulation
126
* direct_linux_boot::  Direct Linux Boot
127
* pcsys_usb::          USB emulation
128
* gdb_usage::          GDB usage
129
* pcsys_os_specific::  Target OS specific information
130
@end menu
131

    
132
@node pcsys_introduction
133
@section Introduction
134

    
135
@c man begin DESCRIPTION
136

    
137
The QEMU PC System emulator simulates the
138
following peripherals:
139

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

    
166
SMP is supported with up to 255 CPUs.
167

    
168
Note that adlib is only available when QEMU was configured with
169
-enable-adlib
170

    
171
QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
172
VGA BIOS.
173

    
174
QEMU uses YM3812 emulation by Tatsuyuki Satoh.
175

    
176
@c man end
177

    
178
@node pcsys_quickstart
179
@section Quick Start
180

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

    
183
@example
184
qemu linux.img
185
@end example
186

    
187
Linux should boot and give you a prompt.
188

    
189
@node sec_invocation
190
@section Invocation
191

    
192
@example
193
@c man begin SYNOPSIS
194
usage: qemu [options] [disk_image]
195
@c man end
196
@end example
197

    
198
@c man begin OPTIONS
199
@var{disk_image} is a raw hard disk image for IDE hard disk 0.
200

    
201
General options:
202
@table @option
203
@item -M machine
204
Select the emulated machine (@code{-M ?} for list)
205

    
206
@item -fda file
207
@item -fdb file
208
Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can
209
use the host floppy by using @file{/dev/fd0} as filename (@pxref{host_drives}).
210

    
211
@item -hda file
212
@item -hdb file
213
@item -hdc file
214
@item -hdd file
215
Use @var{file} as hard disk 0, 1, 2 or 3 image (@pxref{disk_images}).
216

    
217
@item -cdrom file
218
Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and
219
@option{-cdrom} at the same time). You can use the host CD-ROM by
220
using @file{/dev/cdrom} as filename (@pxref{host_drives}).
221

    
222
@item -boot [a|c|d]
223
Boot on floppy (a), hard disk (c) or CD-ROM (d). Hard disk boot is
224
the default.
225

    
226
@item -disk ide,img=file[,hdx=a..dd][,type=disk|cdrom]
227
Use @var{file} as the IDE disk/CD-ROM image. The defaults are: hdx=a,type=disk
228

    
229
@item -disk scsi,img=file[,sdx=a..g][,type=disk|cdrom][,id=n]
230
Use @var{file} as the SCSI disk/CD-ROM image. The defaults are: sdx=a,type=disk,id='auto assign'
231

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

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

    
241
@item -m megs
242
Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
243

    
244
@item -smp n
245
Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
246
CPUs are supported.
247

    
248
@item -nographic
249

    
250
Normally, QEMU uses SDL to display the VGA output. With this option,
251
you can totally disable graphical output so that QEMU is a simple
252
command line application. The emulated serial port is redirected on
253
the console. Therefore, you can still use QEMU to debug a Linux kernel
254
with a serial console.
255

    
256
@item -vnc display
257

    
258
Normally, QEMU uses SDL to display the VGA output.  With this option,
259
you can have QEMU listen on VNC display @var{display} and redirect the VGA
260
display over the VNC session.  It is very useful to enable the usb
261
tablet device when using this option (option @option{-usbdevice
262
tablet}). When using the VNC display, you must use the @option{-k}
263
option to set the keyboard layout if you are not using en-us.
264

    
265
@var{display} may be in the form @var{interface:d}, in which case connections
266
will only be allowed from @var{interface} on display @var{d}. Optionally,
267
@var{interface} can be omitted.  @var{display} can also be in the form
268
@var{unix:path} where @var{path} is the location of a unix socket to listen for
269
connections on.
270

    
271

    
272
@item -k language
273

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

    
280
The available layouts are:
281
@example
282
ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
283
da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
284
de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
285
@end example
286

    
287
The default is @code{en-us}.
288

    
289
@item -audio-help
290

    
291
Will show the audio subsystem help: list of drivers, tunable
292
parameters.
293

    
294
@item -soundhw card1,card2,... or -soundhw all
295

    
296
Enable audio and selected sound hardware. Use ? to print all
297
available sound hardware.
298

    
299
@example
300
qemu -soundhw sb16,adlib hda
301
qemu -soundhw es1370 hda
302
qemu -soundhw all hda
303
qemu -soundhw ?
304
@end example
305

    
306
@item -localtime
307
Set the real time clock to local time (the default is to UTC
308
time). This option is needed to have correct date in MS-DOS or
309
Windows.
310

    
311
@item -full-screen
312
Start in full screen.
313

    
314
@item -pidfile file
315
Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
316
from a script.
317

    
318
@item -daemonize
319
Daemonize the QEMU process after initialization.  QEMU will not detach from
320
standard IO until it is ready to receive connections on any of its devices.
321
This option is a useful way for external programs to launch QEMU without having
322
to cope with initialization race conditions.
323

    
324
@item -win2k-hack
325
Use it when installing Windows 2000 to avoid a disk full bug. After
326
Windows 2000 is installed, you no longer need this option (this option
327
slows down the IDE transfers).
328

    
329
@end table
330

    
331
USB options:
332
@table @option
333

    
334
@item -usb
335
Enable the USB driver (will be the default soon)
336

    
337
@item -usbdevice devname
338
Add the USB device @var{devname}. @xref{usb_devices}.
339
@end table
340

    
341
Network options:
342

    
343
@table @option
344

    
345
@item -net nic[,vlan=n][,macaddr=addr][,model=type]
346
Create a new Network Interface Card and connect it to VLAN @var{n} (@var{n}
347
= 0 is the default). The NIC is currently an NE2000 on the PC
348
target. Optionally, the MAC address can be changed. If no
349
@option{-net} option is specified, a single NIC is created.
350
Qemu can emulate several different models of network card.  Valid values for
351
@var{type} are @code{ne2k_pci}, @code{ne2k_isa}, @code{rtl8139},
352
@code{smc91c111} and @code{lance}.  Not all devices are supported on all
353
targets.
354

    
355
@item -net user[,vlan=n][,hostname=name]
356
Use the user mode network stack which requires no administrator
357
priviledge to run.  @option{hostname=name} can be used to specify the client
358
hostname reported by the builtin DHCP server.
359

    
360
@item -net tap[,vlan=n][,fd=h][,ifname=name][,script=file]
361
Connect the host TAP network interface @var{name} to VLAN @var{n} and
362
use the network script @var{file} to configure it. The default
363
network script is @file{/etc/qemu-ifup}. If @var{name} is not
364
provided, the OS automatically provides one.  @option{fd=h} can be
365
used to specify the handle of an already opened host TAP interface. Example:
366

    
367
@example
368
qemu linux.img -net nic -net tap
369
@end example
370

    
371
More complicated example (two NICs, each one connected to a TAP device)
372
@example
373
qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
374
               -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
375
@end example
376

    
377

    
378
@item -net socket[,vlan=n][,fd=h][,listen=[host]:port][,connect=host:port]
379

    
380
Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual
381
machine using a TCP socket connection. If @option{listen} is
382
specified, QEMU waits for incoming connections on @var{port}
383
(@var{host} is optional). @option{connect} is used to connect to
384
another QEMU instance using the @option{listen} option. @option{fd=h}
385
specifies an already opened TCP socket.
386

    
387
Example:
388
@example
389
# launch a first QEMU instance
390
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
391
               -net socket,listen=:1234
392
# connect the VLAN 0 of this instance to the VLAN 0
393
# of the first instance
394
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
395
               -net socket,connect=127.0.0.1:1234
396
@end example
397

    
398
@item -net socket[,vlan=n][,fd=h][,mcast=maddr:port]
399

    
400
Create a VLAN @var{n} shared with another QEMU virtual
401
machines using a UDP multicast socket, effectively making a bus for 
402
every QEMU with same multicast address @var{maddr} and @var{port}.
403
NOTES:
404
@enumerate
405
@item 
406
Several QEMU can be running on different hosts and share same bus (assuming 
407
correct multicast setup for these hosts).
408
@item
409
mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see
410
@url{http://user-mode-linux.sf.net}.
411
@item Use @option{fd=h} to specify an already opened UDP multicast socket.
412
@end enumerate
413

    
414
Example:
415
@example
416
# launch one QEMU instance
417
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
418
               -net socket,mcast=230.0.0.1:1234
419
# launch another QEMU instance on same "bus"
420
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
421
               -net socket,mcast=230.0.0.1:1234
422
# launch yet another QEMU instance on same "bus"
423
qemu linux.img -net nic,macaddr=52:54:00:12:34:58 \
424
               -net socket,mcast=230.0.0.1:1234
425
@end example
426

    
427
Example (User Mode Linux compat.):
428
@example
429
# launch QEMU instance (note mcast address selected
430
# is UML's default)
431
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
432
               -net socket,mcast=239.192.168.1:1102
433
# launch UML
434
/path/to/linux ubd0=/path/to/root_fs eth0=mcast
435
@end example
436

    
437
@item -net none
438
Indicate that no network devices should be configured. It is used to
439
override the default configuration (@option{-net nic -net user}) which
440
is activated if no @option{-net} options are provided.
441

    
442
@item -tftp prefix
443
When using the user mode network stack, activate a built-in TFTP
444
server. All filenames beginning with @var{prefix} can be downloaded
445
from the host to the guest using a TFTP client. The TFTP client on the
446
guest must be configured in binary mode (use the command @code{bin} of
447
the Unix TFTP client). The host IP address on the guest is as usual
448
10.0.2.2.
449

    
450
@item -smb dir
451
When using the user mode network stack, activate a built-in SMB
452
server so that Windows OSes can access to the host files in @file{dir}
453
transparently.
454

    
455
In the guest Windows OS, the line:
456
@example
457
10.0.2.4 smbserver
458
@end example
459
must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
460
or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
461

    
462
Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
463

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

    
468
@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
469

    
470
When using the user mode network stack, redirect incoming TCP or UDP
471
connections to the host port @var{host-port} to the guest
472
@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
473
is not specified, its value is 10.0.2.15 (default address given by the
474
built-in DHCP server).
475

    
476
For example, to redirect host X11 connection from screen 1 to guest
477
screen 0, use the following:
478

    
479
@example
480
# on the host
481
qemu -redir tcp:6001::6000 [...]
482
# this host xterm should open in the guest X11 server
483
xterm -display :1
484
@end example
485

    
486
To redirect telnet connections from host port 5555 to telnet port on
487
the guest, use the following:
488

    
489
@example
490
# on the host
491
qemu -redir tcp:5555::23 [...]
492
telnet localhost 5555
493
@end example
494

    
495
Then when you use on the host @code{telnet localhost 5555}, you
496
connect to the guest telnet server.
497

    
498
@end table
499

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

    
504
@table @option
505

    
506
@item -kernel bzImage 
507
Use @var{bzImage} as kernel image.
508

    
509
@item -append cmdline 
510
Use @var{cmdline} as kernel command line
511

    
512
@item -initrd file
513
Use @var{file} as initial ram disk.
514

    
515
@end table
516

    
517
Debug/Expert options:
518
@table @option
519

    
520
@item -serial dev
521
Redirect the virtual serial port to host character device
522
@var{dev}. The default device is @code{vc} in graphical mode and
523
@code{stdio} in non graphical mode.
524

    
525
This option can be used several times to simulate up to 4 serials
526
ports.
527

    
528
Use @code{-serial none} to disable all serial ports.
529

    
530
Available character devices are:
531
@table @code
532
@item vc
533
Virtual console
534
@item pty
535
[Linux only] Pseudo TTY (a new PTY is automatically allocated)
536
@item none
537
No device is allocated.
538
@item null
539
void device
540
@item /dev/XXX
541
[Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
542
parameters are set according to the emulated ones.
543
@item /dev/parportN
544
[Linux only, parallel port only] Use host parallel port
545
@var{N}. Currently only SPP parallel port features can be used.
546
@item file:filename
547
Write output to filename. No character can be read.
548
@item stdio
549
[Unix only] standard input/output
550
@item pipe:filename
551
name pipe @var{filename}
552
@item COMn
553
[Windows only] Use host serial port @var{n}
554
@item udp:[remote_host]:remote_port[@@[src_ip]:src_port]
555
This implements UDP Net Console.  When @var{remote_host} or @var{src_ip} are not specified they default to @code{0.0.0.0}.  When not using a specifed @var{src_port} a random port is automatically chosen.
556

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

    
562
If you plan to send characters back via netconsole or you want to stop
563
and start qemu a lot of times, you should have qemu use the same
564
source port each time by using something like @code{-serial
565
udp::4555@@:4556} to qemu. Another approach is to use a patched
566
version of netcat which can listen to a TCP port and send and receive
567
characters via udp.  If you have a patched version of netcat which
568
activates telnet remote echo and single char transfer, then you can
569
use the following options to step up a netcat redirector to allow
570
telnet on port 5555 to access the qemu port.
571
@table @code
572
@item Qemu Options:
573
-serial udp::4555@@:4556
574
@item netcat options:
575
-u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
576
@item telnet options:
577
localhost 5555
578
@end table
579

    
580

    
581
@item tcp:[host]:port[,server][,nowait]
582
The TCP Net Console has two modes of operation.  It can send the serial
583
I/O to a location or wait for a connection from a location.  By default
584
the TCP Net Console is sent to @var{host} at the @var{port}.  If you use
585
the @var{server} option QEMU will wait for a client socket application
586
to connect to the port before continuing, unless the @code{nowait}
587
option was specified. If @var{host} is omitted, 0.0.0.0 is assumed. Only
588
one TCP connection at a time is accepted. You can use @code{telnet} to
589
connect to the corresponding character device.
590
@table @code
591
@item Example to send tcp console to 192.168.0.2 port 4444
592
-serial tcp:192.168.0.2:4444
593
@item Example to listen and wait on port 4444 for connection
594
-serial tcp::4444,server
595
@item Example to not wait and listen on ip 192.168.0.100 port 4444
596
-serial tcp:192.168.0.100:4444,server,nowait
597
@end table
598

    
599
@item telnet:host:port[,server][,nowait]
600
The telnet protocol is used instead of raw tcp sockets.  The options
601
work the same as if you had specified @code{-serial tcp}.  The
602
difference is that the port acts like a telnet server or client using
603
telnet option negotiation.  This will also allow you to send the
604
MAGIC_SYSRQ sequence if you use a telnet that supports sending the break
605
sequence.  Typically in unix telnet you do it with Control-] and then
606
type "send break" followed by pressing the enter key.
607

    
608
@item unix:path[,server][,nowait]
609
A unix domain socket is used instead of a tcp socket.  The option works the
610
same as if you had specified @code{-serial tcp} except the unix domain socket
611
@var{path} is used for connections.
612

    
613
@end table
614

    
615
@item -parallel dev
616
Redirect the virtual parallel port to host device @var{dev} (same
617
devices as the serial port). On Linux hosts, @file{/dev/parportN} can
618
be used to use hardware devices connected on the corresponding host
619
parallel port.
620

    
621
This option can be used several times to simulate up to 3 parallel
622
ports.
623

    
624
Use @code{-parallel none} to disable all parallel ports.
625

    
626
@item -monitor dev
627
Redirect the monitor to host device @var{dev} (same devices as the
628
serial port).
629
The default device is @code{vc} in graphical mode and @code{stdio} in
630
non graphical mode.
631

    
632
@item -s
633
Wait gdb connection to port 1234 (@pxref{gdb_usage}). 
634
@item -p port
635
Change gdb connection port.
636
@item -S
637
Do not start CPU at startup (you must type 'c' in the monitor).
638
@item -d             
639
Output log in /tmp/qemu.log
640
@item -hdachs c,h,s,[,t]
641
Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
642
@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
643
translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
644
all thoses parameters. This option is useful for old MS-DOS disk
645
images.
646

    
647
@item -L path
648
Set the directory for the BIOS, VGA BIOS and keymaps.
649

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

    
656
@item -no-acpi
657
Disable ACPI (Advanced Configuration and Power Interface) support. Use
658
it if your guest OS complains about ACPI problems (PC target machine
659
only).
660

    
661
@item -no-reboot
662
Exit instead of rebooting.
663

    
664
@item -loadvm file
665
Start right away with a saved state (@code{loadvm} in monitor)
666
@end table
667

    
668
@c man end
669

    
670
@node pcsys_keys
671
@section Keys
672

    
673
@c man begin OPTIONS
674

    
675
During the graphical emulation, you can use the following keys:
676
@table @key
677
@item Ctrl-Alt-f
678
Toggle full screen
679

    
680
@item Ctrl-Alt-n
681
Switch to virtual console 'n'. Standard console mappings are:
682
@table @emph
683
@item 1
684
Target system display
685
@item 2
686
Monitor
687
@item 3
688
Serial port
689
@end table
690

    
691
@item Ctrl-Alt
692
Toggle mouse and keyboard grab.
693
@end table
694

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

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

    
701
@table @key
702
@item Ctrl-a h
703
Print this help
704
@item Ctrl-a x    
705
Exit emulator
706
@item Ctrl-a s    
707
Save disk data back to file (if -snapshot)
708
@item Ctrl-a b
709
Send break (magic sysrq in Linux)
710
@item Ctrl-a c
711
Switch between console and monitor
712
@item Ctrl-a Ctrl-a
713
Send Ctrl-a
714
@end table
715
@c man end
716

    
717
@ignore
718

    
719
@c man begin SEEALSO
720
The HTML documentation of QEMU for more precise information and Linux
721
user mode emulator invocation.
722
@c man end
723

    
724
@c man begin AUTHOR
725
Fabrice Bellard
726
@c man end
727

    
728
@end ignore
729

    
730
@node pcsys_monitor
731
@section QEMU Monitor
732

    
733
The QEMU monitor is used to give complex commands to the QEMU
734
emulator. You can use it to:
735

    
736
@itemize @minus
737

    
738
@item
739
Remove or insert removable medias images
740
(such as CD-ROM or floppies)
741

    
742
@item 
743
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
744
from a disk file.
745

    
746
@item Inspect the VM state without an external debugger.
747

    
748
@end itemize
749

    
750
@subsection Commands
751

    
752
The following commands are available:
753

    
754
@table @option
755

    
756
@item help or ? [cmd]
757
Show the help for all commands or just for command @var{cmd}.
758

    
759
@item commit  
760
Commit changes to the disk images (if -snapshot is used)
761

    
762
@item info subcommand 
763
show various information about the system state
764

    
765
@table @option
766
@item info network
767
show the various VLANs and the associated devices
768
@item info block
769
show the block devices
770
@item info registers
771
show the cpu registers
772
@item info history
773
show the command line history
774
@item info pci
775
show emulated PCI device
776
@item info usb
777
show USB devices plugged on the virtual USB hub
778
@item info usbhost
779
show all USB host devices
780
@item info capture
781
show information about active capturing
782
@item info snapshots
783
show list of VM snapshots
784
@end table
785

    
786
@item q or quit
787
Quit the emulator.
788

    
789
@item eject [-f] device
790
Eject a removable media (use -f to force it).
791

    
792
@item change device filename
793
Change a removable media.
794

    
795
@item screendump filename
796
Save screen into PPM image @var{filename}.
797

    
798
@item wavcapture filename [frequency [bits [channels]]]
799
Capture audio into @var{filename}. Using sample rate @var{frequency}
800
bits per sample @var{bits} and number of channels @var{channels}.
801

    
802
Defaults:
803
@itemize @minus
804
@item Sample rate = 44100 Hz - CD quality
805
@item Bits = 16
806
@item Number of channels = 2 - Stereo
807
@end itemize
808

    
809
@item stopcapture index
810
Stop capture with a given @var{index}, index can be obtained with
811
@example
812
info capture
813
@end example
814

    
815
@item log item1[,...]
816
Activate logging of the specified items to @file{/tmp/qemu.log}.
817

    
818
@item savevm [tag|id]
819
Create a snapshot of the whole virtual machine. If @var{tag} is
820
provided, it is used as human readable identifier. If there is already
821
a snapshot with the same tag or ID, it is replaced. More info at
822
@ref{vm_snapshots}.
823

    
824
@item loadvm tag|id
825
Set the whole virtual machine to the snapshot identified by the tag
826
@var{tag} or the unique snapshot ID @var{id}.
827

    
828
@item delvm tag|id
829
Delete the snapshot identified by @var{tag} or @var{id}.
830

    
831
@item stop
832
Stop emulation.
833

    
834
@item c or cont
835
Resume emulation.
836

    
837
@item gdbserver [port]
838
Start gdbserver session (default port=1234)
839

    
840
@item x/fmt addr
841
Virtual memory dump starting at @var{addr}.
842

    
843
@item xp /fmt addr
844
Physical memory dump starting at @var{addr}.
845

    
846
@var{fmt} is a format which tells the command how to format the
847
data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
848

    
849
@table @var
850
@item count 
851
is the number of items to be dumped.
852

    
853
@item format
854
can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
855
c (char) or i (asm instruction).
856

    
857
@item size
858
can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
859
@code{h} or @code{w} can be specified with the @code{i} format to
860
respectively select 16 or 32 bit code instruction size.
861

    
862
@end table
863

    
864
Examples: 
865
@itemize
866
@item
867
Dump 10 instructions at the current instruction pointer:
868
@example 
869
(qemu) x/10i $eip
870
0x90107063:  ret
871
0x90107064:  sti
872
0x90107065:  lea    0x0(%esi,1),%esi
873
0x90107069:  lea    0x0(%edi,1),%edi
874
0x90107070:  ret
875
0x90107071:  jmp    0x90107080
876
0x90107073:  nop
877
0x90107074:  nop
878
0x90107075:  nop
879
0x90107076:  nop
880
@end example
881

    
882
@item
883
Dump 80 16 bit values at the start of the video memory.
884
@smallexample 
885
(qemu) xp/80hx 0xb8000
886
0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
887
0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
888
0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
889
0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
890
0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
891
0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
892
0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
893
0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
894
0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
895
0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
896
@end smallexample
897
@end itemize
898

    
899
@item p or print/fmt expr
900

    
901
Print expression value. Only the @var{format} part of @var{fmt} is
902
used.
903

    
904
@item sendkey keys
905

    
906
Send @var{keys} to the emulator. Use @code{-} to press several keys
907
simultaneously. Example:
908
@example
909
sendkey ctrl-alt-f1
910
@end example
911

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

    
915
@item system_reset
916

    
917
Reset the system.
918

    
919
@item usb_add devname
920

    
921
Add the USB device @var{devname}.  For details of available devices see
922
@ref{usb_devices}
923

    
924
@item usb_del devname
925

    
926
Remove the USB device @var{devname} from the QEMU virtual USB
927
hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
928
command @code{info usb} to see the devices you can remove.
929

    
930
@end table
931

    
932
@subsection Integer expressions
933

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

    
938
@node disk_images
939
@section Disk Images
940

    
941
Since version 0.6.1, QEMU supports many disk image formats, including
942
growable disk images (their size increase as non empty sectors are
943
written), compressed and encrypted disk images. Version 0.8.3 added
944
the new qcow2 disk image format which is essential to support VM
945
snapshots.
946

    
947
@menu
948
* disk_images_quickstart::    Quick start for disk image creation
949
* disk_images_snapshot_mode:: Snapshot mode
950
* vm_snapshots::              VM snapshots
951
* qemu_img_invocation::       qemu-img Invocation
952
* host_drives::               Using host drives
953
* disk_images_fat_images::    Virtual FAT disk images
954
@end menu
955

    
956
@node disk_images_quickstart
957
@subsection Quick start for disk image creation
958

    
959
You can create a disk image with the command:
960
@example
961
qemu-img create myimage.img mysize
962
@end example
963
where @var{myimage.img} is the disk image filename and @var{mysize} is its
964
size in kilobytes. You can add an @code{M} suffix to give the size in
965
megabytes and a @code{G} suffix for gigabytes.
966

    
967
See @ref{qemu_img_invocation} for more information.
968

    
969
@node disk_images_snapshot_mode
970
@subsection Snapshot mode
971

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

    
978
@node vm_snapshots
979
@subsection VM snapshots
980

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

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

    
991
Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
992
a VM snapshot. @code{info snapshots} lists the available snapshots
993
with their associated information:
994

    
995
@example
996
(qemu) info snapshots
997
Snapshot devices: hda
998
Snapshot list (from hda):
999
ID        TAG                 VM SIZE                DATE       VM CLOCK
1000
1         start                   41M 2006-08-06 12:38:02   00:00:14.954
1001
2                                 40M 2006-08-06 12:43:29   00:00:18.633
1002
3         msys                    40M 2006-08-06 12:44:04   00:00:23.514
1003
@end example
1004

    
1005
A VM snapshot is made of a VM state info (its size is shown in
1006
@code{info snapshots}) and a snapshot of every writable disk image.
1007
The VM state info is stored in the first @code{qcow2} non removable
1008
and writable block device. The disk image snapshots are stored in
1009
every disk image. The size of a snapshot in a disk image is difficult
1010
to evaluate and is not shown by @code{info snapshots} because the
1011
associated disk sectors are shared among all the snapshots to save
1012
disk space (otherwise each snapshot would need a full copy of all the
1013
disk images).
1014

    
1015
When using the (unrelated) @code{-snapshot} option
1016
(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
1017
but they are deleted as soon as you exit QEMU.
1018

    
1019
VM snapshots currently have the following known limitations:
1020
@itemize
1021
@item 
1022
They cannot cope with removable devices if they are removed or
1023
inserted after a snapshot is done.
1024
@item 
1025
A few device drivers still have incomplete snapshot support so their
1026
state is not saved or restored properly (in particular USB).
1027
@end itemize
1028

    
1029
@node qemu_img_invocation
1030
@subsection @code{qemu-img} Invocation
1031

    
1032
@include qemu-img.texi
1033

    
1034
@node host_drives
1035
@subsection Using host drives
1036

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

    
1040
@subsubsection Linux
1041

    
1042
On Linux, you can directly use the host device filename instead of a
1043
disk image filename provided you have enough proviledge to access
1044
it. For example, use @file{/dev/cdrom} to access to the CDROM or
1045
@file{/dev/fd0} for the floppy.
1046

    
1047
@table @code
1048
@item CD
1049
You can specify a CDROM device even if no CDROM is loaded. QEMU has
1050
specific code to detect CDROM insertion or removal. CDROM ejection by
1051
the guest OS is supported. Currently only data CDs are supported.
1052
@item Floppy
1053
You can specify a floppy device even if no floppy is loaded. Floppy
1054
removal is currently not detected accurately (if you change floppy
1055
without doing floppy access while the floppy is not loaded, the guest
1056
OS will think that the same floppy is loaded).
1057
@item Hard disks
1058
Hard disks can be used. Normally you must specify the whole disk
1059
(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
1060
see it as a partitioned disk. WARNING: unless you know what you do, it
1061
is better to only make READ-ONLY accesses to the hard disk otherwise
1062
you may corrupt your host data (use the @option{-snapshot} command
1063
line option or modify the device permissions accordingly).
1064
@end table
1065

    
1066
@subsubsection Windows
1067

    
1068
On Windows you can use any host drives as QEMU drive. The prefered
1069
syntax is the driver letter (e.g. @file{d:}). The alternate syntax
1070
@file{\\.\d:} is supported. @file{/dev/cdrom} is supported as an alias
1071
to the first CDROM drive.
1072

    
1073
Currently there is no specific code to handle removable medias, so it
1074
is better to use the @code{change} or @code{eject} monitor commands to
1075
change or eject media.
1076

    
1077
@subsubsection Mac OS X
1078

    
1079
@file{/dev/cdrom} is an alias to the first CDROM. 
1080

    
1081
Currently there is no specific code to handle removable medias, so it
1082
is better to use the @code{change} or @code{eject} monitor commands to
1083
change or eject media.
1084

    
1085
@node disk_images_fat_images
1086
@subsection Virtual FAT disk images
1087

    
1088
QEMU can automatically create a virtual FAT disk image from a
1089
directory tree. In order to use it, just type:
1090

    
1091
@example 
1092
qemu linux.img -hdb fat:/my_directory
1093
@end example
1094

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

    
1099
Floppies can be emulated with the @code{:floppy:} option:
1100

    
1101
@example 
1102
qemu linux.img -fda fat:floppy:/my_directory
1103
@end example
1104

    
1105
A read/write support is available for testing (beta stage) with the
1106
@code{:rw:} option:
1107

    
1108
@example 
1109
qemu linux.img -fda fat:floppy:rw:/my_directory
1110
@end example
1111

    
1112
What you should @emph{never} do:
1113
@itemize
1114
@item use non-ASCII filenames ;
1115
@item use "-snapshot" together with ":rw:" ;
1116
@item expect it to work when loadvm'ing ;
1117
@item write to the FAT directory on the host system while accessing it with the guest system.
1118
@end itemize
1119

    
1120
@node pcsys_network
1121
@section Network emulation
1122

    
1123
QEMU can simulate several networks cards (NE2000 boards on the PC
1124
target) and can connect them to an arbitrary number of Virtual Local
1125
Area Networks (VLANs). Host TAP devices can be connected to any QEMU
1126
VLAN. VLAN can be connected between separate instances of QEMU to
1127
simulate large networks. For simpler usage, a non priviledged user mode
1128
network stack can replace the TAP device to have a basic network
1129
connection.
1130

    
1131
@subsection VLANs
1132

    
1133
QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
1134
connection between several network devices. These devices can be for
1135
example QEMU virtual Ethernet cards or virtual Host ethernet devices
1136
(TAP devices).
1137

    
1138
@subsection Using TAP network interfaces
1139

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

    
1144
@subsubsection Linux host
1145

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

    
1153
See @ref{sec_invocation} to have examples of command lines using the
1154
TAP network interfaces.
1155

    
1156
@subsubsection Windows host
1157

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

    
1163
@subsection Using the user mode network stack
1164

    
1165
By using the option @option{-net user} (default configuration if no
1166
@option{-net} option is specified), QEMU uses a completely user mode
1167
network stack (you don't need root priviledge to use the virtual
1168
network). The virtual network configuration is the following:
1169

    
1170
@example
1171

    
1172
         QEMU VLAN      <------>  Firewall/DHCP server <-----> Internet
1173
                           |          (10.0.2.2)
1174
                           |
1175
                           ---->  DNS server (10.0.2.3)
1176
                           |     
1177
                           ---->  SMB server (10.0.2.4)
1178
@end example
1179

    
1180
The QEMU VM behaves as if it was behind a firewall which blocks all
1181
incoming connections. You can use a DHCP client to automatically
1182
configure the network in the QEMU VM. The DHCP server assign addresses
1183
to the hosts starting from 10.0.2.15.
1184

    
1185
In order to check that the user mode network is working, you can ping
1186
the address 10.0.2.2 and verify that you got an address in the range
1187
10.0.2.x from the QEMU virtual DHCP server.
1188

    
1189
Note that @code{ping} is not supported reliably to the internet as it
1190
would require root priviledges. It means you can only ping the local
1191
router (10.0.2.2).
1192

    
1193
When using the built-in TFTP server, the router is also the TFTP
1194
server.
1195

    
1196
When using the @option{-redir} option, TCP or UDP connections can be
1197
redirected from the host to the guest. It allows for example to
1198
redirect X11, telnet or SSH connections.
1199

    
1200
@subsection Connecting VLANs between QEMU instances
1201

    
1202
Using the @option{-net socket} option, it is possible to make VLANs
1203
that span several QEMU instances. See @ref{sec_invocation} to have a
1204
basic example.
1205

    
1206
@node direct_linux_boot
1207
@section Direct Linux Boot
1208

    
1209
This section explains how to launch a Linux kernel inside QEMU without
1210
having to make a full bootable image. It is very useful for fast Linux
1211
kernel testing.
1212

    
1213
The syntax is:
1214
@example
1215
qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1216
@end example
1217

    
1218
Use @option{-kernel} to provide the Linux kernel image and
1219
@option{-append} to give the kernel command line arguments. The
1220
@option{-initrd} option can be used to provide an INITRD image.
1221

    
1222
When using the direct Linux boot, a disk image for the first hard disk
1223
@file{hda} is required because its boot sector is used to launch the
1224
Linux kernel.
1225

    
1226
If you do not need graphical output, you can disable it and redirect
1227
the virtual serial port and the QEMU monitor to the console with the
1228
@option{-nographic} option. The typical command line is:
1229
@example
1230
qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1231
     -append "root=/dev/hda console=ttyS0" -nographic
1232
@end example
1233

    
1234
Use @key{Ctrl-a c} to switch between the serial console and the
1235
monitor (@pxref{pcsys_keys}).
1236

    
1237
@node pcsys_usb
1238
@section USB emulation
1239

    
1240
QEMU emulates a PCI UHCI USB controller. You can virtually plug
1241
virtual USB devices or real host USB devices (experimental, works only
1242
on Linux hosts).  Qemu will automatically create and connect virtual USB hubs
1243
as necessary to connect multiple USB devices.
1244

    
1245
@menu
1246
* usb_devices::
1247
* host_usb_devices::
1248
@end menu
1249
@node usb_devices
1250
@subsection Connecting USB devices
1251

    
1252
USB devices can be connected with the @option{-usbdevice} commandline option
1253
or the @code{usb_add} monitor command.  Available devices are:
1254

    
1255
@table @var
1256
@item @code{mouse}
1257
Virtual Mouse.  This will override the PS/2 mouse emulation when activated.
1258
@item @code{tablet}
1259
Pointer device that uses absolute coordinates (like a touchscreen).
1260
This means qemu is able to report the mouse position without having
1261
to grab the mouse.  Also overrides the PS/2 mouse emulation when activated.
1262
@item @code{disk:file}
1263
Mass storage device based on @var{file} (@pxref{disk_images})
1264
@item @code{host:bus.addr}
1265
Pass through the host device identified by @var{bus.addr}
1266
(Linux only)
1267
@item @code{host:vendor_id:product_id}
1268
Pass through the host device identified by @var{vendor_id:product_id}
1269
(Linux only)
1270
@end table
1271

    
1272
@node host_usb_devices
1273
@subsection Using host USB devices on a Linux host
1274

    
1275
WARNING: this is an experimental feature. QEMU will slow down when
1276
using it. USB devices requiring real time streaming (i.e. USB Video
1277
Cameras) are not supported yet.
1278

    
1279
@enumerate
1280
@item If you use an early Linux 2.4 kernel, verify that no Linux driver 
1281
is actually using the USB device. A simple way to do that is simply to
1282
disable the corresponding kernel module by renaming it from @file{mydriver.o}
1283
to @file{mydriver.o.disabled}.
1284

    
1285
@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1286
@example
1287
ls /proc/bus/usb
1288
001  devices  drivers
1289
@end example
1290

    
1291
@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:
1292
@example
1293
chown -R myuid /proc/bus/usb
1294
@end example
1295

    
1296
@item Launch QEMU and do in the monitor:
1297
@example 
1298
info usbhost
1299
  Device 1.2, speed 480 Mb/s
1300
    Class 00: USB device 1234:5678, USB DISK
1301
@end example
1302
You should see the list of the devices you can use (Never try to use
1303
hubs, it won't work).
1304

    
1305
@item Add the device in QEMU by using:
1306
@example 
1307
usb_add host:1234:5678
1308
@end example
1309

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

    
1313
@item Now you can try to use the host USB device in QEMU.
1314

    
1315
@end enumerate
1316

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

    
1320
@node gdb_usage
1321
@section GDB usage
1322

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

    
1326
In order to use gdb, launch qemu with the '-s' option. It will wait for a
1327
gdb connection:
1328
@example
1329
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1330
       -append "root=/dev/hda"
1331
Connected to host network interface: tun0
1332
Waiting gdb connection on port 1234
1333
@end example
1334

    
1335
Then launch gdb on the 'vmlinux' executable:
1336
@example
1337
> gdb vmlinux
1338
@end example
1339

    
1340
In gdb, connect to QEMU:
1341
@example
1342
(gdb) target remote localhost:1234
1343
@end example
1344

    
1345
Then you can use gdb normally. For example, type 'c' to launch the kernel:
1346
@example
1347
(gdb) c
1348
@end example
1349

    
1350
Here are some useful tips in order to use gdb on system code:
1351

    
1352
@enumerate
1353
@item
1354
Use @code{info reg} to display all the CPU registers.
1355
@item
1356
Use @code{x/10i $eip} to display the code at the PC position.
1357
@item
1358
Use @code{set architecture i8086} to dump 16 bit code. Then use
1359
@code{x/10i $cs*16+$eip} to dump the code at the PC position.
1360
@end enumerate
1361

    
1362
@node pcsys_os_specific
1363
@section Target OS specific information
1364

    
1365
@subsection Linux
1366

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

    
1371
When using a 2.6 guest Linux kernel, you should add the option
1372
@code{clock=pit} on the kernel command line because the 2.6 Linux
1373
kernels make very strict real time clock checks by default that QEMU
1374
cannot simulate exactly.
1375

    
1376
When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1377
not activated because QEMU is slower with this patch. The QEMU
1378
Accelerator Module is also much slower in this case. Earlier Fedora
1379
Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporte this
1380
patch by default. Newer kernels don't have it.
1381

    
1382
@subsection Windows
1383

    
1384
If you have a slow host, using Windows 95 is better as it gives the
1385
best speed. Windows 2000 is also a good choice.
1386

    
1387
@subsubsection SVGA graphic modes support
1388

    
1389
QEMU emulates a Cirrus Logic GD5446 Video
1390
card. All Windows versions starting from Windows 95 should recognize
1391
and use this graphic card. For optimal performances, use 16 bit color
1392
depth in the guest and the host OS.
1393

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

    
1399
@subsubsection CPU usage reduction
1400

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

    
1407
@subsubsection Windows 2000 disk full problem
1408

    
1409
Windows 2000 has a bug which gives a disk full problem during its
1410
installation. When installing it, use the @option{-win2k-hack} QEMU
1411
option to enable a specific workaround. After Windows 2000 is
1412
installed, you no longer need this option (this option slows down the
1413
IDE transfers).
1414

    
1415
@subsubsection Windows 2000 shutdown
1416

    
1417
Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1418
can. It comes from the fact that Windows 2000 does not automatically
1419
use the APM driver provided by the BIOS.
1420

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

    
1428
@subsubsection Share a directory between Unix and Windows
1429

    
1430
See @ref{sec_invocation} about the help of the option @option{-smb}.
1431

    
1432
@subsubsection Windows XP security problem
1433

    
1434
Some releases of Windows XP install correctly but give a security
1435
error when booting:
1436
@example
1437
A problem is preventing Windows from accurately checking the
1438
license for this computer. Error code: 0x800703e6.
1439
@end example
1440

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

    
1447
@subsection MS-DOS and FreeDOS
1448

    
1449
@subsubsection CPU usage reduction
1450

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

    
1456
@node QEMU System emulator for non PC targets
1457
@chapter QEMU System emulator for non PC targets
1458

    
1459
QEMU is a generic emulator and it emulates many non PC
1460
machines. Most of the options are similar to the PC emulator. The
1461
differences are mentionned in the following sections.
1462

    
1463
@menu
1464
* QEMU PowerPC System emulator::
1465
* Sparc32 System emulator invocation::
1466
* Sparc64 System emulator invocation::
1467
* MIPS System emulator invocation::
1468
* ARM System emulator invocation::
1469
@end menu
1470

    
1471
@node QEMU PowerPC System emulator
1472
@section QEMU PowerPC System emulator
1473

    
1474
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1475
or PowerMac PowerPC system.
1476

    
1477
QEMU emulates the following PowerMac peripherals:
1478

    
1479
@itemize @minus
1480
@item 
1481
UniNorth PCI Bridge 
1482
@item
1483
PCI VGA compatible card with VESA Bochs Extensions
1484
@item 
1485
2 PMAC IDE interfaces with hard disk and CD-ROM support
1486
@item 
1487
NE2000 PCI adapters
1488
@item
1489
Non Volatile RAM
1490
@item
1491
VIA-CUDA with ADB keyboard and mouse.
1492
@end itemize
1493

    
1494
QEMU emulates the following PREP peripherals:
1495

    
1496
@itemize @minus
1497
@item 
1498
PCI Bridge
1499
@item
1500
PCI VGA compatible card with VESA Bochs Extensions
1501
@item 
1502
2 IDE interfaces with hard disk and CD-ROM support
1503
@item
1504
Floppy disk
1505
@item 
1506
NE2000 network adapters
1507
@item
1508
Serial port
1509
@item
1510
PREP Non Volatile RAM
1511
@item
1512
PC compatible keyboard and mouse.
1513
@end itemize
1514

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

    
1518
@c man begin OPTIONS
1519

    
1520
The following options are specific to the PowerPC emulation:
1521

    
1522
@table @option
1523

    
1524
@item -g WxH[xDEPTH]  
1525

    
1526
Set the initial VGA graphic mode. The default is 800x600x15.
1527

    
1528
@end table
1529

    
1530
@c man end 
1531

    
1532

    
1533
More information is available at
1534
@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
1535

    
1536
@node Sparc32 System emulator invocation
1537
@section Sparc32 System emulator invocation
1538

    
1539
Use the executable @file{qemu-system-sparc} to simulate a SparcStation 5
1540
(sun4m architecture). The emulation is somewhat complete.
1541

    
1542
QEMU emulates the following sun4m peripherals:
1543

    
1544
@itemize @minus
1545
@item
1546
IOMMU
1547
@item
1548
TCX Frame buffer
1549
@item 
1550
Lance (Am7990) Ethernet
1551
@item
1552
Non Volatile RAM M48T08
1553
@item
1554
Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1555
and power/reset logic
1556
@item
1557
ESP SCSI controller with hard disk and CD-ROM support
1558
@item
1559
Floppy drive
1560
@end itemize
1561

    
1562
The number of peripherals is fixed in the architecture.
1563

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

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

    
1573
@c man begin OPTIONS
1574

    
1575
The following options are specific to the Sparc emulation:
1576

    
1577
@table @option
1578

    
1579
@item -g WxH
1580

    
1581
Set the initial TCX graphic mode. The default is 1024x768.
1582

    
1583
@end table
1584

    
1585
@c man end 
1586

    
1587
@node Sparc64 System emulator invocation
1588
@section Sparc64 System emulator invocation
1589

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

    
1593
QEMU emulates the following sun4u peripherals:
1594

    
1595
@itemize @minus
1596
@item
1597
UltraSparc IIi APB PCI Bridge 
1598
@item
1599
PCI VGA compatible card with VESA Bochs Extensions
1600
@item
1601
Non Volatile RAM M48T59
1602
@item
1603
PC-compatible serial ports
1604
@end itemize
1605

    
1606
@node MIPS System emulator invocation
1607
@section MIPS System emulator invocation
1608

    
1609
Use the executable @file{qemu-system-mips} to simulate a MIPS machine.
1610
The emulator is able to boot a Linux kernel and to run a Linux Debian
1611
installation from NFS. The following devices are emulated:
1612

    
1613
@itemize @minus
1614
@item 
1615
MIPS R4K CPU
1616
@item
1617
PC style serial port
1618
@item
1619
NE2000 network card
1620
@end itemize
1621

    
1622
More information is available in the QEMU mailing-list archive.
1623

    
1624
@node ARM System emulator invocation
1625
@section ARM System emulator invocation
1626

    
1627
Use the executable @file{qemu-system-arm} to simulate a ARM
1628
machine. The ARM Integrator/CP board is emulated with the following
1629
devices:
1630

    
1631
@itemize @minus
1632
@item
1633
ARM926E or ARM1026E CPU
1634
@item
1635
Two PL011 UARTs
1636
@item 
1637
SMC 91c111 Ethernet adapter
1638
@item
1639
PL110 LCD controller
1640
@item
1641
PL050 KMI with PS/2 keyboard and mouse.
1642
@end itemize
1643

    
1644
The ARM Versatile baseboard is emulated with the following devices:
1645

    
1646
@itemize @minus
1647
@item
1648
ARM926E CPU
1649
@item
1650
PL190 Vectored Interrupt Controller
1651
@item
1652
Four PL011 UARTs
1653
@item 
1654
SMC 91c111 Ethernet adapter
1655
@item
1656
PL110 LCD controller
1657
@item
1658
PL050 KMI with PS/2 keyboard and mouse.
1659
@item
1660
PCI host bridge.  Note the emulated PCI bridge only provides access to
1661
PCI memory space.  It does not provide access to PCI IO space.
1662
This means some devices (eg. ne2k_pci NIC) are not useable, and others
1663
(eg. rtl8139 NIC) are only useable when the guest drivers use the memory
1664
mapped control registers.
1665
@item
1666
PCI OHCI USB controller.
1667
@item
1668
LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
1669
@end itemize
1670

    
1671
A Linux 2.6 test image is available on the QEMU web site. More
1672
information is available in the QEMU mailing-list archive.
1673

    
1674
@node QEMU Linux User space emulator 
1675
@chapter QEMU Linux User space emulator 
1676

    
1677
@menu
1678
* Quick Start::
1679
* Wine launch::
1680
* Command line options::
1681
* Other binaries::
1682
@end menu
1683

    
1684
@node Quick Start
1685
@section Quick Start
1686

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

    
1690
@itemize
1691

    
1692
@item On x86, you can just try to launch any process by using the native
1693
libraries:
1694

    
1695
@example 
1696
qemu-i386 -L / /bin/ls
1697
@end example
1698

    
1699
@code{-L /} tells that the x86 dynamic linker must be searched with a
1700
@file{/} prefix.
1701

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

    
1704
@example 
1705
qemu-i386 -L / qemu-i386 -L / /bin/ls
1706
@end example
1707

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

    
1712
@example
1713
unset LD_LIBRARY_PATH 
1714
@end example
1715

    
1716
Then you can launch the precompiled @file{ls} x86 executable:
1717

    
1718
@example
1719
qemu-i386 tests/i386/ls
1720
@end example
1721
You can look at @file{qemu-binfmt-conf.sh} so that
1722
QEMU is automatically launched by the Linux kernel when you try to
1723
launch x86 executables. It requires the @code{binfmt_misc} module in the
1724
Linux kernel.
1725

    
1726
@item The x86 version of QEMU is also included. You can try weird things such as:
1727
@example
1728
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
1729
          /usr/local/qemu-i386/bin/ls-i386
1730
@end example
1731

    
1732
@end itemize
1733

    
1734
@node Wine launch
1735
@section Wine launch
1736

    
1737
@itemize
1738

    
1739
@item Ensure that you have a working QEMU with the x86 glibc
1740
distribution (see previous section). In order to verify it, you must be
1741
able to do:
1742

    
1743
@example
1744
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1745
@end example
1746

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

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

    
1754
@item Then you can try the example @file{putty.exe}:
1755

    
1756
@example
1757
qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
1758
          /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1759
@end example
1760

    
1761
@end itemize
1762

    
1763
@node Command line options
1764
@section Command line options
1765

    
1766
@example
1767
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1768
@end example
1769

    
1770
@table @option
1771
@item -h
1772
Print the help
1773
@item -L path   
1774
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1775
@item -s size
1776
Set the x86 stack size in bytes (default=524288)
1777
@end table
1778

    
1779
Debug options:
1780

    
1781
@table @option
1782
@item -d
1783
Activate log (logfile=/tmp/qemu.log)
1784
@item -p pagesize
1785
Act as if the host page size was 'pagesize' bytes
1786
@end table
1787

    
1788
@node Other binaries
1789
@section Other binaries
1790

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

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

    
1799
The binary format is detected automatically.
1800

    
1801
@node compilation
1802
@chapter Compilation from the sources
1803

    
1804
@menu
1805
* Linux/Unix::
1806
* Windows::
1807
* Cross compilation for Windows with Linux::
1808
* Mac OS X::
1809
@end menu
1810

    
1811
@node Linux/Unix
1812
@section Linux/Unix
1813

    
1814
@subsection Compilation
1815

    
1816
First you must decompress the sources:
1817
@example
1818
cd /tmp
1819
tar zxvf qemu-x.y.z.tar.gz
1820
cd qemu-x.y.z
1821
@end example
1822

    
1823
Then you configure QEMU and build it (usually no options are needed):
1824
@example
1825
./configure
1826
make
1827
@end example
1828

    
1829
Then type as root user:
1830
@example
1831
make install
1832
@end example
1833
to install QEMU in @file{/usr/local}.
1834

    
1835
@subsection Tested tool versions
1836

    
1837
In order to compile QEMU successfully, it is very important that you
1838
have the right tools. The most important one is gcc. I cannot guaranty
1839
that QEMU works if you do not use a tested gcc version. Look at
1840
'configure' and 'Makefile' if you want to make a different gcc
1841
version work.
1842

    
1843
@example
1844
host      gcc      binutils      glibc    linux       distribution
1845
----------------------------------------------------------------------
1846
x86       3.2      2.13.2        2.1.3    2.4.18
1847
          2.96     2.11.93.0.2   2.2.5    2.4.18      Red Hat 7.3
1848
          3.2.2    2.13.90.0.18  2.3.2    2.4.20      Red Hat 9
1849

    
1850
PowerPC   3.3 [4]  2.13.90.0.18  2.3.1    2.4.20briq
1851
          3.2
1852

    
1853
Alpha     3.3 [1]  2.14.90.0.4   2.2.5    2.2.20 [2]  Debian 3.0
1854

    
1855
Sparc32   2.95.4   2.12.90.0.1   2.2.5    2.4.18      Debian 3.0
1856

    
1857
ARM       2.95.4   2.12.90.0.1   2.2.5    2.4.9 [3]   Debian 3.0
1858

    
1859
[1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
1860
    for gcc version >= 3.3.
1861
[2] Linux >= 2.4.20 is necessary for precise exception support
1862
    (untested).
1863
[3] 2.4.9-ac10-rmk2-np1-cerf2
1864

    
1865
[4] gcc 2.95.x generates invalid code when using too many register
1866
variables. You must use gcc 3.x on PowerPC.
1867
@end example
1868

    
1869
@node Windows
1870
@section Windows
1871

    
1872
@itemize
1873
@item Install the current versions of MSYS and MinGW from
1874
@url{http://www.mingw.org/}. You can find detailed installation
1875
instructions in the download section and the FAQ.
1876

    
1877
@item Download 
1878
the MinGW development library of SDL 1.2.x
1879
(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
1880
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
1881
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1882
directory. Edit the @file{sdl-config} script so that it gives the
1883
correct SDL directory when invoked.
1884

    
1885
@item Extract the current version of QEMU.
1886
 
1887
@item Start the MSYS shell (file @file{msys.bat}).
1888

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

    
1893
@item You can install QEMU in @file{Program Files/Qemu} by typing 
1894
@file{make install}. Don't forget to copy @file{SDL.dll} in
1895
@file{Program Files/Qemu}.
1896

    
1897
@end itemize
1898

    
1899
@node Cross compilation for Windows with Linux
1900
@section Cross compilation for Windows with Linux
1901

    
1902
@itemize
1903
@item
1904
Install the MinGW cross compilation tools available at
1905
@url{http://www.mingw.org/}.
1906

    
1907
@item 
1908
Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1909
unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1910
variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1911
the QEMU configuration script.
1912

    
1913
@item 
1914
Configure QEMU for Windows cross compilation:
1915
@example
1916
./configure --enable-mingw32
1917
@end example
1918
If necessary, you can change the cross-prefix according to the prefix
1919
choosen for the MinGW tools with --cross-prefix. You can also use
1920
--prefix to set the Win32 install path.
1921

    
1922
@item You can install QEMU in the installation directory by typing 
1923
@file{make install}. Don't forget to copy @file{SDL.dll} in the
1924
installation directory. 
1925

    
1926
@end itemize
1927

    
1928
Note: Currently, Wine does not seem able to launch
1929
QEMU for Win32.
1930

    
1931
@node Mac OS X
1932
@section Mac OS X
1933

    
1934
The Mac OS X patches are not fully merged in QEMU, so you should look
1935
at the QEMU mailing list archive to have all the necessary
1936
information.
1937

    
1938
@node Index
1939
@chapter Index
1940
@printindex cp
1941

    
1942
@bye