Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 61b94156

History | View | Annotate | Download (46.5 kB)

1
\input texinfo @c -*- texinfo -*-
2

    
3
@iftex
4
@settitle QEMU CPU Emulator User Documentation
5
@titlepage
6
@sp 7
7
@center @titlefont{QEMU CPU Emulator User Documentation}
8
@sp 3
9
@end titlepage
10
@end iftex
11

    
12
@chapter Introduction
13

    
14
@section Features
15

    
16
QEMU is a FAST! processor emulator using dynamic translation to
17
achieve good emulation speed.
18

    
19
QEMU has two operating modes:
20

    
21
@itemize @minus
22

    
23
@item 
24
Full system emulation. In this mode, QEMU emulates a full system (for
25
example a PC), including one or several processors and various
26
peripherals. It can be used to launch different Operating Systems
27
without rebooting the PC or to debug system code.
28

    
29
@item 
30
User mode emulation (Linux host only). In this mode, QEMU can launch
31
Linux processes compiled for one CPU on another CPU. It can be used to
32
launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
33
to ease cross-compilation and cross-debugging.
34

    
35
@end itemize
36

    
37
QEMU can run without an host kernel driver and yet gives acceptable
38
performance. 
39

    
40
For system emulation, the following hardware targets are supported:
41
@itemize
42
@item PC (x86 or x86_64 processor)
43
@item ISA PC (old style PC without PCI bus)
44
@item PREP (PowerPC processor)
45
@item G3 BW PowerMac (PowerPC processor)
46
@item Mac99 PowerMac (PowerPC processor, in progress)
47
@item Sun4m (32-bit Sparc processor)
48
@item Sun4u (64-bit Sparc processor, in progress)
49
@item Malta board (32-bit MIPS processor)
50
@item ARM Integrator/CP (ARM926E or 1026E processor)
51
@end itemize
52

    
53
For user emulation, x86, PowerPC, ARM, MIPS, and Sparc32/64 CPUs are supported.
54

    
55
@chapter Installation
56

    
57
If you want to compile QEMU yourself, see @ref{compilation}.
58

    
59
@section Linux
60

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

    
64
@section Windows
65

    
66
Download the experimental binary installer at
67
@url{http://www.free.oszoo.org/download.html}.
68

    
69
@section Mac OS X
70

    
71
Download the experimental binary installer at
72
@url{http://www.free.oszoo.org/download.html}.
73

    
74
@chapter QEMU PC System emulator
75

    
76
@section Introduction
77

    
78
@c man begin DESCRIPTION
79

    
80
The QEMU PC System emulator simulates the
81
following peripherals:
82

    
83
@itemize @minus
84
@item 
85
i440FX host PCI bridge and PIIX3 PCI to ISA bridge
86
@item
87
Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
88
extensions (hardware level, including all non standard modes).
89
@item
90
PS/2 mouse and keyboard
91
@item 
92
2 PCI IDE interfaces with hard disk and CD-ROM support
93
@item
94
Floppy disk
95
@item 
96
NE2000 PCI network adapters
97
@item
98
Serial ports
99
@item
100
Creative SoundBlaster 16 sound card
101
@item
102
ENSONIQ AudioPCI ES1370 sound card
103
@item
104
Adlib(OPL2) - Yamaha YM3812 compatible chip
105
@item
106
PCI UHCI USB controller and a virtual USB hub.
107
@end itemize
108

    
109
SMP is supported with up to 255 CPUs.
110

    
111
Note that adlib is only available when QEMU was configured with
112
-enable-adlib
113

    
114
QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
115
VGA BIOS.
116

    
117
QEMU uses YM3812 emulation by Tatsuyuki Satoh.
118

    
119
@c man end
120

    
121
@section Quick Start
122

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

    
125
@example
126
qemu linux.img
127
@end example
128

    
129
Linux should boot and give you a prompt.
130

    
131
@node sec_invocation
132
@section Invocation
133

    
134
@example
135
@c man begin SYNOPSIS
136
usage: qemu [options] [disk_image]
137
@c man end
138
@end example
139

    
140
@c man begin OPTIONS
141
@var{disk_image} is a raw hard disk image for IDE hard disk 0.
142

    
143
General options:
144
@table @option
145
@item -M machine
146
Select the emulated machine (@code{-M ?} for list)
147

    
148
@item -fda file
149
@item -fdb file
150
Use @var{file} as floppy disk 0/1 image (@xref{disk_images}). You can
151
use the host floppy by using @file{/dev/fd0} as filename.
152

    
153
@item -hda file
154
@item -hdb file
155
@item -hdc file
156
@item -hdd file
157
Use @var{file} as hard disk 0, 1, 2 or 3 image (@xref{disk_images}).
158

    
159
@item -cdrom file
160
Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and
161
@option{-cdrom} at the same time). You can use the host CD-ROM by
162
using @file{/dev/cdrom} as filename.
163

    
164
@item -boot [a|c|d]
165
Boot on floppy (a), hard disk (c) or CD-ROM (d). Hard disk boot is
166
the default.
167

    
168
@item -snapshot
169
Write to temporary files instead of disk image files. In this case,
170
the raw disk image you use is not written back. You can however force
171
the write back by pressing @key{C-a s} (@xref{disk_images}). 
172

    
173
@item -m megs
174
Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
175

    
176
@item -smp n
177
Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
178
CPUs are supported.
179

    
180
@item -nographic
181

    
182
Normally, QEMU uses SDL to display the VGA output. With this option,
183
you can totally disable graphical output so that QEMU is a simple
184
command line application. The emulated serial port is redirected on
185
the console. Therefore, you can still use QEMU to debug a Linux kernel
186
with a serial console.
187

    
188
@item -k language
189

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

    
195
The available layouts are:
196
@example
197
ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
198
da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
199
de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
200
@end example
201

    
202
The default is @code{en-us}.
203

    
204
@item -audio-help
205

    
206
Will show the audio subsystem help: list of drivers, tunable
207
parameters.
208

    
209
@item -soundhw card1,card2,... or -soundhw all
210

    
211
Enable audio and selected sound hardware. Use ? to print all
212
available sound hardware.
213

    
214
@example
215
qemu -soundhw sb16,adlib hda
216
qemu -soundhw es1370 hda
217
qemu -soundhw all hda
218
qemu -soundhw ?
219
@end example
220

    
221
@item -localtime
222
Set the real time clock to local time (the default is to UTC
223
time). This option is needed to have correct date in MS-DOS or
224
Windows.
225

    
226
@item -full-screen
227
Start in full screen.
228

    
229
@item -pidfile file
230
Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
231
from a script.
232

    
233
@item -win2k-hack
234
Use it when installing Windows 2000 to avoid a disk full bug. After
235
Windows 2000 is installed, you no longer need this option (this option
236
slows down the IDE transfers).
237

    
238
@end table
239

    
240
USB options:
241
@table @option
242

    
243
@item -usb
244
Enable the USB driver (will be the default soon)
245

    
246
@item -usbdevice devname
247
Add the USB device @var{devname}. See the monitor command
248
@code{usb_add} to have more information.
249
@end table
250

    
251
Network options:
252

    
253
@table @option
254

    
255
@item -net nic[,vlan=n][,macaddr=addr][,model=type]
256
Create a new Network Interface Card and connect it to VLAN @var{n} (@var{n}
257
= 0 is the default). The NIC is currently an NE2000 on the PC
258
target. Optionally, the MAC address can be changed. If no
259
@option{-net} option is specified, a single NIC is created.
260
Qemu can emulate several different models of network card.  Valid values for
261
@var{type} are @code{ne2k_pci}, @code{ne2k_isa}, @code{rtl8139},
262
@code{smc91c111} and @code{lance}.  Not all devices are supported on all
263
targets.
264

    
265
@item -net user[,vlan=n]
266
Use the user mode network stack which requires no administrator
267
priviledge to run.
268

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

    
276
@example
277
qemu linux.img -net nic -net tap
278
@end example
279

    
280
More complicated example (two NICs, each one connected to a TAP device)
281
@example
282
qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
283
               -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
284
@end example
285

    
286

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

    
289
Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual
290
machine using a TCP socket connection. If @option{listen} is
291
specified, QEMU waits for incoming connections on @var{port}
292
(@var{host} is optional). @option{connect} is used to connect to
293
another QEMU instance using the @option{listen} option. @option{fd=h}
294
specifies an already opened TCP socket.
295

    
296
Example:
297
@example
298
# launch a first QEMU instance
299
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,listen=:1234
300
# connect the VLAN 0 of this instance to the VLAN 0 of the first instance
301
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net socket,connect=127.0.0.1:1234
302
@end example
303

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

    
306
Create a VLAN @var{n} shared with another QEMU virtual
307
machines using a UDP multicast socket, effectively making a bus for 
308
every QEMU with same multicast address @var{maddr} and @var{port}.
309
NOTES:
310
@enumerate
311
@item 
312
Several QEMU can be running on different hosts and share same bus (assuming 
313
correct multicast setup for these hosts).
314
@item
315
mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see
316
@url{http://user-mode-linux.sf.net}.
317
@item Use @option{fd=h} to specify an already opened UDP multicast socket.
318
@end enumerate
319

    
320
Example:
321
@example
322
# launch one QEMU instance
323
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=230.0.0.1:1234
324
# launch another QEMU instance on same "bus"
325
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net socket,mcast=230.0.0.1:1234
326
# launch yet another QEMU instance on same "bus"
327
qemu linux.img -net nic,macaddr=52:54:00:12:34:58 -net socket,mcast=230.0.0.1:1234
328
@end example
329

    
330
Example (User Mode Linux compat.):
331
@example
332
# launch QEMU instance (note mcast address selected is UML's default)
333
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=239.192.168.1:1102
334
# launch UML
335
/path/to/linux ubd0=/path/to/root_fs eth0=mcast
336
@end example
337

    
338
@item -net none
339
Indicate that no network devices should be configured. It is used to
340
override the default configuration (@option{-net nic -net user}) which
341
is activated if no @option{-net} options are provided.
342

    
343
@item -tftp prefix
344
When using the user mode network stack, activate a built-in TFTP
345
server. All filenames beginning with @var{prefix} can be downloaded
346
from the host to the guest using a TFTP client. The TFTP client on the
347
guest must be configured in binary mode (use the command @code{bin} of
348
the Unix TFTP client). The host IP address on the guest is as usual
349
10.0.2.2.
350

    
351
@item -smb dir
352
When using the user mode network stack, activate a built-in SMB
353
server so that Windows OSes can access to the host files in @file{dir}
354
transparently.
355

    
356
In the guest Windows OS, the line:
357
@example
358
10.0.2.4 smbserver
359
@end example
360
must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
361
or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
362

    
363
Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
364

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

    
369
@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
370

    
371
When using the user mode network stack, redirect incoming TCP or UDP
372
connections to the host port @var{host-port} to the guest
373
@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
374
is not specified, its value is 10.0.2.15 (default address given by the
375
built-in DHCP server).
376

    
377
For example, to redirect host X11 connection from screen 1 to guest
378
screen 0, use the following:
379

    
380
@example
381
# on the host
382
qemu -redir tcp:6001::6000 [...]
383
# this host xterm should open in the guest X11 server
384
xterm -display :1
385
@end example
386

    
387
To redirect telnet connections from host port 5555 to telnet port on
388
the guest, use the following:
389

    
390
@example
391
# on the host
392
qemu -redir tcp:5555::23 [...]
393
telnet localhost 5555
394
@end example
395

    
396
Then when you use on the host @code{telnet localhost 5555}, you
397
connect to the guest telnet server.
398

    
399
@end table
400

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

    
405
@table @option
406

    
407
@item -kernel bzImage 
408
Use @var{bzImage} as kernel image.
409

    
410
@item -append cmdline 
411
Use @var{cmdline} as kernel command line
412

    
413
@item -initrd file
414
Use @var{file} as initial ram disk.
415

    
416
@end table
417

    
418
Debug/Expert options:
419
@table @option
420

    
421
@item -serial dev
422
Redirect the virtual serial port to host device @var{dev}. Available
423
devices are:
424
@table @code
425
@item vc
426
Virtual console
427
@item pty
428
[Linux only] Pseudo TTY (a new PTY is automatically allocated)
429
@item null
430
void device
431
@item /dev/XXX
432
[Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
433
parameters are set according to the emulated ones.
434
@item /dev/parportN
435
[Linux only, parallel port only] Use host parallel port
436
@var{N}. Currently only SPP parallel port features can be used.
437
@item file:filename
438
Write output to filename. No character can be read.
439
@item stdio
440
[Unix only] standard input/output
441
@item pipe:filename
442
[Unix only] name pipe @var{filename}
443
@end table
444
The default device is @code{vc} in graphical mode and @code{stdio} in
445
non graphical mode.
446

    
447
This option can be used several times to simulate up to 4 serials
448
ports.
449

    
450
@item -parallel dev
451
Redirect the virtual parallel port to host device @var{dev} (same
452
devices as the serial port). On Linux hosts, @file{/dev/parportN} can
453
be used to use hardware devices connected on the corresponding host
454
parallel port.
455

    
456
This option can be used several times to simulate up to 3 parallel
457
ports.
458

    
459
@item -monitor dev
460
Redirect the monitor to host device @var{dev} (same devices as the
461
serial port).
462
The default device is @code{vc} in graphical mode and @code{stdio} in
463
non graphical mode.
464

    
465
@item -s
466
Wait gdb connection to port 1234 (@xref{gdb_usage}). 
467
@item -p port
468
Change gdb connection port.
469
@item -S
470
Do not start CPU at startup (you must type 'c' in the monitor).
471
@item -d             
472
Output log in /tmp/qemu.log
473
@item -hdachs c,h,s,[,t]
474
Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
475
@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
476
translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
477
all thoses parameters. This option is useful for old MS-DOS disk
478
images.
479

    
480
@item -std-vga
481
Simulate a standard VGA card with Bochs VBE extensions (default is
482
Cirrus Logic GD5446 PCI VGA)
483
@item -loadvm file
484
Start right away with a saved state (@code{loadvm} in monitor)
485
@end table
486

    
487
@c man end
488

    
489
@section Keys
490

    
491
@c man begin OPTIONS
492

    
493
During the graphical emulation, you can use the following keys:
494
@table @key
495
@item Ctrl-Alt-f
496
Toggle full screen
497

    
498
@item Ctrl-Alt-n
499
Switch to virtual console 'n'. Standard console mappings are:
500
@table @emph
501
@item 1
502
Target system display
503
@item 2
504
Monitor
505
@item 3
506
Serial port
507
@end table
508

    
509
@item Ctrl-Alt
510
Toggle mouse and keyboard grab.
511
@end table
512

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

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

    
519
@table @key
520
@item Ctrl-a h
521
Print this help
522
@item Ctrl-a x    
523
Exit emulatior
524
@item Ctrl-a s    
525
Save disk data back to file (if -snapshot)
526
@item Ctrl-a b
527
Send break (magic sysrq in Linux)
528
@item Ctrl-a c
529
Switch between console and monitor
530
@item Ctrl-a Ctrl-a
531
Send Ctrl-a
532
@end table
533
@c man end
534

    
535
@ignore
536

    
537
@setfilename qemu 
538
@settitle QEMU System Emulator
539

    
540
@c man begin SEEALSO
541
The HTML documentation of QEMU for more precise information and Linux
542
user mode emulator invocation.
543
@c man end
544

    
545
@c man begin AUTHOR
546
Fabrice Bellard
547
@c man end
548

    
549
@end ignore
550

    
551
@end ignore
552

    
553
@section QEMU Monitor
554

    
555
The QEMU monitor is used to give complex commands to the QEMU
556
emulator. You can use it to:
557

    
558
@itemize @minus
559

    
560
@item
561
Remove or insert removable medias images
562
(such as CD-ROM or floppies)
563

    
564
@item 
565
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
566
from a disk file.
567

    
568
@item Inspect the VM state without an external debugger.
569

    
570
@end itemize
571

    
572
@subsection Commands
573

    
574
The following commands are available:
575

    
576
@table @option
577

    
578
@item help or ? [cmd]
579
Show the help for all commands or just for command @var{cmd}.
580

    
581
@item commit  
582
Commit changes to the disk images (if -snapshot is used)
583

    
584
@item info subcommand 
585
show various information about the system state
586

    
587
@table @option
588
@item info network
589
show the various VLANs and the associated devices
590
@item info block
591
show the block devices
592
@item info registers
593
show the cpu registers
594
@item info history
595
show the command line history
596
@item info pci
597
show emulated PCI device
598
@item info usb
599
show USB devices plugged on the virtual USB hub
600
@item info usbhost
601
show all USB host devices
602
@end table
603

    
604
@item q or quit
605
Quit the emulator.
606

    
607
@item eject [-f] device
608
Eject a removable media (use -f to force it).
609

    
610
@item change device filename
611
Change a removable media.
612

    
613
@item screendump filename
614
Save screen into PPM image @var{filename}.
615

    
616
@item log item1[,...]
617
Activate logging of the specified items to @file{/tmp/qemu.log}.
618

    
619
@item savevm filename
620
Save the whole virtual machine state to @var{filename}.
621

    
622
@item loadvm filename
623
Restore the whole virtual machine state from @var{filename}.
624

    
625
@item stop
626
Stop emulation.
627

    
628
@item c or cont
629
Resume emulation.
630

    
631
@item gdbserver [port]
632
Start gdbserver session (default port=1234)
633

    
634
@item x/fmt addr
635
Virtual memory dump starting at @var{addr}.
636

    
637
@item xp /fmt addr
638
Physical memory dump starting at @var{addr}.
639

    
640
@var{fmt} is a format which tells the command how to format the
641
data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
642

    
643
@table @var
644
@item count 
645
is the number of items to be dumped.
646

    
647
@item format
648
can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
649
c (char) or i (asm instruction).
650

    
651
@item size
652
can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
653
@code{h} or @code{w} can be specified with the @code{i} format to
654
respectively select 16 or 32 bit code instruction size.
655

    
656
@end table
657

    
658
Examples: 
659
@itemize
660
@item
661
Dump 10 instructions at the current instruction pointer:
662
@example 
663
(qemu) x/10i $eip
664
0x90107063:  ret
665
0x90107064:  sti
666
0x90107065:  lea    0x0(%esi,1),%esi
667
0x90107069:  lea    0x0(%edi,1),%edi
668
0x90107070:  ret
669
0x90107071:  jmp    0x90107080
670
0x90107073:  nop
671
0x90107074:  nop
672
0x90107075:  nop
673
0x90107076:  nop
674
@end example
675

    
676
@item
677
Dump 80 16 bit values at the start of the video memory.
678
@example 
679
(qemu) xp/80hx 0xb8000
680
0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
681
0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
682
0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
683
0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
684
0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
685
0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
686
0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
687
0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
688
0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
689
0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
690
@end example
691
@end itemize
692

    
693
@item p or print/fmt expr
694

    
695
Print expression value. Only the @var{format} part of @var{fmt} is
696
used.
697

    
698
@item sendkey keys
699

    
700
Send @var{keys} to the emulator. Use @code{-} to press several keys
701
simultaneously. Example:
702
@example
703
sendkey ctrl-alt-f1
704
@end example
705

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

    
709
@item system_reset
710

    
711
Reset the system.
712

    
713
@item usb_add devname
714

    
715
Plug the USB device devname to the QEMU virtual USB hub. @var{devname}
716
is either a virtual device name (for example @code{mouse}) or a host
717
USB device identifier. Host USB device identifiers have the following
718
syntax: @code{host:bus.addr} or @code{host:vendor_id:product_id}.
719

    
720
@item usb_del devname
721

    
722
Remove the USB device @var{devname} from the QEMU virtual USB
723
hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
724
command @code{info usb} to see the devices you can remove.
725

    
726
@end table
727

    
728
@subsection Integer expressions
729

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

    
734
@node disk_images
735
@section Disk Images
736

    
737
Since version 0.6.1, QEMU supports many disk image formats, including
738
growable disk images (their size increase as non empty sectors are
739
written), compressed and encrypted disk images.
740

    
741
@subsection Quick start for disk image creation
742

    
743
You can create a disk image with the command:
744
@example
745
qemu-img create myimage.img mysize
746
@end example
747
where @var{myimage.img} is the disk image filename and @var{mysize} is its
748
size in kilobytes. You can add an @code{M} suffix to give the size in
749
megabytes and a @code{G} suffix for gigabytes.
750

    
751
@xref{qemu_img_invocation} for more information.
752

    
753
@subsection Snapshot mode
754

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

    
761
@node qemu_img_invocation
762
@subsection @code{qemu-img} Invocation
763

    
764
@include qemu-img.texi
765

    
766
@subsection Virtual FAT disk images
767

    
768
QEMU can automatically create a virtual FAT disk image from a
769
directory tree. In order to use it, just type:
770

    
771
@example 
772
qemu linux.img -hdb fat:/my_directory
773
@end example
774

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

    
779
Floppies can be emulated with the @code{:floppy:} option:
780

    
781
@example 
782
qemu linux.img -fda fat:floppy:/my_directory
783
@end example
784

    
785
A read/write support is available for testing (beta stage) with the
786
@code{:rw:} option:
787

    
788
@example 
789
qemu linux.img -fda fat:floppy:rw:/my_directory
790
@end example
791

    
792
What you should @emph{never} do:
793
@itemize
794
@item use non-ASCII filenames ;
795
@item use "-snapshot" together with ":rw:" ;
796
@item expect it to work when loadvm'ing ;
797
@item write to the FAT directory on the host system while accessing it with the guest system.
798
@end itemize
799

    
800
@section Network emulation
801

    
802
QEMU can simulate several networks cards (NE2000 boards on the PC
803
target) and can connect them to an arbitrary number of Virtual Local
804
Area Networks (VLANs). Host TAP devices can be connected to any QEMU
805
VLAN. VLAN can be connected between separate instances of QEMU to
806
simulate large networks. For simpler usage, a non priviledged user mode
807
network stack can replace the TAP device to have a basic network
808
connection.
809

    
810
@subsection VLANs
811

    
812
QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
813
connection between several network devices. These devices can be for
814
example QEMU virtual Ethernet cards or virtual Host ethernet devices
815
(TAP devices).
816

    
817
@subsection Using TAP network interfaces
818

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

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

    
830
See @ref{direct_linux_boot} to have an example of network use with a
831
Linux distribution and @ref{sec_invocation} to have examples of
832
command lines using the TAP network interfaces.
833

    
834
@subsection Using the user mode network stack
835

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

    
841
@example
842

    
843
         QEMU VLAN      <------>  Firewall/DHCP server <-----> Internet
844
                           |          (10.0.2.2)
845
                           |
846
                           ---->  DNS server (10.0.2.3)
847
                           |     
848
                           ---->  SMB server (10.0.2.4)
849
@end example
850

    
851
The QEMU VM behaves as if it was behind a firewall which blocks all
852
incoming connections. You can use a DHCP client to automatically
853
configure the network in the QEMU VM. The DHCP server assign addresses
854
to the hosts starting from 10.0.2.15.
855

    
856
In order to check that the user mode network is working, you can ping
857
the address 10.0.2.2 and verify that you got an address in the range
858
10.0.2.x from the QEMU virtual DHCP server.
859

    
860
Note that @code{ping} is not supported reliably to the internet as it
861
would require root priviledges. It means you can only ping the local
862
router (10.0.2.2).
863

    
864
When using the built-in TFTP server, the router is also the TFTP
865
server.
866

    
867
When using the @option{-redir} option, TCP or UDP connections can be
868
redirected from the host to the guest. It allows for example to
869
redirect X11, telnet or SSH connections.
870

    
871
@subsection Connecting VLANs between QEMU instances
872

    
873
Using the @option{-net socket} option, it is possible to make VLANs
874
that span several QEMU instances. See @ref{sec_invocation} to have a
875
basic example.
876

    
877
@node direct_linux_boot
878
@section Direct Linux Boot
879

    
880
This section explains how to launch a Linux kernel inside QEMU without
881
having to make a full bootable image. It is very useful for fast Linux
882
kernel testing. The QEMU network configuration is also explained.
883

    
884
@enumerate
885
@item
886
Download the archive @file{linux-test-xxx.tar.gz} containing a Linux
887
kernel and a disk image. 
888

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

    
896
When network is enabled, there is a virtual network connection between
897
the host kernel and the emulated kernel. The emulated kernel is seen
898
from the host kernel at IP address 172.20.0.2 and the host kernel is
899
seen from the emulated kernel at IP address 172.20.0.1.
900

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

    
903
@example
904
> ./qemu.sh 
905
Connected to host network interface: tun0
906
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
907
BIOS-provided physical RAM map:
908
 BIOS-e801: 0000000000000000 - 000000000009f000 (usable)
909
 BIOS-e801: 0000000000100000 - 0000000002000000 (usable)
910
32MB LOWMEM available.
911
On node 0 totalpages: 8192
912
zone(0): 4096 pages.
913
zone(1): 4096 pages.
914
zone(2): 0 pages.
915
Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe console=ttyS0
916
ide_setup: ide2=noprobe
917
ide_setup: ide3=noprobe
918
ide_setup: ide4=noprobe
919
ide_setup: ide5=noprobe
920
Initializing CPU#0
921
Detected 2399.621 MHz processor.
922
Console: colour EGA 80x25
923
Calibrating delay loop... 4744.80 BogoMIPS
924
Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data, 64k init, 0k highmem)
925
Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
926
Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
927
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
928
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
929
Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
930
CPU: Intel Pentium Pro stepping 03
931
Checking 'hlt' instruction... OK.
932
POSIX conformance testing by UNIFIX
933
Linux NET4.0 for Linux 2.4
934
Based upon Swansea University Computer Society NET3.039
935
Initializing RT netlink socket
936
apm: BIOS not found.
937
Starting kswapd
938
Journalled Block Device driver loaded
939
Detected PS/2 Mouse Port.
940
pty: 256 Unix98 ptys configured
941
Serial driver version 5.05c (2001-07-08) with no serial options enabled
942
ttyS00 at 0x03f8 (irq = 4) is a 16450
943
ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
944
Last modified Nov 1, 2000 by Paul Gortmaker
945
NE*000 ethercard probe at 0x300: 52 54 00 12 34 56
946
eth0: NE2000 found at 0x300, using IRQ 9.
947
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
948
Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
949
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
950
hda: QEMU HARDDISK, ATA DISK drive
951
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
952
hda: attached ide-disk driver.
953
hda: 20480 sectors (10 MB) w/256KiB Cache, CHS=20/16/63
954
Partition check:
955
 hda:
956
Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996
957
NET4: Linux TCP/IP 1.0 for NET4.0
958
IP Protocols: ICMP, UDP, TCP, IGMP
959
IP: routing cache hash table of 512 buckets, 4Kbytes
960
TCP: Hash tables configured (established 2048 bind 4096)
961
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
962
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
963
VFS: Mounted root (ext2 filesystem).
964
Freeing unused kernel memory: 64k freed
965
 
966
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
967
 
968
QEMU Linux test distribution (based on Redhat 9)
969
 
970
Type 'exit' to halt the system
971
 
972
sh-2.05b# 
973
@end example
974

    
975
@item
976
Then you can play with the kernel inside the virtual serial console. You
977
can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help
978
about the keys you can type inside the virtual serial console. In
979
particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as
980
the Magic SysRq key.
981

    
982
@item 
983
If the network is enabled, launch the script @file{/etc/linuxrc} in the
984
emulator (don't forget the leading dot):
985
@example
986
. /etc/linuxrc
987
@end example
988

    
989
Then enable X11 connections on your PC from the emulated Linux: 
990
@example
991
xhost +172.20.0.2
992
@end example
993

    
994
You can now launch @file{xterm} or @file{xlogo} and verify that you have
995
a real Virtual Linux system !
996

    
997
@end enumerate
998

    
999
NOTES:
1000
@enumerate
1001
@item 
1002
A 2.5.74 kernel is also included in the archive. Just
1003
replace the bzImage in qemu.sh to try it.
1004

    
1005
@item 
1006
In order to exit cleanly from qemu, you can do a @emph{shutdown} inside
1007
qemu. qemu will automatically exit when the Linux shutdown is done.
1008

    
1009
@item 
1010
You can boot slightly faster by disabling the probe of non present IDE
1011
interfaces. To do so, add the following options on the kernel command
1012
line:
1013
@example
1014
ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
1015
@end example
1016

    
1017
@item 
1018
The example disk image is a modified version of the one made by Kevin
1019
Lawton for the plex86 Project (@url{www.plex86.org}).
1020

    
1021
@end enumerate
1022

    
1023
@section USB emulation
1024

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

    
1029
@subsection Using virtual USB devices
1030

    
1031
A virtual USB mouse device is available for testing in QEMU.
1032

    
1033
You can try it with the following monitor commands:
1034

    
1035
@example
1036
# add the mouse device
1037
(qemu) usb_add mouse 
1038

    
1039
# show the virtual USB devices plugged on the QEMU Virtual USB hub
1040
(qemu) info usb
1041
  Device 0.3, speed 12 Mb/s
1042

    
1043
# after some time you can try to remove the mouse
1044
(qemu) usb_del 0.3
1045
@end example
1046

    
1047
The option @option{-usbdevice} is similar to the monitor command
1048
@code{usb_add}.
1049

    
1050
@subsection Using host USB devices on a Linux host
1051

    
1052
WARNING: this is an experimental feature. QEMU will slow down when
1053
using it. USB devices requiring real time streaming (i.e. USB Video
1054
Cameras) are not supported yet.
1055

    
1056
@enumerate
1057
@item If you use an early Linux 2.4 kernel, verify that no Linux driver 
1058
is actually using the USB device. A simple way to do that is simply to
1059
disable the corresponding kernel module by renaming it from @file{mydriver.o}
1060
to @file{mydriver.o.disabled}.
1061

    
1062
@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1063
@example
1064
ls /proc/bus/usb
1065
001  devices  drivers
1066
@end example
1067

    
1068
@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:
1069
@example
1070
chown -R myuid /proc/bus/usb
1071
@end example
1072

    
1073
@item Launch QEMU and do in the monitor:
1074
@example 
1075
info usbhost
1076
  Device 1.2, speed 480 Mb/s
1077
    Class 00: USB device 1234:5678, USB DISK
1078
@end example
1079
You should see the list of the devices you can use (Never try to use
1080
hubs, it won't work).
1081

    
1082
@item Add the device in QEMU by using:
1083
@example 
1084
usb_add host:1234:5678
1085
@end example
1086

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

    
1090
@item Now you can try to use the host USB device in QEMU.
1091

    
1092
@end enumerate
1093

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

    
1097
@node gdb_usage
1098
@section GDB usage
1099

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

    
1103
In order to use gdb, launch qemu with the '-s' option. It will wait for a
1104
gdb connection:
1105
@example
1106
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1107
Connected to host network interface: tun0
1108
Waiting gdb connection on port 1234
1109
@end example
1110

    
1111
Then launch gdb on the 'vmlinux' executable:
1112
@example
1113
> gdb vmlinux
1114
@end example
1115

    
1116
In gdb, connect to QEMU:
1117
@example
1118
(gdb) target remote localhost:1234
1119
@end example
1120

    
1121
Then you can use gdb normally. For example, type 'c' to launch the kernel:
1122
@example
1123
(gdb) c
1124
@end example
1125

    
1126
Here are some useful tips in order to use gdb on system code:
1127

    
1128
@enumerate
1129
@item
1130
Use @code{info reg} to display all the CPU registers.
1131
@item
1132
Use @code{x/10i $eip} to display the code at the PC position.
1133
@item
1134
Use @code{set architecture i8086} to dump 16 bit code. Then use
1135
@code{x/10i $cs*16+*eip} to dump the code at the PC position.
1136
@end enumerate
1137

    
1138
@section Target OS specific information
1139

    
1140
@subsection Linux
1141

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

    
1146
When using a 2.6 guest Linux kernel, you should add the option
1147
@code{clock=pit} on the kernel command line because the 2.6 Linux
1148
kernels make very strict real time clock checks by default that QEMU
1149
cannot simulate exactly.
1150

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

    
1157
@subsection Windows
1158

    
1159
If you have a slow host, using Windows 95 is better as it gives the
1160
best speed. Windows 2000 is also a good choice.
1161

    
1162
@subsubsection SVGA graphic modes support
1163

    
1164
QEMU emulates a Cirrus Logic GD5446 Video
1165
card. All Windows versions starting from Windows 95 should recognize
1166
and use this graphic card. For optimal performances, use 16 bit color
1167
depth in the guest and the host OS.
1168

    
1169
@subsubsection CPU usage reduction
1170

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

    
1177
@subsubsection Windows 2000 disk full problem
1178

    
1179
Windows 2000 has a bug which gives a disk full problem during its
1180
installation. When installing it, use the @option{-win2k-hack} QEMU
1181
option to enable a specific workaround. After Windows 2000 is
1182
installed, you no longer need this option (this option slows down the
1183
IDE transfers).
1184

    
1185
@subsubsection Windows 2000 shutdown
1186

    
1187
Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1188
can. It comes from the fact that Windows 2000 does not automatically
1189
use the APM driver provided by the BIOS.
1190

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

    
1198
@subsubsection Share a directory between Unix and Windows
1199

    
1200
See @ref{sec_invocation} about the help of the option @option{-smb}.
1201

    
1202
@subsubsection Windows XP security problems
1203

    
1204
Some releases of Windows XP install correctly but give a security
1205
error when booting:
1206
@example
1207
A problem is preventing Windows from accurately checking the
1208
license for this computer. Error code: 0x800703e6.
1209
@end example
1210
The only known workaround is to boot in Safe mode
1211
without networking support. 
1212

    
1213
Future QEMU releases are likely to correct this bug.
1214

    
1215
@subsection MS-DOS and FreeDOS
1216

    
1217
@subsubsection CPU usage reduction
1218

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

    
1224
@chapter QEMU System emulator for non PC targets
1225

    
1226
QEMU is a generic emulator and it emulates many non PC
1227
machines. Most of the options are similar to the PC emulator. The
1228
differences are mentionned in the following sections.
1229

    
1230
@section QEMU PowerPC System emulator
1231

    
1232
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1233
or PowerMac PowerPC system.
1234

    
1235
QEMU emulates the following PowerMac peripherals:
1236

    
1237
@itemize @minus
1238
@item 
1239
UniNorth PCI Bridge 
1240
@item
1241
PCI VGA compatible card with VESA Bochs Extensions
1242
@item 
1243
2 PMAC IDE interfaces with hard disk and CD-ROM support
1244
@item 
1245
NE2000 PCI adapters
1246
@item
1247
Non Volatile RAM
1248
@item
1249
VIA-CUDA with ADB keyboard and mouse.
1250
@end itemize
1251

    
1252
QEMU emulates the following PREP peripherals:
1253

    
1254
@itemize @minus
1255
@item 
1256
PCI Bridge
1257
@item
1258
PCI VGA compatible card with VESA Bochs Extensions
1259
@item 
1260
2 IDE interfaces with hard disk and CD-ROM support
1261
@item
1262
Floppy disk
1263
@item 
1264
NE2000 network adapters
1265
@item
1266
Serial port
1267
@item
1268
PREP Non Volatile RAM
1269
@item
1270
PC compatible keyboard and mouse.
1271
@end itemize
1272

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

    
1276
@c man begin OPTIONS
1277

    
1278
The following options are specific to the PowerPC emulation:
1279

    
1280
@table @option
1281

    
1282
@item -g WxH[xDEPTH]  
1283

    
1284
Set the initial VGA graphic mode. The default is 800x600x15.
1285

    
1286
@end table
1287

    
1288
@c man end 
1289

    
1290

    
1291
More information is available at
1292
@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
1293

    
1294
@section Sparc32 System emulator invocation
1295

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

    
1299
QEMU emulates the following sun4m peripherals:
1300

    
1301
@itemize @minus
1302
@item
1303
IOMMU
1304
@item
1305
TCX Frame buffer
1306
@item 
1307
Lance (Am7990) Ethernet
1308
@item
1309
Non Volatile RAM M48T08
1310
@item
1311
Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1312
and power/reset logic
1313
@item
1314
ESP SCSI controller with hard disk and CD-ROM support
1315
@item
1316
Floppy drive
1317
@end itemize
1318

    
1319
The number of peripherals is fixed in the architecture.
1320

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

    
1325
A sample Linux 2.6 series kernel and ram disk image are available on
1326
the QEMU web site. Please note that currently neither Linux 2.4
1327
series, NetBSD, nor OpenBSD kernels work.
1328

    
1329
@c man begin OPTIONS
1330

    
1331
The following options are specific to the Sparc emulation:
1332

    
1333
@table @option
1334

    
1335
@item -g WxH
1336

    
1337
Set the initial TCX graphic mode. The default is 1024x768.
1338

    
1339
@end table
1340

    
1341
@c man end 
1342

    
1343
@section Sparc64 System emulator invocation
1344

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

    
1348
QEMU emulates the following sun4u peripherals:
1349

    
1350
@itemize @minus
1351
@item
1352
UltraSparc IIi APB PCI Bridge 
1353
@item
1354
PCI VGA compatible card with VESA Bochs Extensions
1355
@item
1356
Non Volatile RAM M48T59
1357
@item
1358
PC-compatible serial ports
1359
@end itemize
1360

    
1361
@section MIPS System emulator invocation
1362

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

    
1367
@itemize @minus
1368
@item 
1369
MIPS R4K CPU
1370
@item
1371
PC style serial port
1372
@item
1373
NE2000 network card
1374
@end itemize
1375

    
1376
More information is available in the QEMU mailing-list archive.
1377

    
1378
@section ARM System emulator invocation
1379

    
1380
Use the executable @file{qemu-system-arm} to simulate a ARM
1381
machine. The ARM Integrator/CP board is emulated with the following
1382
devices:
1383

    
1384
@itemize @minus
1385
@item
1386
ARM926E or ARM1026E CPU
1387
@item
1388
Two PL011 UARTs
1389
@item 
1390
SMC 91c111 Ethernet adapter
1391
@end itemize
1392

    
1393
A Linux 2.6 test image is available on the QEMU web site. More
1394
information is available in the QEMU mailing-list archive.
1395

    
1396
@chapter QEMU Linux User space emulator 
1397

    
1398
@section Quick Start
1399

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

    
1403
@itemize
1404

    
1405
@item On x86, you can just try to launch any process by using the native
1406
libraries:
1407

    
1408
@example 
1409
qemu-i386 -L / /bin/ls
1410
@end example
1411

    
1412
@code{-L /} tells that the x86 dynamic linker must be searched with a
1413
@file{/} prefix.
1414

    
1415
@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):
1416

    
1417
@example 
1418
qemu-i386 -L / qemu-i386 -L / /bin/ls
1419
@end example
1420

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

    
1425
@example
1426
unset LD_LIBRARY_PATH 
1427
@end example
1428

    
1429
Then you can launch the precompiled @file{ls} x86 executable:
1430

    
1431
@example
1432
qemu-i386 tests/i386/ls
1433
@end example
1434
You can look at @file{qemu-binfmt-conf.sh} so that
1435
QEMU is automatically launched by the Linux kernel when you try to
1436
launch x86 executables. It requires the @code{binfmt_misc} module in the
1437
Linux kernel.
1438

    
1439
@item The x86 version of QEMU is also included. You can try weird things such as:
1440
@example
1441
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1442
@end example
1443

    
1444
@end itemize
1445

    
1446
@section Wine launch
1447

    
1448
@itemize
1449

    
1450
@item Ensure that you have a working QEMU with the x86 glibc
1451
distribution (see previous section). In order to verify it, you must be
1452
able to do:
1453

    
1454
@example
1455
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1456
@end example
1457

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

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

    
1465
@item Then you can try the example @file{putty.exe}:
1466

    
1467
@example
1468
qemu-i386 /usr/local/qemu-i386/wine/bin/wine /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1469
@end example
1470

    
1471
@end itemize
1472

    
1473
@section Command line options
1474

    
1475
@example
1476
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1477
@end example
1478

    
1479
@table @option
1480
@item -h
1481
Print the help
1482
@item -L path   
1483
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1484
@item -s size
1485
Set the x86 stack size in bytes (default=524288)
1486
@end table
1487

    
1488
Debug options:
1489

    
1490
@table @option
1491
@item -d
1492
Activate log (logfile=/tmp/qemu.log)
1493
@item -p pagesize
1494
Act as if the host page size was 'pagesize' bytes
1495
@end table
1496

    
1497
@node compilation
1498
@chapter Compilation from the sources
1499

    
1500
@section Linux/Unix
1501

    
1502
@subsection Compilation
1503

    
1504
First you must decompress the sources:
1505
@example
1506
cd /tmp
1507
tar zxvf qemu-x.y.z.tar.gz
1508
cd qemu-x.y.z
1509
@end example
1510

    
1511
Then you configure QEMU and build it (usually no options are needed):
1512
@example
1513
./configure
1514
make
1515
@end example
1516

    
1517
Then type as root user:
1518
@example
1519
make install
1520
@end example
1521
to install QEMU in @file{/usr/local}.
1522

    
1523
@subsection Tested tool versions
1524

    
1525
In order to compile QEMU succesfully, it is very important that you
1526
have the right tools. The most important one is gcc. I cannot guaranty
1527
that QEMU works if you do not use a tested gcc version. Look at
1528
'configure' and 'Makefile' if you want to make a different gcc
1529
version work.
1530

    
1531
@example
1532
host      gcc      binutils      glibc    linux       distribution
1533
----------------------------------------------------------------------
1534
x86       3.2      2.13.2        2.1.3    2.4.18
1535
          2.96     2.11.93.0.2   2.2.5    2.4.18      Red Hat 7.3
1536
          3.2.2    2.13.90.0.18  2.3.2    2.4.20      Red Hat 9
1537

    
1538
PowerPC   3.3 [4]  2.13.90.0.18  2.3.1    2.4.20briq
1539
          3.2
1540

    
1541
Alpha     3.3 [1]  2.14.90.0.4   2.2.5    2.2.20 [2]  Debian 3.0
1542

    
1543
Sparc32   2.95.4   2.12.90.0.1   2.2.5    2.4.18      Debian 3.0
1544

    
1545
ARM       2.95.4   2.12.90.0.1   2.2.5    2.4.9 [3]   Debian 3.0
1546

    
1547
[1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
1548
    for gcc version >= 3.3.
1549
[2] Linux >= 2.4.20 is necessary for precise exception support
1550
    (untested).
1551
[3] 2.4.9-ac10-rmk2-np1-cerf2
1552

    
1553
[4] gcc 2.95.x generates invalid code when using too many register
1554
variables. You must use gcc 3.x on PowerPC.
1555
@end example
1556

    
1557
@section Windows
1558

    
1559
@itemize
1560
@item Install the current versions of MSYS and MinGW from
1561
@url{http://www.mingw.org/}. You can find detailed installation
1562
instructions in the download section and the FAQ.
1563

    
1564
@item Download 
1565
the MinGW development library of SDL 1.2.x
1566
(@file{SDL-devel-1.2.x-mingw32.tar.gz}) from
1567
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
1568
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1569
directory. Edit the @file{sdl-config} script so that it gives the
1570
correct SDL directory when invoked.
1571

    
1572
@item Extract the current version of QEMU.
1573
 
1574
@item Start the MSYS shell (file @file{msys.bat}).
1575

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

    
1580
@item You can install QEMU in @file{Program Files/Qemu} by typing 
1581
@file{make install}. Don't forget to copy @file{SDL.dll} in
1582
@file{Program Files/Qemu}.
1583

    
1584
@end itemize
1585

    
1586
@section Cross compilation for Windows with Linux
1587

    
1588
@itemize
1589
@item
1590
Install the MinGW cross compilation tools available at
1591
@url{http://www.mingw.org/}.
1592

    
1593
@item 
1594
Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1595
unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1596
variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1597
the QEMU configuration script.
1598

    
1599
@item 
1600
Configure QEMU for Windows cross compilation:
1601
@example
1602
./configure --enable-mingw32
1603
@end example
1604
If necessary, you can change the cross-prefix according to the prefix
1605
choosen for the MinGW tools with --cross-prefix. You can also use
1606
--prefix to set the Win32 install path.
1607

    
1608
@item You can install QEMU in the installation directory by typing 
1609
@file{make install}. Don't forget to copy @file{SDL.dll} in the
1610
installation directory. 
1611

    
1612
@end itemize
1613

    
1614
Note: Currently, Wine does not seem able to launch
1615
QEMU for Win32.
1616

    
1617
@section Mac OS X
1618

    
1619
The Mac OS X patches are not fully merged in QEMU, so you should look
1620
at the QEMU mailing list archive to have all the necessary
1621
information.
1622