Statistics
| Branch: | Revision:

root / qemu-doc.texi @ c5d6edc3

History | View | Annotate | Download (50.8 kB)

1
\input texinfo @c -*- texinfo -*-
2
@c %**start of header
3
@setfilename qemu-doc.info
4
@settitle QEMU CPU 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 CPU 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, and Sparc32/64 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.
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.
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 -snapshot
227
Write to temporary files instead of disk image files. In this case,
228
the raw disk image you use is not written back. You can however force
229
the write back by pressing @key{C-a s} (@pxref{disk_images}). 
230

    
231
@item -no-fd-bootchk
232
Disable boot signature checking for floppy disks in Bochs BIOS. It may
233
be needed to boot from old floppy disks.
234

    
235
@item -m megs
236
Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
237

    
238
@item -smp n
239
Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
240
CPUs are supported.
241

    
242
@item -nographic
243

    
244
Normally, QEMU uses SDL to display the VGA output. With this option,
245
you can totally disable graphical output so that QEMU is a simple
246
command line application. The emulated serial port is redirected on
247
the console. Therefore, you can still use QEMU to debug a Linux kernel
248
with a serial console.
249

    
250
@item -vnc d
251

    
252
Normally, QEMU uses SDL to display the VGA output.  With this option,
253
you can have QEMU listen on VNC display d and redirect the VGA display
254
over the VNC session.  It is very useful to enable the usb tablet device
255
when using this option (option @option{-usbdevice tablet}).
256

    
257
@item -k language
258

    
259
Use keyboard layout @var{language} (for example @code{fr} for
260
French). This option is only needed where it is not easy to get raw PC
261
keycodes (e.g. on Macs or with some X11 servers). You don't need to
262
use it on PC/Linux or PC/Windows hosts.
263

    
264
The available layouts are:
265
@example
266
ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
267
da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
268
de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
269
@end example
270

    
271
The default is @code{en-us}.
272

    
273
@item -audio-help
274

    
275
Will show the audio subsystem help: list of drivers, tunable
276
parameters.
277

    
278
@item -soundhw card1,card2,... or -soundhw all
279

    
280
Enable audio and selected sound hardware. Use ? to print all
281
available sound hardware.
282

    
283
@example
284
qemu -soundhw sb16,adlib hda
285
qemu -soundhw es1370 hda
286
qemu -soundhw all hda
287
qemu -soundhw ?
288
@end example
289

    
290
@item -localtime
291
Set the real time clock to local time (the default is to UTC
292
time). This option is needed to have correct date in MS-DOS or
293
Windows.
294

    
295
@item -full-screen
296
Start in full screen.
297

    
298
@item -pidfile file
299
Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
300
from a script.
301

    
302
@item -win2k-hack
303
Use it when installing Windows 2000 to avoid a disk full bug. After
304
Windows 2000 is installed, you no longer need this option (this option
305
slows down the IDE transfers).
306

    
307
@end table
308

    
309
USB options:
310
@table @option
311

    
312
@item -usb
313
Enable the USB driver (will be the default soon)
314

    
315
@item -usbdevice devname
316
Add the USB device @var{devname}. @xref{usb_devices}.
317
@end table
318

    
319
Network options:
320

    
321
@table @option
322

    
323
@item -net nic[,vlan=n][,macaddr=addr][,model=type]
324
Create a new Network Interface Card and connect it to VLAN @var{n} (@var{n}
325
= 0 is the default). The NIC is currently an NE2000 on the PC
326
target. Optionally, the MAC address can be changed. If no
327
@option{-net} option is specified, a single NIC is created.
328
Qemu can emulate several different models of network card.  Valid values for
329
@var{type} are @code{ne2k_pci}, @code{ne2k_isa}, @code{rtl8139},
330
@code{smc91c111} and @code{lance}.  Not all devices are supported on all
331
targets.
332

    
333
@item -net user[,vlan=n][,hostname=name]
334
Use the user mode network stack which requires no administrator
335
priviledge to run.  @option{hostname=name} can be used to specify the client
336
hostname reported by the builtin DHCP server.
337

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

    
345
@example
346
qemu linux.img -net nic -net tap
347
@end example
348

    
349
More complicated example (two NICs, each one connected to a TAP device)
350
@example
351
qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
352
               -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
353
@end example
354

    
355

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

    
358
Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual
359
machine using a TCP socket connection. If @option{listen} is
360
specified, QEMU waits for incoming connections on @var{port}
361
(@var{host} is optional). @option{connect} is used to connect to
362
another QEMU instance using the @option{listen} option. @option{fd=h}
363
specifies an already opened TCP socket.
364

    
365
Example:
366
@example
367
# launch a first QEMU instance
368
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
369
               -net socket,listen=:1234
370
# connect the VLAN 0 of this instance to the VLAN 0
371
# of the first instance
372
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
373
               -net socket,connect=127.0.0.1:1234
374
@end example
375

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

    
378
Create a VLAN @var{n} shared with another QEMU virtual
379
machines using a UDP multicast socket, effectively making a bus for 
380
every QEMU with same multicast address @var{maddr} and @var{port}.
381
NOTES:
382
@enumerate
383
@item 
384
Several QEMU can be running on different hosts and share same bus (assuming 
385
correct multicast setup for these hosts).
386
@item
387
mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see
388
@url{http://user-mode-linux.sf.net}.
389
@item Use @option{fd=h} to specify an already opened UDP multicast socket.
390
@end enumerate
391

    
392
Example:
393
@example
394
# launch one QEMU instance
395
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
396
               -net socket,mcast=230.0.0.1:1234
397
# launch another QEMU instance on same "bus"
398
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
399
               -net socket,mcast=230.0.0.1:1234
400
# launch yet another QEMU instance on same "bus"
401
qemu linux.img -net nic,macaddr=52:54:00:12:34:58 \
402
               -net socket,mcast=230.0.0.1:1234
403
@end example
404

    
405
Example (User Mode Linux compat.):
406
@example
407
# launch QEMU instance (note mcast address selected
408
# is UML's default)
409
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
410
               -net socket,mcast=239.192.168.1:1102
411
# launch UML
412
/path/to/linux ubd0=/path/to/root_fs eth0=mcast
413
@end example
414

    
415
@item -net none
416
Indicate that no network devices should be configured. It is used to
417
override the default configuration (@option{-net nic -net user}) which
418
is activated if no @option{-net} options are provided.
419

    
420
@item -tftp prefix
421
When using the user mode network stack, activate a built-in TFTP
422
server. All filenames beginning with @var{prefix} can be downloaded
423
from the host to the guest using a TFTP client. The TFTP client on the
424
guest must be configured in binary mode (use the command @code{bin} of
425
the Unix TFTP client). The host IP address on the guest is as usual
426
10.0.2.2.
427

    
428
@item -smb dir
429
When using the user mode network stack, activate a built-in SMB
430
server so that Windows OSes can access to the host files in @file{dir}
431
transparently.
432

    
433
In the guest Windows OS, the line:
434
@example
435
10.0.2.4 smbserver
436
@end example
437
must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
438
or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
439

    
440
Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
441

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

    
446
@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
447

    
448
When using the user mode network stack, redirect incoming TCP or UDP
449
connections to the host port @var{host-port} to the guest
450
@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
451
is not specified, its value is 10.0.2.15 (default address given by the
452
built-in DHCP server).
453

    
454
For example, to redirect host X11 connection from screen 1 to guest
455
screen 0, use the following:
456

    
457
@example
458
# on the host
459
qemu -redir tcp:6001::6000 [...]
460
# this host xterm should open in the guest X11 server
461
xterm -display :1
462
@end example
463

    
464
To redirect telnet connections from host port 5555 to telnet port on
465
the guest, use the following:
466

    
467
@example
468
# on the host
469
qemu -redir tcp:5555::23 [...]
470
telnet localhost 5555
471
@end example
472

    
473
Then when you use on the host @code{telnet localhost 5555}, you
474
connect to the guest telnet server.
475

    
476
@end table
477

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

    
482
@table @option
483

    
484
@item -kernel bzImage 
485
Use @var{bzImage} as kernel image.
486

    
487
@item -append cmdline 
488
Use @var{cmdline} as kernel command line
489

    
490
@item -initrd file
491
Use @var{file} as initial ram disk.
492

    
493
@end table
494

    
495
Debug/Expert options:
496
@table @option
497

    
498
@item -serial dev
499
Redirect the virtual serial port to host device @var{dev}. Available
500
devices are:
501
@table @code
502
@item vc
503
Virtual console
504
@item pty
505
[Linux only] Pseudo TTY (a new PTY is automatically allocated)
506
@item null
507
void device
508
@item /dev/XXX
509
[Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
510
parameters are set according to the emulated ones.
511
@item /dev/parportN
512
[Linux only, parallel port only] Use host parallel port
513
@var{N}. Currently only SPP parallel port features can be used.
514
@item file:filename
515
Write output to filename. No character can be read.
516
@item stdio
517
[Unix only] standard input/output
518
@item pipe:filename
519
[Unix only] name pipe @var{filename}
520
@end table
521
The default device is @code{vc} in graphical mode and @code{stdio} in
522
non graphical mode.
523

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

    
527
@item -parallel dev
528
Redirect the virtual parallel port to host device @var{dev} (same
529
devices as the serial port). On Linux hosts, @file{/dev/parportN} can
530
be used to use hardware devices connected on the corresponding host
531
parallel port.
532

    
533
This option can be used several times to simulate up to 3 parallel
534
ports.
535

    
536
@item -monitor dev
537
Redirect the monitor to host device @var{dev} (same devices as the
538
serial port).
539
The default device is @code{vc} in graphical mode and @code{stdio} in
540
non graphical mode.
541

    
542
@item -s
543
Wait gdb connection to port 1234 (@pxref{gdb_usage}). 
544
@item -p port
545
Change gdb connection port.
546
@item -S
547
Do not start CPU at startup (you must type 'c' in the monitor).
548
@item -d             
549
Output log in /tmp/qemu.log
550
@item -hdachs c,h,s,[,t]
551
Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
552
@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
553
translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
554
all thoses parameters. This option is useful for old MS-DOS disk
555
images.
556

    
557
@item -std-vga
558
Simulate a standard VGA card with Bochs VBE extensions (default is
559
Cirrus Logic GD5446 PCI VGA)
560
@item -loadvm file
561
Start right away with a saved state (@code{loadvm} in monitor)
562
@end table
563

    
564
@c man end
565

    
566
@node pcsys_keys
567
@section Keys
568

    
569
@c man begin OPTIONS
570

    
571
During the graphical emulation, you can use the following keys:
572
@table @key
573
@item Ctrl-Alt-f
574
Toggle full screen
575

    
576
@item Ctrl-Alt-n
577
Switch to virtual console 'n'. Standard console mappings are:
578
@table @emph
579
@item 1
580
Target system display
581
@item 2
582
Monitor
583
@item 3
584
Serial port
585
@end table
586

    
587
@item Ctrl-Alt
588
Toggle mouse and keyboard grab.
589
@end table
590

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

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

    
597
@table @key
598
@item Ctrl-a h
599
Print this help
600
@item Ctrl-a x    
601
Exit emulatior
602
@item Ctrl-a s    
603
Save disk data back to file (if -snapshot)
604
@item Ctrl-a b
605
Send break (magic sysrq in Linux)
606
@item Ctrl-a c
607
Switch between console and monitor
608
@item Ctrl-a Ctrl-a
609
Send Ctrl-a
610
@end table
611
@c man end
612

    
613
@ignore
614

    
615
@c man begin SEEALSO
616
The HTML documentation of QEMU for more precise information and Linux
617
user mode emulator invocation.
618
@c man end
619

    
620
@c man begin AUTHOR
621
Fabrice Bellard
622
@c man end
623

    
624
@end ignore
625

    
626
@node pcsys_monitor
627
@section QEMU Monitor
628

    
629
The QEMU monitor is used to give complex commands to the QEMU
630
emulator. You can use it to:
631

    
632
@itemize @minus
633

    
634
@item
635
Remove or insert removable medias images
636
(such as CD-ROM or floppies)
637

    
638
@item 
639
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
640
from a disk file.
641

    
642
@item Inspect the VM state without an external debugger.
643

    
644
@end itemize
645

    
646
@subsection Commands
647

    
648
The following commands are available:
649

    
650
@table @option
651

    
652
@item help or ? [cmd]
653
Show the help for all commands or just for command @var{cmd}.
654

    
655
@item commit  
656
Commit changes to the disk images (if -snapshot is used)
657

    
658
@item info subcommand 
659
show various information about the system state
660

    
661
@table @option
662
@item info network
663
show the various VLANs and the associated devices
664
@item info block
665
show the block devices
666
@item info registers
667
show the cpu registers
668
@item info history
669
show the command line history
670
@item info pci
671
show emulated PCI device
672
@item info usb
673
show USB devices plugged on the virtual USB hub
674
@item info usbhost
675
show all USB host devices
676
@end table
677

    
678
@item q or quit
679
Quit the emulator.
680

    
681
@item eject [-f] device
682
Eject a removable media (use -f to force it).
683

    
684
@item change device filename
685
Change a removable media.
686

    
687
@item screendump filename
688
Save screen into PPM image @var{filename}.
689

    
690
@item log item1[,...]
691
Activate logging of the specified items to @file{/tmp/qemu.log}.
692

    
693
@item savevm filename
694
Save the whole virtual machine state to @var{filename}.
695

    
696
@item loadvm filename
697
Restore the whole virtual machine state from @var{filename}.
698

    
699
@item stop
700
Stop emulation.
701

    
702
@item c or cont
703
Resume emulation.
704

    
705
@item gdbserver [port]
706
Start gdbserver session (default port=1234)
707

    
708
@item x/fmt addr
709
Virtual memory dump starting at @var{addr}.
710

    
711
@item xp /fmt addr
712
Physical memory dump starting at @var{addr}.
713

    
714
@var{fmt} is a format which tells the command how to format the
715
data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
716

    
717
@table @var
718
@item count 
719
is the number of items to be dumped.
720

    
721
@item format
722
can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
723
c (char) or i (asm instruction).
724

    
725
@item size
726
can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
727
@code{h} or @code{w} can be specified with the @code{i} format to
728
respectively select 16 or 32 bit code instruction size.
729

    
730
@end table
731

    
732
Examples: 
733
@itemize
734
@item
735
Dump 10 instructions at the current instruction pointer:
736
@example 
737
(qemu) x/10i $eip
738
0x90107063:  ret
739
0x90107064:  sti
740
0x90107065:  lea    0x0(%esi,1),%esi
741
0x90107069:  lea    0x0(%edi,1),%edi
742
0x90107070:  ret
743
0x90107071:  jmp    0x90107080
744
0x90107073:  nop
745
0x90107074:  nop
746
0x90107075:  nop
747
0x90107076:  nop
748
@end example
749

    
750
@item
751
Dump 80 16 bit values at the start of the video memory.
752
@smallexample 
753
(qemu) xp/80hx 0xb8000
754
0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
755
0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
756
0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
757
0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
758
0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
759
0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
760
0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
761
0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
762
0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
763
0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
764
@end smallexample
765
@end itemize
766

    
767
@item p or print/fmt expr
768

    
769
Print expression value. Only the @var{format} part of @var{fmt} is
770
used.
771

    
772
@item sendkey keys
773

    
774
Send @var{keys} to the emulator. Use @code{-} to press several keys
775
simultaneously. Example:
776
@example
777
sendkey ctrl-alt-f1
778
@end example
779

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

    
783
@item system_reset
784

    
785
Reset the system.
786

    
787
@item usb_add devname
788

    
789
Add the USB device @var{devname}.  For details of available devices see
790
@ref{usb_devices}
791

    
792
@item usb_del devname
793

    
794
Remove the USB device @var{devname} from the QEMU virtual USB
795
hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
796
command @code{info usb} to see the devices you can remove.
797

    
798
@end table
799

    
800
@subsection Integer expressions
801

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

    
806
@node disk_images
807
@section Disk Images
808

    
809
Since version 0.6.1, QEMU supports many disk image formats, including
810
growable disk images (their size increase as non empty sectors are
811
written), compressed and encrypted disk images.
812

    
813
@menu
814
* disk_images_quickstart::    Quick start for disk image creation
815
* disk_images_snapshot_mode:: Snapshot mode
816
* qemu_img_invocation::       qemu-img Invocation
817
* disk_images_fat_images::    Virtual FAT disk images
818
@end menu
819

    
820
@node disk_images_quickstart
821
@subsection Quick start for disk image creation
822

    
823
You can create a disk image with the command:
824
@example
825
qemu-img create myimage.img mysize
826
@end example
827
where @var{myimage.img} is the disk image filename and @var{mysize} is its
828
size in kilobytes. You can add an @code{M} suffix to give the size in
829
megabytes and a @code{G} suffix for gigabytes.
830

    
831
See @ref{qemu_img_invocation} for more information.
832

    
833
@node disk_images_snapshot_mode
834
@subsection Snapshot mode
835

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

    
842
@node qemu_img_invocation
843
@subsection @code{qemu-img} Invocation
844

    
845
@include qemu-img.texi
846

    
847
@node disk_images_fat_images
848
@subsection Virtual FAT disk images
849

    
850
QEMU can automatically create a virtual FAT disk image from a
851
directory tree. In order to use it, just type:
852

    
853
@example 
854
qemu linux.img -hdb fat:/my_directory
855
@end example
856

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

    
861
Floppies can be emulated with the @code{:floppy:} option:
862

    
863
@example 
864
qemu linux.img -fda fat:floppy:/my_directory
865
@end example
866

    
867
A read/write support is available for testing (beta stage) with the
868
@code{:rw:} option:
869

    
870
@example 
871
qemu linux.img -fda fat:floppy:rw:/my_directory
872
@end example
873

    
874
What you should @emph{never} do:
875
@itemize
876
@item use non-ASCII filenames ;
877
@item use "-snapshot" together with ":rw:" ;
878
@item expect it to work when loadvm'ing ;
879
@item write to the FAT directory on the host system while accessing it with the guest system.
880
@end itemize
881

    
882
@node pcsys_network
883
@section Network emulation
884

    
885
QEMU can simulate several networks cards (NE2000 boards on the PC
886
target) and can connect them to an arbitrary number of Virtual Local
887
Area Networks (VLANs). Host TAP devices can be connected to any QEMU
888
VLAN. VLAN can be connected between separate instances of QEMU to
889
simulate large networks. For simpler usage, a non priviledged user mode
890
network stack can replace the TAP device to have a basic network
891
connection.
892

    
893
@subsection VLANs
894

    
895
QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
896
connection between several network devices. These devices can be for
897
example QEMU virtual Ethernet cards or virtual Host ethernet devices
898
(TAP devices).
899

    
900
@subsection Using TAP network interfaces
901

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

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

    
913
See @ref{direct_linux_boot} to have an example of network use with a
914
Linux distribution and @ref{sec_invocation} to have examples of
915
command lines using the TAP network interfaces.
916

    
917
@subsection Using the user mode network stack
918

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

    
924
@example
925

    
926
         QEMU VLAN      <------>  Firewall/DHCP server <-----> Internet
927
                           |          (10.0.2.2)
928
                           |
929
                           ---->  DNS server (10.0.2.3)
930
                           |     
931
                           ---->  SMB server (10.0.2.4)
932
@end example
933

    
934
The QEMU VM behaves as if it was behind a firewall which blocks all
935
incoming connections. You can use a DHCP client to automatically
936
configure the network in the QEMU VM. The DHCP server assign addresses
937
to the hosts starting from 10.0.2.15.
938

    
939
In order to check that the user mode network is working, you can ping
940
the address 10.0.2.2 and verify that you got an address in the range
941
10.0.2.x from the QEMU virtual DHCP server.
942

    
943
Note that @code{ping} is not supported reliably to the internet as it
944
would require root priviledges. It means you can only ping the local
945
router (10.0.2.2).
946

    
947
When using the built-in TFTP server, the router is also the TFTP
948
server.
949

    
950
When using the @option{-redir} option, TCP or UDP connections can be
951
redirected from the host to the guest. It allows for example to
952
redirect X11, telnet or SSH connections.
953

    
954
@subsection Connecting VLANs between QEMU instances
955

    
956
Using the @option{-net socket} option, it is possible to make VLANs
957
that span several QEMU instances. See @ref{sec_invocation} to have a
958
basic example.
959

    
960
@node direct_linux_boot
961
@section Direct Linux Boot
962

    
963
This section explains how to launch a Linux kernel inside QEMU without
964
having to make a full bootable image. It is very useful for fast Linux
965
kernel testing. The QEMU network configuration is also explained.
966

    
967
@enumerate
968
@item
969
Download the archive @file{linux-test-xxx.tar.gz} containing a Linux
970
kernel and a disk image. 
971

    
972
@item Optional: If you want network support (for example to launch X11 examples), you
973
must copy the script @file{qemu-ifup} in @file{/etc} and configure
974
properly @code{sudo} so that the command @code{ifconfig} contained in
975
@file{qemu-ifup} can be executed as root. You must verify that your host
976
kernel supports the TUN/TAP network interfaces: the device
977
@file{/dev/net/tun} must be present.
978

    
979
When network is enabled, there is a virtual network connection between
980
the host kernel and the emulated kernel. The emulated kernel is seen
981
from the host kernel at IP address 172.20.0.2 and the host kernel is
982
seen from the emulated kernel at IP address 172.20.0.1.
983

    
984
@item Launch @code{qemu.sh}. You should have the following output:
985

    
986
@smallexample
987
> ./qemu.sh 
988
Connected to host network interface: tun0
989
Linux version 2.4.21 (bellard@@voyager.localdomain) (gcc version 3.2.2 20030222 @/(Red Hat @/Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003
990
BIOS-provided physical RAM map:
991
 BIOS-e801: 0000000000000000 - 000000000009f000 (usable)
992
 BIOS-e801: 0000000000100000 - 0000000002000000 (usable)
993
32MB LOWMEM available.
994
On node 0 totalpages: 8192
995
zone(0): 4096 pages.
996
zone(1): 4096 pages.
997
zone(2): 0 pages.
998
Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe ide4=noprobe @/ide5=noprobe console=ttyS0
999
ide_setup: ide2=noprobe
1000
ide_setup: ide3=noprobe
1001
ide_setup: ide4=noprobe
1002
ide_setup: ide5=noprobe
1003
Initializing CPU#0
1004
Detected 2399.621 MHz processor.
1005
Console: colour EGA 80x25
1006
Calibrating delay loop... 4744.80 BogoMIPS
1007
Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data, 64k init, @/0k highmem)
1008
Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
1009
Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
1010
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
1011
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
1012
Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
1013
CPU: Intel Pentium Pro stepping 03
1014
Checking 'hlt' instruction... OK.
1015
POSIX conformance testing by UNIFIX
1016
Linux NET4.0 for Linux 2.4
1017
Based upon Swansea University Computer Society NET3.039
1018
Initializing RT netlink socket
1019
apm: BIOS not found.
1020
Starting kswapd
1021
Journalled Block Device driver loaded
1022
Detected PS/2 Mouse Port.
1023
pty: 256 Unix98 ptys configured
1024
Serial driver version 5.05c (2001-07-08) with no serial options enabled
1025
ttyS00 at 0x03f8 (irq = 4) is a 16450
1026
ne.c:v1.10 9/23/94 Donald Becker (becker@@scyld.com)
1027
Last modified Nov 1, 2000 by Paul Gortmaker
1028
NE*000 ethercard probe at 0x300: 52 54 00 12 34 56
1029
eth0: NE2000 found at 0x300, using IRQ 9.
1030
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
1031
Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
1032
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
1033
hda: QEMU HARDDISK, ATA DISK drive
1034
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
1035
hda: attached ide-disk driver.
1036
hda: 20480 sectors (10 MB) w/256KiB Cache, CHS=20/16/63
1037
Partition check:
1038
 hda:
1039
Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996
1040
NET4: Linux TCP/IP 1.0 for NET4.0
1041
IP Protocols: ICMP, UDP, TCP, IGMP
1042
IP: routing cache hash table of 512 buckets, 4Kbytes
1043
TCP: Hash tables configured (established 2048 bind 4096)
1044
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
1045
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
1046
VFS: Mounted root (ext2 filesystem).
1047
Freeing unused kernel memory: 64k freed
1048
 
1049
Linux version 2.4.21 (bellard@@voyager.localdomain) (gcc version 3.2.2 20030222 @/(Red Hat @/Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003
1050
 
1051
QEMU Linux test distribution (based on Redhat 9)
1052
 
1053
Type 'exit' to halt the system
1054
 
1055
sh-2.05b# 
1056
@end smallexample
1057

    
1058
@item
1059
Then you can play with the kernel inside the virtual serial console. You
1060
can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help
1061
about the keys you can type inside the virtual serial console. In
1062
particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as
1063
the Magic SysRq key.
1064

    
1065
@item 
1066
If the network is enabled, launch the script @file{/etc/linuxrc} in the
1067
emulator (don't forget the leading dot):
1068
@example
1069
. /etc/linuxrc
1070
@end example
1071

    
1072
Then enable X11 connections on your PC from the emulated Linux: 
1073
@example
1074
xhost +172.20.0.2
1075
@end example
1076

    
1077
You can now launch @file{xterm} or @file{xlogo} and verify that you have
1078
a real Virtual Linux system !
1079

    
1080
@end enumerate
1081

    
1082
NOTES:
1083
@enumerate
1084
@item 
1085
A 2.5.74 kernel is also included in the archive. Just
1086
replace the bzImage in qemu.sh to try it.
1087

    
1088
@item 
1089
In order to exit cleanly from qemu, you can do a @emph{shutdown} inside
1090
qemu. qemu will automatically exit when the Linux shutdown is done.
1091

    
1092
@item 
1093
You can boot slightly faster by disabling the probe of non present IDE
1094
interfaces. To do so, add the following options on the kernel command
1095
line:
1096
@example
1097
ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
1098
@end example
1099

    
1100
@item 
1101
The example disk image is a modified version of the one made by Kevin
1102
Lawton for the plex86 Project (@url{www.plex86.org}).
1103

    
1104
@end enumerate
1105

    
1106
@node pcsys_usb
1107
@section USB emulation
1108

    
1109
QEMU emulates a PCI UHCI USB controller. You can virtually plug
1110
virtual USB devices or real host USB devices (experimental, works only
1111
on Linux hosts).  Qemu will automatically create and connect virtual USB hubs
1112
as neccessary to connect multiple USB devices.
1113

    
1114
@menu
1115
* usb_devices::
1116
* host_usb_devices::
1117
@end menu
1118
@node usb_devices
1119
@subsection Connecting USB devices
1120

    
1121
USB devices can be connected with the @option{-usbdevice} commandline option
1122
or the @code{usb_add} monitor command.  Available devices are:
1123

    
1124
@table @var
1125
@item @code{mouse}
1126
Virtual Mouse.  This will override the PS/2 mouse emulation when activated.
1127
@item @code{tablet}
1128
Pointer device that uses abolsute coordinates (like a touchscreen).
1129
This means qemu is able to report the mouse position without having
1130
to grab the mouse.  Also overrides the PS/2 mouse emulation when activated.
1131
@item @code{disk:file}
1132
Mass storage device based on @var{file} (@pxref{disk_images})
1133
@item @code{host:bus.addr}
1134
Pass through the host device identified by @var{bus.addr}
1135
(Linux only)
1136
@item @code{host:vendor_id:product_id}
1137
Pass through the host device identified by @var{vendor_id:product_id}
1138
(Linux only)
1139
@end table
1140

    
1141
@node host_usb_devices
1142
@subsection Using host USB devices on a Linux host
1143

    
1144
WARNING: this is an experimental feature. QEMU will slow down when
1145
using it. USB devices requiring real time streaming (i.e. USB Video
1146
Cameras) are not supported yet.
1147

    
1148
@enumerate
1149
@item If you use an early Linux 2.4 kernel, verify that no Linux driver 
1150
is actually using the USB device. A simple way to do that is simply to
1151
disable the corresponding kernel module by renaming it from @file{mydriver.o}
1152
to @file{mydriver.o.disabled}.
1153

    
1154
@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1155
@example
1156
ls /proc/bus/usb
1157
001  devices  drivers
1158
@end example
1159

    
1160
@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:
1161
@example
1162
chown -R myuid /proc/bus/usb
1163
@end example
1164

    
1165
@item Launch QEMU and do in the monitor:
1166
@example 
1167
info usbhost
1168
  Device 1.2, speed 480 Mb/s
1169
    Class 00: USB device 1234:5678, USB DISK
1170
@end example
1171
You should see the list of the devices you can use (Never try to use
1172
hubs, it won't work).
1173

    
1174
@item Add the device in QEMU by using:
1175
@example 
1176
usb_add host:1234:5678
1177
@end example
1178

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

    
1182
@item Now you can try to use the host USB device in QEMU.
1183

    
1184
@end enumerate
1185

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

    
1189
@node gdb_usage
1190
@section GDB usage
1191

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

    
1195
In order to use gdb, launch qemu with the '-s' option. It will wait for a
1196
gdb connection:
1197
@example
1198
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1199
       -append "root=/dev/hda"
1200
Connected to host network interface: tun0
1201
Waiting gdb connection on port 1234
1202
@end example
1203

    
1204
Then launch gdb on the 'vmlinux' executable:
1205
@example
1206
> gdb vmlinux
1207
@end example
1208

    
1209
In gdb, connect to QEMU:
1210
@example
1211
(gdb) target remote localhost:1234
1212
@end example
1213

    
1214
Then you can use gdb normally. For example, type 'c' to launch the kernel:
1215
@example
1216
(gdb) c
1217
@end example
1218

    
1219
Here are some useful tips in order to use gdb on system code:
1220

    
1221
@enumerate
1222
@item
1223
Use @code{info reg} to display all the CPU registers.
1224
@item
1225
Use @code{x/10i $eip} to display the code at the PC position.
1226
@item
1227
Use @code{set architecture i8086} to dump 16 bit code. Then use
1228
@code{x/10i $cs*16+$eip} to dump the code at the PC position.
1229
@end enumerate
1230

    
1231
@node pcsys_os_specific
1232
@section Target OS specific information
1233

    
1234
@subsection Linux
1235

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

    
1240
When using a 2.6 guest Linux kernel, you should add the option
1241
@code{clock=pit} on the kernel command line because the 2.6 Linux
1242
kernels make very strict real time clock checks by default that QEMU
1243
cannot simulate exactly.
1244

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

    
1251
@subsection Windows
1252

    
1253
If you have a slow host, using Windows 95 is better as it gives the
1254
best speed. Windows 2000 is also a good choice.
1255

    
1256
@subsubsection SVGA graphic modes support
1257

    
1258
QEMU emulates a Cirrus Logic GD5446 Video
1259
card. All Windows versions starting from Windows 95 should recognize
1260
and use this graphic card. For optimal performances, use 16 bit color
1261
depth in the guest and the host OS.
1262

    
1263
@subsubsection CPU usage reduction
1264

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

    
1271
@subsubsection Windows 2000 disk full problem
1272

    
1273
Windows 2000 has a bug which gives a disk full problem during its
1274
installation. When installing it, use the @option{-win2k-hack} QEMU
1275
option to enable a specific workaround. After Windows 2000 is
1276
installed, you no longer need this option (this option slows down the
1277
IDE transfers).
1278

    
1279
@subsubsection Windows 2000 shutdown
1280

    
1281
Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1282
can. It comes from the fact that Windows 2000 does not automatically
1283
use the APM driver provided by the BIOS.
1284

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

    
1292
@subsubsection Share a directory between Unix and Windows
1293

    
1294
See @ref{sec_invocation} about the help of the option @option{-smb}.
1295

    
1296
@subsubsection Windows XP security problems
1297

    
1298
Some releases of Windows XP install correctly but give a security
1299
error when booting:
1300
@example
1301
A problem is preventing Windows from accurately checking the
1302
license for this computer. Error code: 0x800703e6.
1303
@end example
1304
The only known workaround is to boot in Safe mode
1305
without networking support. 
1306

    
1307
Future QEMU releases are likely to correct this bug.
1308

    
1309
@subsection MS-DOS and FreeDOS
1310

    
1311
@subsubsection CPU usage reduction
1312

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

    
1318
@node QEMU System emulator for non PC targets
1319
@chapter QEMU System emulator for non PC targets
1320

    
1321
QEMU is a generic emulator and it emulates many non PC
1322
machines. Most of the options are similar to the PC emulator. The
1323
differences are mentionned in the following sections.
1324

    
1325
@menu
1326
* QEMU PowerPC System emulator::
1327
* Sparc32 System emulator invocation::
1328
* Sparc64 System emulator invocation::
1329
* MIPS System emulator invocation::
1330
* ARM System emulator invocation::
1331
@end menu
1332

    
1333
@node QEMU PowerPC System emulator
1334
@section QEMU PowerPC System emulator
1335

    
1336
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1337
or PowerMac PowerPC system.
1338

    
1339
QEMU emulates the following PowerMac peripherals:
1340

    
1341
@itemize @minus
1342
@item 
1343
UniNorth PCI Bridge 
1344
@item
1345
PCI VGA compatible card with VESA Bochs Extensions
1346
@item 
1347
2 PMAC IDE interfaces with hard disk and CD-ROM support
1348
@item 
1349
NE2000 PCI adapters
1350
@item
1351
Non Volatile RAM
1352
@item
1353
VIA-CUDA with ADB keyboard and mouse.
1354
@end itemize
1355

    
1356
QEMU emulates the following PREP peripherals:
1357

    
1358
@itemize @minus
1359
@item 
1360
PCI Bridge
1361
@item
1362
PCI VGA compatible card with VESA Bochs Extensions
1363
@item 
1364
2 IDE interfaces with hard disk and CD-ROM support
1365
@item
1366
Floppy disk
1367
@item 
1368
NE2000 network adapters
1369
@item
1370
Serial port
1371
@item
1372
PREP Non Volatile RAM
1373
@item
1374
PC compatible keyboard and mouse.
1375
@end itemize
1376

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

    
1380
@c man begin OPTIONS
1381

    
1382
The following options are specific to the PowerPC emulation:
1383

    
1384
@table @option
1385

    
1386
@item -g WxH[xDEPTH]  
1387

    
1388
Set the initial VGA graphic mode. The default is 800x600x15.
1389

    
1390
@end table
1391

    
1392
@c man end 
1393

    
1394

    
1395
More information is available at
1396
@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
1397

    
1398
@node Sparc32 System emulator invocation
1399
@section Sparc32 System emulator invocation
1400

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

    
1404
QEMU emulates the following sun4m peripherals:
1405

    
1406
@itemize @minus
1407
@item
1408
IOMMU
1409
@item
1410
TCX Frame buffer
1411
@item 
1412
Lance (Am7990) Ethernet
1413
@item
1414
Non Volatile RAM M48T08
1415
@item
1416
Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1417
and power/reset logic
1418
@item
1419
ESP SCSI controller with hard disk and CD-ROM support
1420
@item
1421
Floppy drive
1422
@end itemize
1423

    
1424
The number of peripherals is fixed in the architecture.
1425

    
1426
Since version 0.8.1, QEMU uses OpenBIOS
1427
@url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
1428
firmware implementation. The goal is to implement a 100% IEEE
1429
1275-1994 (referred to as Open Firmware) compliant firmware.
1430

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

    
1435
@c man begin OPTIONS
1436

    
1437
The following options are specific to the Sparc emulation:
1438

    
1439
@table @option
1440

    
1441
@item -g WxH
1442

    
1443
Set the initial TCX graphic mode. The default is 1024x768.
1444

    
1445
@end table
1446

    
1447
@c man end 
1448

    
1449
@node Sparc64 System emulator invocation
1450
@section Sparc64 System emulator invocation
1451

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

    
1455
QEMU emulates the following sun4u peripherals:
1456

    
1457
@itemize @minus
1458
@item
1459
UltraSparc IIi APB PCI Bridge 
1460
@item
1461
PCI VGA compatible card with VESA Bochs Extensions
1462
@item
1463
Non Volatile RAM M48T59
1464
@item
1465
PC-compatible serial ports
1466
@end itemize
1467

    
1468
@node MIPS System emulator invocation
1469
@section MIPS System emulator invocation
1470

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

    
1475
@itemize @minus
1476
@item 
1477
MIPS R4K CPU
1478
@item
1479
PC style serial port
1480
@item
1481
NE2000 network card
1482
@end itemize
1483

    
1484
More information is available in the QEMU mailing-list archive.
1485

    
1486
@node ARM System emulator invocation
1487
@section ARM System emulator invocation
1488

    
1489
Use the executable @file{qemu-system-arm} to simulate a ARM
1490
machine. The ARM Integrator/CP board is emulated with the following
1491
devices:
1492

    
1493
@itemize @minus
1494
@item
1495
ARM926E or ARM1026E CPU
1496
@item
1497
Two PL011 UARTs
1498
@item 
1499
SMC 91c111 Ethernet adapter
1500
@item
1501
PL110 LCD controller
1502
@item
1503
PL050 KMI with PS/2 keyboard and mouse.
1504
@end itemize
1505

    
1506
The ARM Versatile baseboard is emulated with the following devices:
1507

    
1508
@itemize @minus
1509
@item
1510
ARM926E CPU
1511
@item
1512
PL190 Vectored Interrupt Controller
1513
@item
1514
Four PL011 UARTs
1515
@item 
1516
SMC 91c111 Ethernet adapter
1517
@item
1518
PL110 LCD controller
1519
@item
1520
PL050 KMI with PS/2 keyboard and mouse.
1521
@item
1522
PCI host bridge.  Note the emulated PCI bridge only provides access to
1523
PCI memory space.  It does not provide access to PCI IO space.
1524
This means some devices (eg. ne2k_pci NIC) are not useable, and others
1525
(eg. rtl8139 NIC) are only useable when the guest drivers use the memory
1526
mapped control registers.
1527
@end itemize
1528

    
1529
A Linux 2.6 test image is available on the QEMU web site. More
1530
information is available in the QEMU mailing-list archive.
1531

    
1532
@node QEMU Linux User space emulator 
1533
@chapter QEMU Linux User space emulator 
1534

    
1535
@menu
1536
* Quick Start::
1537
* Wine launch::
1538
* Command line options::
1539
* Other binaries::
1540
@end menu
1541

    
1542
@node Quick Start
1543
@section Quick Start
1544

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

    
1548
@itemize
1549

    
1550
@item On x86, you can just try to launch any process by using the native
1551
libraries:
1552

    
1553
@example 
1554
qemu-i386 -L / /bin/ls
1555
@end example
1556

    
1557
@code{-L /} tells that the x86 dynamic linker must be searched with a
1558
@file{/} prefix.
1559

    
1560
@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):
1561

    
1562
@example 
1563
qemu-i386 -L / qemu-i386 -L / /bin/ls
1564
@end example
1565

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

    
1570
@example
1571
unset LD_LIBRARY_PATH 
1572
@end example
1573

    
1574
Then you can launch the precompiled @file{ls} x86 executable:
1575

    
1576
@example
1577
qemu-i386 tests/i386/ls
1578
@end example
1579
You can look at @file{qemu-binfmt-conf.sh} so that
1580
QEMU is automatically launched by the Linux kernel when you try to
1581
launch x86 executables. It requires the @code{binfmt_misc} module in the
1582
Linux kernel.
1583

    
1584
@item The x86 version of QEMU is also included. You can try weird things such as:
1585
@example
1586
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
1587
          /usr/local/qemu-i386/bin/ls-i386
1588
@end example
1589

    
1590
@end itemize
1591

    
1592
@node Wine launch
1593
@section Wine launch
1594

    
1595
@itemize
1596

    
1597
@item Ensure that you have a working QEMU with the x86 glibc
1598
distribution (see previous section). In order to verify it, you must be
1599
able to do:
1600

    
1601
@example
1602
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1603
@end example
1604

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

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

    
1612
@item Then you can try the example @file{putty.exe}:
1613

    
1614
@example
1615
qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
1616
          /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1617
@end example
1618

    
1619
@end itemize
1620

    
1621
@node Command line options
1622
@section Command line options
1623

    
1624
@example
1625
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1626
@end example
1627

    
1628
@table @option
1629
@item -h
1630
Print the help
1631
@item -L path   
1632
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1633
@item -s size
1634
Set the x86 stack size in bytes (default=524288)
1635
@end table
1636

    
1637
Debug options:
1638

    
1639
@table @option
1640
@item -d
1641
Activate log (logfile=/tmp/qemu.log)
1642
@item -p pagesize
1643
Act as if the host page size was 'pagesize' bytes
1644
@end table
1645

    
1646
@node Other binaries
1647
@section Other binaries
1648

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

    
1653
The binary format is detected automatically.
1654

    
1655
@node compilation
1656
@chapter Compilation from the sources
1657

    
1658
@menu
1659
* Linux/Unix::
1660
* Windows::
1661
* Cross compilation for Windows with Linux::
1662
* Mac OS X::
1663
@end menu
1664

    
1665
@node Linux/Unix
1666
@section Linux/Unix
1667

    
1668
@subsection Compilation
1669

    
1670
First you must decompress the sources:
1671
@example
1672
cd /tmp
1673
tar zxvf qemu-x.y.z.tar.gz
1674
cd qemu-x.y.z
1675
@end example
1676

    
1677
Then you configure QEMU and build it (usually no options are needed):
1678
@example
1679
./configure
1680
make
1681
@end example
1682

    
1683
Then type as root user:
1684
@example
1685
make install
1686
@end example
1687
to install QEMU in @file{/usr/local}.
1688

    
1689
@subsection Tested tool versions
1690

    
1691
In order to compile QEMU succesfully, it is very important that you
1692
have the right tools. The most important one is gcc. I cannot guaranty
1693
that QEMU works if you do not use a tested gcc version. Look at
1694
'configure' and 'Makefile' if you want to make a different gcc
1695
version work.
1696

    
1697
@example
1698
host      gcc      binutils      glibc    linux       distribution
1699
----------------------------------------------------------------------
1700
x86       3.2      2.13.2        2.1.3    2.4.18
1701
          2.96     2.11.93.0.2   2.2.5    2.4.18      Red Hat 7.3
1702
          3.2.2    2.13.90.0.18  2.3.2    2.4.20      Red Hat 9
1703

    
1704
PowerPC   3.3 [4]  2.13.90.0.18  2.3.1    2.4.20briq
1705
          3.2
1706

    
1707
Alpha     3.3 [1]  2.14.90.0.4   2.2.5    2.2.20 [2]  Debian 3.0
1708

    
1709
Sparc32   2.95.4   2.12.90.0.1   2.2.5    2.4.18      Debian 3.0
1710

    
1711
ARM       2.95.4   2.12.90.0.1   2.2.5    2.4.9 [3]   Debian 3.0
1712

    
1713
[1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
1714
    for gcc version >= 3.3.
1715
[2] Linux >= 2.4.20 is necessary for precise exception support
1716
    (untested).
1717
[3] 2.4.9-ac10-rmk2-np1-cerf2
1718

    
1719
[4] gcc 2.95.x generates invalid code when using too many register
1720
variables. You must use gcc 3.x on PowerPC.
1721
@end example
1722

    
1723
@node Windows
1724
@section Windows
1725

    
1726
@itemize
1727
@item Install the current versions of MSYS and MinGW from
1728
@url{http://www.mingw.org/}. You can find detailed installation
1729
instructions in the download section and the FAQ.
1730

    
1731
@item Download 
1732
the MinGW development library of SDL 1.2.x
1733
(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
1734
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
1735
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1736
directory. Edit the @file{sdl-config} script so that it gives the
1737
correct SDL directory when invoked.
1738

    
1739
@item Extract the current version of QEMU.
1740
 
1741
@item Start the MSYS shell (file @file{msys.bat}).
1742

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

    
1747
@item You can install QEMU in @file{Program Files/Qemu} by typing 
1748
@file{make install}. Don't forget to copy @file{SDL.dll} in
1749
@file{Program Files/Qemu}.
1750

    
1751
@end itemize
1752

    
1753
@node Cross compilation for Windows with Linux
1754
@section Cross compilation for Windows with Linux
1755

    
1756
@itemize
1757
@item
1758
Install the MinGW cross compilation tools available at
1759
@url{http://www.mingw.org/}.
1760

    
1761
@item 
1762
Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1763
unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1764
variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1765
the QEMU configuration script.
1766

    
1767
@item 
1768
Configure QEMU for Windows cross compilation:
1769
@example
1770
./configure --enable-mingw32
1771
@end example
1772
If necessary, you can change the cross-prefix according to the prefix
1773
choosen for the MinGW tools with --cross-prefix. You can also use
1774
--prefix to set the Win32 install path.
1775

    
1776
@item You can install QEMU in the installation directory by typing 
1777
@file{make install}. Don't forget to copy @file{SDL.dll} in the
1778
installation directory. 
1779

    
1780
@end itemize
1781

    
1782
Note: Currently, Wine does not seem able to launch
1783
QEMU for Win32.
1784

    
1785
@node Mac OS X
1786
@section Mac OS X
1787

    
1788
The Mac OS X patches are not fully merged in QEMU, so you should look
1789
at the QEMU mailing list archive to have all the necessary
1790
information.
1791

    
1792
@node Index
1793
@chapter Index
1794
@printindex cp
1795

    
1796
@bye