Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 00a9bf19

History | View | Annotate | Download (50.1 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 -m megs
232
Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
233

    
234
@item -smp n
235
Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
236
CPUs are supported.
237

    
238
@item -nographic
239

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

    
246
@item -vnc d
247

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

    
253
@item -k language
254

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

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

    
267
The default is @code{en-us}.
268

    
269
@item -audio-help
270

    
271
Will show the audio subsystem help: list of drivers, tunable
272
parameters.
273

    
274
@item -soundhw card1,card2,... or -soundhw all
275

    
276
Enable audio and selected sound hardware. Use ? to print all
277
available sound hardware.
278

    
279
@example
280
qemu -soundhw sb16,adlib hda
281
qemu -soundhw es1370 hda
282
qemu -soundhw all hda
283
qemu -soundhw ?
284
@end example
285

    
286
@item -localtime
287
Set the real time clock to local time (the default is to UTC
288
time). This option is needed to have correct date in MS-DOS or
289
Windows.
290

    
291
@item -full-screen
292
Start in full screen.
293

    
294
@item -pidfile file
295
Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
296
from a script.
297

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

    
303
@end table
304

    
305
USB options:
306
@table @option
307

    
308
@item -usb
309
Enable the USB driver (will be the default soon)
310

    
311
@item -usbdevice devname
312
Add the USB device @var{devname}. See the monitor command
313
@code{usb_add} to have more information.
314
@end table
315

    
316
Network options:
317

    
318
@table @option
319

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

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

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

    
342
@example
343
qemu linux.img -net nic -net tap
344
@end example
345

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

    
352

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

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

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

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

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

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

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

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

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

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

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

    
437
Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
438

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

    
443
@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
444

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

    
451
For example, to redirect host X11 connection from screen 1 to guest
452
screen 0, use the following:
453

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

    
461
To redirect telnet connections from host port 5555 to telnet port on
462
the guest, use the following:
463

    
464
@example
465
# on the host
466
qemu -redir tcp:5555::23 [...]
467
telnet localhost 5555
468
@end example
469

    
470
Then when you use on the host @code{telnet localhost 5555}, you
471
connect to the guest telnet server.
472

    
473
@end table
474

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

    
479
@table @option
480

    
481
@item -kernel bzImage 
482
Use @var{bzImage} as kernel image.
483

    
484
@item -append cmdline 
485
Use @var{cmdline} as kernel command line
486

    
487
@item -initrd file
488
Use @var{file} as initial ram disk.
489

    
490
@end table
491

    
492
Debug/Expert options:
493
@table @option
494

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

    
521
This option can be used several times to simulate up to 4 serials
522
ports.
523

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

    
530
This option can be used several times to simulate up to 3 parallel
531
ports.
532

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

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

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

    
561
@c man end
562

    
563
@node pcsys_keys
564
@section Keys
565

    
566
@c man begin OPTIONS
567

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

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

    
584
@item Ctrl-Alt
585
Toggle mouse and keyboard grab.
586
@end table
587

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

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

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

    
610
@ignore
611

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

    
617
@c man begin AUTHOR
618
Fabrice Bellard
619
@c man end
620

    
621
@end ignore
622

    
623
@node pcsys_monitor
624
@section QEMU Monitor
625

    
626
The QEMU monitor is used to give complex commands to the QEMU
627
emulator. You can use it to:
628

    
629
@itemize @minus
630

    
631
@item
632
Remove or insert removable medias images
633
(such as CD-ROM or floppies)
634

    
635
@item 
636
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
637
from a disk file.
638

    
639
@item Inspect the VM state without an external debugger.
640

    
641
@end itemize
642

    
643
@subsection Commands
644

    
645
The following commands are available:
646

    
647
@table @option
648

    
649
@item help or ? [cmd]
650
Show the help for all commands or just for command @var{cmd}.
651

    
652
@item commit  
653
Commit changes to the disk images (if -snapshot is used)
654

    
655
@item info subcommand 
656
show various information about the system state
657

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

    
675
@item q or quit
676
Quit the emulator.
677

    
678
@item eject [-f] device
679
Eject a removable media (use -f to force it).
680

    
681
@item change device filename
682
Change a removable media.
683

    
684
@item screendump filename
685
Save screen into PPM image @var{filename}.
686

    
687
@item log item1[,...]
688
Activate logging of the specified items to @file{/tmp/qemu.log}.
689

    
690
@item savevm filename
691
Save the whole virtual machine state to @var{filename}.
692

    
693
@item loadvm filename
694
Restore the whole virtual machine state from @var{filename}.
695

    
696
@item stop
697
Stop emulation.
698

    
699
@item c or cont
700
Resume emulation.
701

    
702
@item gdbserver [port]
703
Start gdbserver session (default port=1234)
704

    
705
@item x/fmt addr
706
Virtual memory dump starting at @var{addr}.
707

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

    
711
@var{fmt} is a format which tells the command how to format the
712
data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
713

    
714
@table @var
715
@item count 
716
is the number of items to be dumped.
717

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

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

    
727
@end table
728

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

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

    
764
@item p or print/fmt expr
765

    
766
Print expression value. Only the @var{format} part of @var{fmt} is
767
used.
768

    
769
@item sendkey keys
770

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

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

    
780
@item system_reset
781

    
782
Reset the system.
783

    
784
@item usb_add devname
785

    
786
Plug the USB device devname to the QEMU virtual USB hub. @var{devname}
787
is either a virtual device name (for example @code{mouse}) or a host
788
USB device identifier. Host USB device identifiers have the following
789
syntax: @code{host:bus.addr} or @code{host:vendor_id:product_id}.
790

    
791
@item usb_del devname
792

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

    
797
@end table
798

    
799
@subsection Integer expressions
800

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

    
805
@node disk_images
806
@section Disk Images
807

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

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

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

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

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

    
832
@node disk_images_snapshot_mode
833
@subsection Snapshot mode
834

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

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

    
844
@include qemu-img.texi
845

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

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

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

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

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

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

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

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

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

    
881
@node pcsys_network
882
@section Network emulation
883

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

    
892
@subsection VLANs
893

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

    
899
@subsection Using TAP network interfaces
900

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

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

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

    
916
@subsection Using the user mode network stack
917

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

    
923
@example
924

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

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

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

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

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

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

    
953
@subsection Connecting VLANs between QEMU instances
954

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

    
959
@node direct_linux_boot
960
@section Direct Linux Boot
961

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

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

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

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

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

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

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

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

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

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

    
1079
@end enumerate
1080

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

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

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

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

    
1103
@end enumerate
1104

    
1105
@node pcsys_usb
1106
@section USB emulation
1107

    
1108
QEMU emulates a PCI UHCI USB controller and a 8 port USB hub connected
1109
to it. You can virtually plug to the hub virtual USB devices or real
1110
host USB devices (experimental, works only on Linux hosts).
1111

    
1112
@subsection Using virtual USB devices
1113

    
1114
A virtual USB mouse device is available for testing in QEMU.
1115

    
1116
You can try it with the following monitor commands:
1117

    
1118
@example
1119
# add the mouse device
1120
(qemu) usb_add mouse 
1121

    
1122
# show the virtual USB devices plugged on the QEMU Virtual USB hub
1123
(qemu) info usb
1124
  Device 0.3, speed 12 Mb/s
1125

    
1126
# after some time you can try to remove the mouse
1127
(qemu) usb_del 0.3
1128
@end example
1129

    
1130
The option @option{-usbdevice} is similar to the monitor command
1131
@code{usb_add}.
1132

    
1133
@subsection Using host USB devices on a Linux host
1134

    
1135
WARNING: this is an experimental feature. QEMU will slow down when
1136
using it. USB devices requiring real time streaming (i.e. USB Video
1137
Cameras) are not supported yet.
1138

    
1139
@enumerate
1140
@item If you use an early Linux 2.4 kernel, verify that no Linux driver 
1141
is actually using the USB device. A simple way to do that is simply to
1142
disable the corresponding kernel module by renaming it from @file{mydriver.o}
1143
to @file{mydriver.o.disabled}.
1144

    
1145
@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1146
@example
1147
ls /proc/bus/usb
1148
001  devices  drivers
1149
@end example
1150

    
1151
@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:
1152
@example
1153
chown -R myuid /proc/bus/usb
1154
@end example
1155

    
1156
@item Launch QEMU and do in the monitor:
1157
@example 
1158
info usbhost
1159
  Device 1.2, speed 480 Mb/s
1160
    Class 00: USB device 1234:5678, USB DISK
1161
@end example
1162
You should see the list of the devices you can use (Never try to use
1163
hubs, it won't work).
1164

    
1165
@item Add the device in QEMU by using:
1166
@example 
1167
usb_add host:1234:5678
1168
@end example
1169

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

    
1173
@item Now you can try to use the host USB device in QEMU.
1174

    
1175
@end enumerate
1176

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

    
1180
@node gdb_usage
1181
@section GDB usage
1182

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

    
1186
In order to use gdb, launch qemu with the '-s' option. It will wait for a
1187
gdb connection:
1188
@example
1189
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1190
       -append "root=/dev/hda"
1191
Connected to host network interface: tun0
1192
Waiting gdb connection on port 1234
1193
@end example
1194

    
1195
Then launch gdb on the 'vmlinux' executable:
1196
@example
1197
> gdb vmlinux
1198
@end example
1199

    
1200
In gdb, connect to QEMU:
1201
@example
1202
(gdb) target remote localhost:1234
1203
@end example
1204

    
1205
Then you can use gdb normally. For example, type 'c' to launch the kernel:
1206
@example
1207
(gdb) c
1208
@end example
1209

    
1210
Here are some useful tips in order to use gdb on system code:
1211

    
1212
@enumerate
1213
@item
1214
Use @code{info reg} to display all the CPU registers.
1215
@item
1216
Use @code{x/10i $eip} to display the code at the PC position.
1217
@item
1218
Use @code{set architecture i8086} to dump 16 bit code. Then use
1219
@code{x/10i $cs*16+$eip} to dump the code at the PC position.
1220
@end enumerate
1221

    
1222
@node pcsys_os_specific
1223
@section Target OS specific information
1224

    
1225
@subsection Linux
1226

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

    
1231
When using a 2.6 guest Linux kernel, you should add the option
1232
@code{clock=pit} on the kernel command line because the 2.6 Linux
1233
kernels make very strict real time clock checks by default that QEMU
1234
cannot simulate exactly.
1235

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

    
1242
@subsection Windows
1243

    
1244
If you have a slow host, using Windows 95 is better as it gives the
1245
best speed. Windows 2000 is also a good choice.
1246

    
1247
@subsubsection SVGA graphic modes support
1248

    
1249
QEMU emulates a Cirrus Logic GD5446 Video
1250
card. All Windows versions starting from Windows 95 should recognize
1251
and use this graphic card. For optimal performances, use 16 bit color
1252
depth in the guest and the host OS.
1253

    
1254
@subsubsection CPU usage reduction
1255

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

    
1262
@subsubsection Windows 2000 disk full problem
1263

    
1264
Windows 2000 has a bug which gives a disk full problem during its
1265
installation. When installing it, use the @option{-win2k-hack} QEMU
1266
option to enable a specific workaround. After Windows 2000 is
1267
installed, you no longer need this option (this option slows down the
1268
IDE transfers).
1269

    
1270
@subsubsection Windows 2000 shutdown
1271

    
1272
Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1273
can. It comes from the fact that Windows 2000 does not automatically
1274
use the APM driver provided by the BIOS.
1275

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

    
1283
@subsubsection Share a directory between Unix and Windows
1284

    
1285
See @ref{sec_invocation} about the help of the option @option{-smb}.
1286

    
1287
@subsubsection Windows XP security problems
1288

    
1289
Some releases of Windows XP install correctly but give a security
1290
error when booting:
1291
@example
1292
A problem is preventing Windows from accurately checking the
1293
license for this computer. Error code: 0x800703e6.
1294
@end example
1295
The only known workaround is to boot in Safe mode
1296
without networking support. 
1297

    
1298
Future QEMU releases are likely to correct this bug.
1299

    
1300
@subsection MS-DOS and FreeDOS
1301

    
1302
@subsubsection CPU usage reduction
1303

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

    
1309
@node QEMU System emulator for non PC targets
1310
@chapter QEMU System emulator for non PC targets
1311

    
1312
QEMU is a generic emulator and it emulates many non PC
1313
machines. Most of the options are similar to the PC emulator. The
1314
differences are mentionned in the following sections.
1315

    
1316
@menu
1317
* QEMU PowerPC System emulator::
1318
* Sparc32 System emulator invocation::
1319
* Sparc64 System emulator invocation::
1320
* MIPS System emulator invocation::
1321
* ARM System emulator invocation::
1322
@end menu
1323

    
1324
@node QEMU PowerPC System emulator
1325
@section QEMU PowerPC System emulator
1326

    
1327
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1328
or PowerMac PowerPC system.
1329

    
1330
QEMU emulates the following PowerMac peripherals:
1331

    
1332
@itemize @minus
1333
@item 
1334
UniNorth PCI Bridge 
1335
@item
1336
PCI VGA compatible card with VESA Bochs Extensions
1337
@item 
1338
2 PMAC IDE interfaces with hard disk and CD-ROM support
1339
@item 
1340
NE2000 PCI adapters
1341
@item
1342
Non Volatile RAM
1343
@item
1344
VIA-CUDA with ADB keyboard and mouse.
1345
@end itemize
1346

    
1347
QEMU emulates the following PREP peripherals:
1348

    
1349
@itemize @minus
1350
@item 
1351
PCI Bridge
1352
@item
1353
PCI VGA compatible card with VESA Bochs Extensions
1354
@item 
1355
2 IDE interfaces with hard disk and CD-ROM support
1356
@item
1357
Floppy disk
1358
@item 
1359
NE2000 network adapters
1360
@item
1361
Serial port
1362
@item
1363
PREP Non Volatile RAM
1364
@item
1365
PC compatible keyboard and mouse.
1366
@end itemize
1367

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

    
1371
@c man begin OPTIONS
1372

    
1373
The following options are specific to the PowerPC emulation:
1374

    
1375
@table @option
1376

    
1377
@item -g WxH[xDEPTH]  
1378

    
1379
Set the initial VGA graphic mode. The default is 800x600x15.
1380

    
1381
@end table
1382

    
1383
@c man end 
1384

    
1385

    
1386
More information is available at
1387
@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
1388

    
1389
@node Sparc32 System emulator invocation
1390
@section Sparc32 System emulator invocation
1391

    
1392
Use the executable @file{qemu-system-sparc} to simulate a JavaStation
1393
(sun4m architecture). The emulation is somewhat complete.
1394

    
1395
QEMU emulates the following sun4m peripherals:
1396

    
1397
@itemize @minus
1398
@item
1399
IOMMU
1400
@item
1401
TCX Frame buffer
1402
@item 
1403
Lance (Am7990) Ethernet
1404
@item
1405
Non Volatile RAM M48T08
1406
@item
1407
Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1408
and power/reset logic
1409
@item
1410
ESP SCSI controller with hard disk and CD-ROM support
1411
@item
1412
Floppy drive
1413
@end itemize
1414

    
1415
The number of peripherals is fixed in the architecture.
1416

    
1417
QEMU uses the Proll, a PROM replacement available at
1418
@url{http://people.redhat.com/@/zaitcev/linux/}. The required
1419
QEMU-specific patches are included with the sources.
1420

    
1421
A sample Linux 2.6 series kernel and ram disk image are available on
1422
the QEMU web site. Please note that currently neither Linux 2.4
1423
series, NetBSD, nor OpenBSD kernels work.
1424

    
1425
@c man begin OPTIONS
1426

    
1427
The following options are specific to the Sparc emulation:
1428

    
1429
@table @option
1430

    
1431
@item -g WxH
1432

    
1433
Set the initial TCX graphic mode. The default is 1024x768.
1434

    
1435
@end table
1436

    
1437
@c man end 
1438

    
1439
@node Sparc64 System emulator invocation
1440
@section Sparc64 System emulator invocation
1441

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

    
1445
QEMU emulates the following sun4u peripherals:
1446

    
1447
@itemize @minus
1448
@item
1449
UltraSparc IIi APB PCI Bridge 
1450
@item
1451
PCI VGA compatible card with VESA Bochs Extensions
1452
@item
1453
Non Volatile RAM M48T59
1454
@item
1455
PC-compatible serial ports
1456
@end itemize
1457

    
1458
@node MIPS System emulator invocation
1459
@section MIPS System emulator invocation
1460

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

    
1465
@itemize @minus
1466
@item 
1467
MIPS R4K CPU
1468
@item
1469
PC style serial port
1470
@item
1471
NE2000 network card
1472
@end itemize
1473

    
1474
More information is available in the QEMU mailing-list archive.
1475

    
1476
@node ARM System emulator invocation
1477
@section ARM System emulator invocation
1478

    
1479
Use the executable @file{qemu-system-arm} to simulate a ARM
1480
machine. The ARM Integrator/CP board is emulated with the following
1481
devices:
1482

    
1483
@itemize @minus
1484
@item
1485
ARM926E or ARM1026E CPU
1486
@item
1487
Two PL011 UARTs
1488
@item 
1489
SMC 91c111 Ethernet adapter
1490
@item
1491
PL110 LCD controller
1492
@item
1493
PL050 KMI with PS/2 keyboard and mouse.
1494
@end itemize
1495

    
1496
The ARM Versatile baseboard is emulated with the following devices:
1497

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

    
1519
A Linux 2.6 test image is available on the QEMU web site. More
1520
information is available in the QEMU mailing-list archive.
1521

    
1522
@node QEMU Linux User space emulator 
1523
@chapter QEMU Linux User space emulator 
1524

    
1525
@menu
1526
* Quick Start::
1527
* Wine launch::
1528
* Command line options::
1529
@end menu
1530

    
1531
@node Quick Start
1532
@section Quick Start
1533

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

    
1537
@itemize
1538

    
1539
@item On x86, you can just try to launch any process by using the native
1540
libraries:
1541

    
1542
@example 
1543
qemu-i386 -L / /bin/ls
1544
@end example
1545

    
1546
@code{-L /} tells that the x86 dynamic linker must be searched with a
1547
@file{/} prefix.
1548

    
1549
@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):
1550

    
1551
@example 
1552
qemu-i386 -L / qemu-i386 -L / /bin/ls
1553
@end example
1554

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

    
1559
@example
1560
unset LD_LIBRARY_PATH 
1561
@end example
1562

    
1563
Then you can launch the precompiled @file{ls} x86 executable:
1564

    
1565
@example
1566
qemu-i386 tests/i386/ls
1567
@end example
1568
You can look at @file{qemu-binfmt-conf.sh} so that
1569
QEMU is automatically launched by the Linux kernel when you try to
1570
launch x86 executables. It requires the @code{binfmt_misc} module in the
1571
Linux kernel.
1572

    
1573
@item The x86 version of QEMU is also included. You can try weird things such as:
1574
@example
1575
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
1576
          /usr/local/qemu-i386/bin/ls-i386
1577
@end example
1578

    
1579
@end itemize
1580

    
1581
@node Wine launch
1582
@section Wine launch
1583

    
1584
@itemize
1585

    
1586
@item Ensure that you have a working QEMU with the x86 glibc
1587
distribution (see previous section). In order to verify it, you must be
1588
able to do:
1589

    
1590
@example
1591
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1592
@end example
1593

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

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

    
1601
@item Then you can try the example @file{putty.exe}:
1602

    
1603
@example
1604
qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
1605
          /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1606
@end example
1607

    
1608
@end itemize
1609

    
1610
@node Command line options
1611
@section Command line options
1612

    
1613
@example
1614
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1615
@end example
1616

    
1617
@table @option
1618
@item -h
1619
Print the help
1620
@item -L path   
1621
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1622
@item -s size
1623
Set the x86 stack size in bytes (default=524288)
1624
@end table
1625

    
1626
Debug options:
1627

    
1628
@table @option
1629
@item -d
1630
Activate log (logfile=/tmp/qemu.log)
1631
@item -p pagesize
1632
Act as if the host page size was 'pagesize' bytes
1633
@end table
1634

    
1635
@node compilation
1636
@chapter Compilation from the sources
1637

    
1638
@menu
1639
* Linux/Unix::
1640
* Windows::
1641
* Cross compilation for Windows with Linux::
1642
* Mac OS X::
1643
@end menu
1644

    
1645
@node Linux/Unix
1646
@section Linux/Unix
1647

    
1648
@subsection Compilation
1649

    
1650
First you must decompress the sources:
1651
@example
1652
cd /tmp
1653
tar zxvf qemu-x.y.z.tar.gz
1654
cd qemu-x.y.z
1655
@end example
1656

    
1657
Then you configure QEMU and build it (usually no options are needed):
1658
@example
1659
./configure
1660
make
1661
@end example
1662

    
1663
Then type as root user:
1664
@example
1665
make install
1666
@end example
1667
to install QEMU in @file{/usr/local}.
1668

    
1669
@subsection Tested tool versions
1670

    
1671
In order to compile QEMU succesfully, it is very important that you
1672
have the right tools. The most important one is gcc. I cannot guaranty
1673
that QEMU works if you do not use a tested gcc version. Look at
1674
'configure' and 'Makefile' if you want to make a different gcc
1675
version work.
1676

    
1677
@example
1678
host      gcc      binutils      glibc    linux       distribution
1679
----------------------------------------------------------------------
1680
x86       3.2      2.13.2        2.1.3    2.4.18
1681
          2.96     2.11.93.0.2   2.2.5    2.4.18      Red Hat 7.3
1682
          3.2.2    2.13.90.0.18  2.3.2    2.4.20      Red Hat 9
1683

    
1684
PowerPC   3.3 [4]  2.13.90.0.18  2.3.1    2.4.20briq
1685
          3.2
1686

    
1687
Alpha     3.3 [1]  2.14.90.0.4   2.2.5    2.2.20 [2]  Debian 3.0
1688

    
1689
Sparc32   2.95.4   2.12.90.0.1   2.2.5    2.4.18      Debian 3.0
1690

    
1691
ARM       2.95.4   2.12.90.0.1   2.2.5    2.4.9 [3]   Debian 3.0
1692

    
1693
[1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
1694
    for gcc version >= 3.3.
1695
[2] Linux >= 2.4.20 is necessary for precise exception support
1696
    (untested).
1697
[3] 2.4.9-ac10-rmk2-np1-cerf2
1698

    
1699
[4] gcc 2.95.x generates invalid code when using too many register
1700
variables. You must use gcc 3.x on PowerPC.
1701
@end example
1702

    
1703
@node Windows
1704
@section Windows
1705

    
1706
@itemize
1707
@item Install the current versions of MSYS and MinGW from
1708
@url{http://www.mingw.org/}. You can find detailed installation
1709
instructions in the download section and the FAQ.
1710

    
1711
@item Download 
1712
the MinGW development library of SDL 1.2.x
1713
(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
1714
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
1715
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1716
directory. Edit the @file{sdl-config} script so that it gives the
1717
correct SDL directory when invoked.
1718

    
1719
@item Extract the current version of QEMU.
1720
 
1721
@item Start the MSYS shell (file @file{msys.bat}).
1722

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

    
1727
@item You can install QEMU in @file{Program Files/Qemu} by typing 
1728
@file{make install}. Don't forget to copy @file{SDL.dll} in
1729
@file{Program Files/Qemu}.
1730

    
1731
@end itemize
1732

    
1733
@node Cross compilation for Windows with Linux
1734
@section Cross compilation for Windows with Linux
1735

    
1736
@itemize
1737
@item
1738
Install the MinGW cross compilation tools available at
1739
@url{http://www.mingw.org/}.
1740

    
1741
@item 
1742
Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1743
unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1744
variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1745
the QEMU configuration script.
1746

    
1747
@item 
1748
Configure QEMU for Windows cross compilation:
1749
@example
1750
./configure --enable-mingw32
1751
@end example
1752
If necessary, you can change the cross-prefix according to the prefix
1753
choosen for the MinGW tools with --cross-prefix. You can also use
1754
--prefix to set the Win32 install path.
1755

    
1756
@item You can install QEMU in the installation directory by typing 
1757
@file{make install}. Don't forget to copy @file{SDL.dll} in the
1758
installation directory. 
1759

    
1760
@end itemize
1761

    
1762
Note: Currently, Wine does not seem able to launch
1763
QEMU for Win32.
1764

    
1765
@node Mac OS X
1766
@section Mac OS X
1767

    
1768
The Mac OS X patches are not fully merged in QEMU, so you should look
1769
at the QEMU mailing list archive to have all the necessary
1770
information.
1771

    
1772
@node Index
1773
@chapter Index
1774
@printindex cp
1775

    
1776
@bye