Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 24236869

History | View | Annotate | Download (46.9 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 -vnc d
189

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

    
195
@item -k language
196

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

    
202
The available layouts are:
203
@example
204
ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
205
da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
206
de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
207
@end example
208

    
209
The default is @code{en-us}.
210

    
211
@item -audio-help
212

    
213
Will show the audio subsystem help: list of drivers, tunable
214
parameters.
215

    
216
@item -soundhw card1,card2,... or -soundhw all
217

    
218
Enable audio and selected sound hardware. Use ? to print all
219
available sound hardware.
220

    
221
@example
222
qemu -soundhw sb16,adlib hda
223
qemu -soundhw es1370 hda
224
qemu -soundhw all hda
225
qemu -soundhw ?
226
@end example
227

    
228
@item -localtime
229
Set the real time clock to local time (the default is to UTC
230
time). This option is needed to have correct date in MS-DOS or
231
Windows.
232

    
233
@item -full-screen
234
Start in full screen.
235

    
236
@item -pidfile file
237
Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
238
from a script.
239

    
240
@item -win2k-hack
241
Use it when installing Windows 2000 to avoid a disk full bug. After
242
Windows 2000 is installed, you no longer need this option (this option
243
slows down the IDE transfers).
244

    
245
@end table
246

    
247
USB options:
248
@table @option
249

    
250
@item -usb
251
Enable the USB driver (will be the default soon)
252

    
253
@item -usbdevice devname
254
Add the USB device @var{devname}. See the monitor command
255
@code{usb_add} to have more information.
256
@end table
257

    
258
Network options:
259

    
260
@table @option
261

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

    
272
@item -net user[,vlan=n][,hostname=name]
273
Use the user mode network stack which requires no administrator
274
priviledge to run.  @option{hostname=name} can be used to specify the client
275
hostname reported by the builtin DHCP server.
276

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

    
284
@example
285
qemu linux.img -net nic -net tap
286
@end example
287

    
288
More complicated example (two NICs, each one connected to a TAP device)
289
@example
290
qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
291
               -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
292
@end example
293

    
294

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

    
297
Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual
298
machine using a TCP socket connection. If @option{listen} is
299
specified, QEMU waits for incoming connections on @var{port}
300
(@var{host} is optional). @option{connect} is used to connect to
301
another QEMU instance using the @option{listen} option. @option{fd=h}
302
specifies an already opened TCP socket.
303

    
304
Example:
305
@example
306
# launch a first QEMU instance
307
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,listen=:1234
308
# connect the VLAN 0 of this instance to the VLAN 0 of the first instance
309
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net socket,connect=127.0.0.1:1234
310
@end example
311

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

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

    
328
Example:
329
@example
330
# launch one QEMU instance
331
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=230.0.0.1:1234
332
# launch another QEMU instance on same "bus"
333
qemu linux.img -net nic,macaddr=52:54:00:12:34:57 -net socket,mcast=230.0.0.1:1234
334
# launch yet another QEMU instance on same "bus"
335
qemu linux.img -net nic,macaddr=52:54:00:12:34:58 -net socket,mcast=230.0.0.1:1234
336
@end example
337

    
338
Example (User Mode Linux compat.):
339
@example
340
# launch QEMU instance (note mcast address selected is UML's default)
341
qemu linux.img -net nic,macaddr=52:54:00:12:34:56 -net socket,mcast=239.192.168.1:1102
342
# launch UML
343
/path/to/linux ubd0=/path/to/root_fs eth0=mcast
344
@end example
345

    
346
@item -net none
347
Indicate that no network devices should be configured. It is used to
348
override the default configuration (@option{-net nic -net user}) which
349
is activated if no @option{-net} options are provided.
350

    
351
@item -tftp prefix
352
When using the user mode network stack, activate a built-in TFTP
353
server. All filenames beginning with @var{prefix} can be downloaded
354
from the host to the guest using a TFTP client. The TFTP client on the
355
guest must be configured in binary mode (use the command @code{bin} of
356
the Unix TFTP client). The host IP address on the guest is as usual
357
10.0.2.2.
358

    
359
@item -smb dir
360
When using the user mode network stack, activate a built-in SMB
361
server so that Windows OSes can access to the host files in @file{dir}
362
transparently.
363

    
364
In the guest Windows OS, the line:
365
@example
366
10.0.2.4 smbserver
367
@end example
368
must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
369
or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
370

    
371
Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
372

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

    
377
@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
378

    
379
When using the user mode network stack, redirect incoming TCP or UDP
380
connections to the host port @var{host-port} to the guest
381
@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
382
is not specified, its value is 10.0.2.15 (default address given by the
383
built-in DHCP server).
384

    
385
For example, to redirect host X11 connection from screen 1 to guest
386
screen 0, use the following:
387

    
388
@example
389
# on the host
390
qemu -redir tcp:6001::6000 [...]
391
# this host xterm should open in the guest X11 server
392
xterm -display :1
393
@end example
394

    
395
To redirect telnet connections from host port 5555 to telnet port on
396
the guest, use the following:
397

    
398
@example
399
# on the host
400
qemu -redir tcp:5555::23 [...]
401
telnet localhost 5555
402
@end example
403

    
404
Then when you use on the host @code{telnet localhost 5555}, you
405
connect to the guest telnet server.
406

    
407
@end table
408

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

    
413
@table @option
414

    
415
@item -kernel bzImage 
416
Use @var{bzImage} as kernel image.
417

    
418
@item -append cmdline 
419
Use @var{cmdline} as kernel command line
420

    
421
@item -initrd file
422
Use @var{file} as initial ram disk.
423

    
424
@end table
425

    
426
Debug/Expert options:
427
@table @option
428

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

    
455
This option can be used several times to simulate up to 4 serials
456
ports.
457

    
458
@item -parallel dev
459
Redirect the virtual parallel port to host device @var{dev} (same
460
devices as the serial port). On Linux hosts, @file{/dev/parportN} can
461
be used to use hardware devices connected on the corresponding host
462
parallel port.
463

    
464
This option can be used several times to simulate up to 3 parallel
465
ports.
466

    
467
@item -monitor dev
468
Redirect the monitor to host device @var{dev} (same devices as the
469
serial port).
470
The default device is @code{vc} in graphical mode and @code{stdio} in
471
non graphical mode.
472

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

    
488
@item -std-vga
489
Simulate a standard VGA card with Bochs VBE extensions (default is
490
Cirrus Logic GD5446 PCI VGA)
491
@item -loadvm file
492
Start right away with a saved state (@code{loadvm} in monitor)
493
@end table
494

    
495
@c man end
496

    
497
@section Keys
498

    
499
@c man begin OPTIONS
500

    
501
During the graphical emulation, you can use the following keys:
502
@table @key
503
@item Ctrl-Alt-f
504
Toggle full screen
505

    
506
@item Ctrl-Alt-n
507
Switch to virtual console 'n'. Standard console mappings are:
508
@table @emph
509
@item 1
510
Target system display
511
@item 2
512
Monitor
513
@item 3
514
Serial port
515
@end table
516

    
517
@item Ctrl-Alt
518
Toggle mouse and keyboard grab.
519
@end table
520

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

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

    
527
@table @key
528
@item Ctrl-a h
529
Print this help
530
@item Ctrl-a x    
531
Exit emulatior
532
@item Ctrl-a s    
533
Save disk data back to file (if -snapshot)
534
@item Ctrl-a b
535
Send break (magic sysrq in Linux)
536
@item Ctrl-a c
537
Switch between console and monitor
538
@item Ctrl-a Ctrl-a
539
Send Ctrl-a
540
@end table
541
@c man end
542

    
543
@ignore
544

    
545
@setfilename qemu 
546
@settitle QEMU System Emulator
547

    
548
@c man begin SEEALSO
549
The HTML documentation of QEMU for more precise information and Linux
550
user mode emulator invocation.
551
@c man end
552

    
553
@c man begin AUTHOR
554
Fabrice Bellard
555
@c man end
556

    
557
@end ignore
558

    
559
@end ignore
560

    
561
@section QEMU Monitor
562

    
563
The QEMU monitor is used to give complex commands to the QEMU
564
emulator. You can use it to:
565

    
566
@itemize @minus
567

    
568
@item
569
Remove or insert removable medias images
570
(such as CD-ROM or floppies)
571

    
572
@item 
573
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
574
from a disk file.
575

    
576
@item Inspect the VM state without an external debugger.
577

    
578
@end itemize
579

    
580
@subsection Commands
581

    
582
The following commands are available:
583

    
584
@table @option
585

    
586
@item help or ? [cmd]
587
Show the help for all commands or just for command @var{cmd}.
588

    
589
@item commit  
590
Commit changes to the disk images (if -snapshot is used)
591

    
592
@item info subcommand 
593
show various information about the system state
594

    
595
@table @option
596
@item info network
597
show the various VLANs and the associated devices
598
@item info block
599
show the block devices
600
@item info registers
601
show the cpu registers
602
@item info history
603
show the command line history
604
@item info pci
605
show emulated PCI device
606
@item info usb
607
show USB devices plugged on the virtual USB hub
608
@item info usbhost
609
show all USB host devices
610
@end table
611

    
612
@item q or quit
613
Quit the emulator.
614

    
615
@item eject [-f] device
616
Eject a removable media (use -f to force it).
617

    
618
@item change device filename
619
Change a removable media.
620

    
621
@item screendump filename
622
Save screen into PPM image @var{filename}.
623

    
624
@item log item1[,...]
625
Activate logging of the specified items to @file{/tmp/qemu.log}.
626

    
627
@item savevm filename
628
Save the whole virtual machine state to @var{filename}.
629

    
630
@item loadvm filename
631
Restore the whole virtual machine state from @var{filename}.
632

    
633
@item stop
634
Stop emulation.
635

    
636
@item c or cont
637
Resume emulation.
638

    
639
@item gdbserver [port]
640
Start gdbserver session (default port=1234)
641

    
642
@item x/fmt addr
643
Virtual memory dump starting at @var{addr}.
644

    
645
@item xp /fmt addr
646
Physical memory dump starting at @var{addr}.
647

    
648
@var{fmt} is a format which tells the command how to format the
649
data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
650

    
651
@table @var
652
@item count 
653
is the number of items to be dumped.
654

    
655
@item format
656
can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
657
c (char) or i (asm instruction).
658

    
659
@item size
660
can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
661
@code{h} or @code{w} can be specified with the @code{i} format to
662
respectively select 16 or 32 bit code instruction size.
663

    
664
@end table
665

    
666
Examples: 
667
@itemize
668
@item
669
Dump 10 instructions at the current instruction pointer:
670
@example 
671
(qemu) x/10i $eip
672
0x90107063:  ret
673
0x90107064:  sti
674
0x90107065:  lea    0x0(%esi,1),%esi
675
0x90107069:  lea    0x0(%edi,1),%edi
676
0x90107070:  ret
677
0x90107071:  jmp    0x90107080
678
0x90107073:  nop
679
0x90107074:  nop
680
0x90107075:  nop
681
0x90107076:  nop
682
@end example
683

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

    
701
@item p or print/fmt expr
702

    
703
Print expression value. Only the @var{format} part of @var{fmt} is
704
used.
705

    
706
@item sendkey keys
707

    
708
Send @var{keys} to the emulator. Use @code{-} to press several keys
709
simultaneously. Example:
710
@example
711
sendkey ctrl-alt-f1
712
@end example
713

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

    
717
@item system_reset
718

    
719
Reset the system.
720

    
721
@item usb_add devname
722

    
723
Plug the USB device devname to the QEMU virtual USB hub. @var{devname}
724
is either a virtual device name (for example @code{mouse}) or a host
725
USB device identifier. Host USB device identifiers have the following
726
syntax: @code{host:bus.addr} or @code{host:vendor_id:product_id}.
727

    
728
@item usb_del devname
729

    
730
Remove the USB device @var{devname} from the QEMU virtual USB
731
hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
732
command @code{info usb} to see the devices you can remove.
733

    
734
@end table
735

    
736
@subsection Integer expressions
737

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

    
742
@node disk_images
743
@section Disk Images
744

    
745
Since version 0.6.1, QEMU supports many disk image formats, including
746
growable disk images (their size increase as non empty sectors are
747
written), compressed and encrypted disk images.
748

    
749
@subsection Quick start for disk image creation
750

    
751
You can create a disk image with the command:
752
@example
753
qemu-img create myimage.img mysize
754
@end example
755
where @var{myimage.img} is the disk image filename and @var{mysize} is its
756
size in kilobytes. You can add an @code{M} suffix to give the size in
757
megabytes and a @code{G} suffix for gigabytes.
758

    
759
@xref{qemu_img_invocation} for more information.
760

    
761
@subsection Snapshot mode
762

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

    
769
@node qemu_img_invocation
770
@subsection @code{qemu-img} Invocation
771

    
772
@include qemu-img.texi
773

    
774
@subsection Virtual FAT disk images
775

    
776
QEMU can automatically create a virtual FAT disk image from a
777
directory tree. In order to use it, just type:
778

    
779
@example 
780
qemu linux.img -hdb fat:/my_directory
781
@end example
782

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

    
787
Floppies can be emulated with the @code{:floppy:} option:
788

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

    
793
A read/write support is available for testing (beta stage) with the
794
@code{:rw:} option:
795

    
796
@example 
797
qemu linux.img -fda fat:floppy:rw:/my_directory
798
@end example
799

    
800
What you should @emph{never} do:
801
@itemize
802
@item use non-ASCII filenames ;
803
@item use "-snapshot" together with ":rw:" ;
804
@item expect it to work when loadvm'ing ;
805
@item write to the FAT directory on the host system while accessing it with the guest system.
806
@end itemize
807

    
808
@section Network emulation
809

    
810
QEMU can simulate several networks cards (NE2000 boards on the PC
811
target) and can connect them to an arbitrary number of Virtual Local
812
Area Networks (VLANs). Host TAP devices can be connected to any QEMU
813
VLAN. VLAN can be connected between separate instances of QEMU to
814
simulate large networks. For simpler usage, a non priviledged user mode
815
network stack can replace the TAP device to have a basic network
816
connection.
817

    
818
@subsection VLANs
819

    
820
QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
821
connection between several network devices. These devices can be for
822
example QEMU virtual Ethernet cards or virtual Host ethernet devices
823
(TAP devices).
824

    
825
@subsection Using TAP network interfaces
826

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

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

    
838
See @ref{direct_linux_boot} to have an example of network use with a
839
Linux distribution and @ref{sec_invocation} to have examples of
840
command lines using the TAP network interfaces.
841

    
842
@subsection Using the user mode network stack
843

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

    
849
@example
850

    
851
         QEMU VLAN      <------>  Firewall/DHCP server <-----> Internet
852
                           |          (10.0.2.2)
853
                           |
854
                           ---->  DNS server (10.0.2.3)
855
                           |     
856
                           ---->  SMB server (10.0.2.4)
857
@end example
858

    
859
The QEMU VM behaves as if it was behind a firewall which blocks all
860
incoming connections. You can use a DHCP client to automatically
861
configure the network in the QEMU VM. The DHCP server assign addresses
862
to the hosts starting from 10.0.2.15.
863

    
864
In order to check that the user mode network is working, you can ping
865
the address 10.0.2.2 and verify that you got an address in the range
866
10.0.2.x from the QEMU virtual DHCP server.
867

    
868
Note that @code{ping} is not supported reliably to the internet as it
869
would require root priviledges. It means you can only ping the local
870
router (10.0.2.2).
871

    
872
When using the built-in TFTP server, the router is also the TFTP
873
server.
874

    
875
When using the @option{-redir} option, TCP or UDP connections can be
876
redirected from the host to the guest. It allows for example to
877
redirect X11, telnet or SSH connections.
878

    
879
@subsection Connecting VLANs between QEMU instances
880

    
881
Using the @option{-net socket} option, it is possible to make VLANs
882
that span several QEMU instances. See @ref{sec_invocation} to have a
883
basic example.
884

    
885
@node direct_linux_boot
886
@section Direct Linux Boot
887

    
888
This section explains how to launch a Linux kernel inside QEMU without
889
having to make a full bootable image. It is very useful for fast Linux
890
kernel testing. The QEMU network configuration is also explained.
891

    
892
@enumerate
893
@item
894
Download the archive @file{linux-test-xxx.tar.gz} containing a Linux
895
kernel and a disk image. 
896

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

    
904
When network is enabled, there is a virtual network connection between
905
the host kernel and the emulated kernel. The emulated kernel is seen
906
from the host kernel at IP address 172.20.0.2 and the host kernel is
907
seen from the emulated kernel at IP address 172.20.0.1.
908

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

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

    
983
@item
984
Then you can play with the kernel inside the virtual serial console. You
985
can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help
986
about the keys you can type inside the virtual serial console. In
987
particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as
988
the Magic SysRq key.
989

    
990
@item 
991
If the network is enabled, launch the script @file{/etc/linuxrc} in the
992
emulator (don't forget the leading dot):
993
@example
994
. /etc/linuxrc
995
@end example
996

    
997
Then enable X11 connections on your PC from the emulated Linux: 
998
@example
999
xhost +172.20.0.2
1000
@end example
1001

    
1002
You can now launch @file{xterm} or @file{xlogo} and verify that you have
1003
a real Virtual Linux system !
1004

    
1005
@end enumerate
1006

    
1007
NOTES:
1008
@enumerate
1009
@item 
1010
A 2.5.74 kernel is also included in the archive. Just
1011
replace the bzImage in qemu.sh to try it.
1012

    
1013
@item 
1014
In order to exit cleanly from qemu, you can do a @emph{shutdown} inside
1015
qemu. qemu will automatically exit when the Linux shutdown is done.
1016

    
1017
@item 
1018
You can boot slightly faster by disabling the probe of non present IDE
1019
interfaces. To do so, add the following options on the kernel command
1020
line:
1021
@example
1022
ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
1023
@end example
1024

    
1025
@item 
1026
The example disk image is a modified version of the one made by Kevin
1027
Lawton for the plex86 Project (@url{www.plex86.org}).
1028

    
1029
@end enumerate
1030

    
1031
@section USB emulation
1032

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

    
1037
@subsection Using virtual USB devices
1038

    
1039
A virtual USB mouse device is available for testing in QEMU.
1040

    
1041
You can try it with the following monitor commands:
1042

    
1043
@example
1044
# add the mouse device
1045
(qemu) usb_add mouse 
1046

    
1047
# show the virtual USB devices plugged on the QEMU Virtual USB hub
1048
(qemu) info usb
1049
  Device 0.3, speed 12 Mb/s
1050

    
1051
# after some time you can try to remove the mouse
1052
(qemu) usb_del 0.3
1053
@end example
1054

    
1055
The option @option{-usbdevice} is similar to the monitor command
1056
@code{usb_add}.
1057

    
1058
@subsection Using host USB devices on a Linux host
1059

    
1060
WARNING: this is an experimental feature. QEMU will slow down when
1061
using it. USB devices requiring real time streaming (i.e. USB Video
1062
Cameras) are not supported yet.
1063

    
1064
@enumerate
1065
@item If you use an early Linux 2.4 kernel, verify that no Linux driver 
1066
is actually using the USB device. A simple way to do that is simply to
1067
disable the corresponding kernel module by renaming it from @file{mydriver.o}
1068
to @file{mydriver.o.disabled}.
1069

    
1070
@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1071
@example
1072
ls /proc/bus/usb
1073
001  devices  drivers
1074
@end example
1075

    
1076
@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:
1077
@example
1078
chown -R myuid /proc/bus/usb
1079
@end example
1080

    
1081
@item Launch QEMU and do in the monitor:
1082
@example 
1083
info usbhost
1084
  Device 1.2, speed 480 Mb/s
1085
    Class 00: USB device 1234:5678, USB DISK
1086
@end example
1087
You should see the list of the devices you can use (Never try to use
1088
hubs, it won't work).
1089

    
1090
@item Add the device in QEMU by using:
1091
@example 
1092
usb_add host:1234:5678
1093
@end example
1094

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

    
1098
@item Now you can try to use the host USB device in QEMU.
1099

    
1100
@end enumerate
1101

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

    
1105
@node gdb_usage
1106
@section GDB usage
1107

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

    
1111
In order to use gdb, launch qemu with the '-s' option. It will wait for a
1112
gdb connection:
1113
@example
1114
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
1115
Connected to host network interface: tun0
1116
Waiting gdb connection on port 1234
1117
@end example
1118

    
1119
Then launch gdb on the 'vmlinux' executable:
1120
@example
1121
> gdb vmlinux
1122
@end example
1123

    
1124
In gdb, connect to QEMU:
1125
@example
1126
(gdb) target remote localhost:1234
1127
@end example
1128

    
1129
Then you can use gdb normally. For example, type 'c' to launch the kernel:
1130
@example
1131
(gdb) c
1132
@end example
1133

    
1134
Here are some useful tips in order to use gdb on system code:
1135

    
1136
@enumerate
1137
@item
1138
Use @code{info reg} to display all the CPU registers.
1139
@item
1140
Use @code{x/10i $eip} to display the code at the PC position.
1141
@item
1142
Use @code{set architecture i8086} to dump 16 bit code. Then use
1143
@code{x/10i $cs*16+*eip} to dump the code at the PC position.
1144
@end enumerate
1145

    
1146
@section Target OS specific information
1147

    
1148
@subsection Linux
1149

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

    
1154
When using a 2.6 guest Linux kernel, you should add the option
1155
@code{clock=pit} on the kernel command line because the 2.6 Linux
1156
kernels make very strict real time clock checks by default that QEMU
1157
cannot simulate exactly.
1158

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

    
1165
@subsection Windows
1166

    
1167
If you have a slow host, using Windows 95 is better as it gives the
1168
best speed. Windows 2000 is also a good choice.
1169

    
1170
@subsubsection SVGA graphic modes support
1171

    
1172
QEMU emulates a Cirrus Logic GD5446 Video
1173
card. All Windows versions starting from Windows 95 should recognize
1174
and use this graphic card. For optimal performances, use 16 bit color
1175
depth in the guest and the host OS.
1176

    
1177
@subsubsection CPU usage reduction
1178

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

    
1185
@subsubsection Windows 2000 disk full problem
1186

    
1187
Windows 2000 has a bug which gives a disk full problem during its
1188
installation. When installing it, use the @option{-win2k-hack} QEMU
1189
option to enable a specific workaround. After Windows 2000 is
1190
installed, you no longer need this option (this option slows down the
1191
IDE transfers).
1192

    
1193
@subsubsection Windows 2000 shutdown
1194

    
1195
Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1196
can. It comes from the fact that Windows 2000 does not automatically
1197
use the APM driver provided by the BIOS.
1198

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

    
1206
@subsubsection Share a directory between Unix and Windows
1207

    
1208
See @ref{sec_invocation} about the help of the option @option{-smb}.
1209

    
1210
@subsubsection Windows XP security problems
1211

    
1212
Some releases of Windows XP install correctly but give a security
1213
error when booting:
1214
@example
1215
A problem is preventing Windows from accurately checking the
1216
license for this computer. Error code: 0x800703e6.
1217
@end example
1218
The only known workaround is to boot in Safe mode
1219
without networking support. 
1220

    
1221
Future QEMU releases are likely to correct this bug.
1222

    
1223
@subsection MS-DOS and FreeDOS
1224

    
1225
@subsubsection CPU usage reduction
1226

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

    
1232
@chapter QEMU System emulator for non PC targets
1233

    
1234
QEMU is a generic emulator and it emulates many non PC
1235
machines. Most of the options are similar to the PC emulator. The
1236
differences are mentionned in the following sections.
1237

    
1238
@section QEMU PowerPC System emulator
1239

    
1240
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1241
or PowerMac PowerPC system.
1242

    
1243
QEMU emulates the following PowerMac peripherals:
1244

    
1245
@itemize @minus
1246
@item 
1247
UniNorth PCI Bridge 
1248
@item
1249
PCI VGA compatible card with VESA Bochs Extensions
1250
@item 
1251
2 PMAC IDE interfaces with hard disk and CD-ROM support
1252
@item 
1253
NE2000 PCI adapters
1254
@item
1255
Non Volatile RAM
1256
@item
1257
VIA-CUDA with ADB keyboard and mouse.
1258
@end itemize
1259

    
1260
QEMU emulates the following PREP peripherals:
1261

    
1262
@itemize @minus
1263
@item 
1264
PCI Bridge
1265
@item
1266
PCI VGA compatible card with VESA Bochs Extensions
1267
@item 
1268
2 IDE interfaces with hard disk and CD-ROM support
1269
@item
1270
Floppy disk
1271
@item 
1272
NE2000 network adapters
1273
@item
1274
Serial port
1275
@item
1276
PREP Non Volatile RAM
1277
@item
1278
PC compatible keyboard and mouse.
1279
@end itemize
1280

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

    
1284
@c man begin OPTIONS
1285

    
1286
The following options are specific to the PowerPC emulation:
1287

    
1288
@table @option
1289

    
1290
@item -g WxH[xDEPTH]  
1291

    
1292
Set the initial VGA graphic mode. The default is 800x600x15.
1293

    
1294
@end table
1295

    
1296
@c man end 
1297

    
1298

    
1299
More information is available at
1300
@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
1301

    
1302
@section Sparc32 System emulator invocation
1303

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

    
1307
QEMU emulates the following sun4m peripherals:
1308

    
1309
@itemize @minus
1310
@item
1311
IOMMU
1312
@item
1313
TCX Frame buffer
1314
@item 
1315
Lance (Am7990) Ethernet
1316
@item
1317
Non Volatile RAM M48T08
1318
@item
1319
Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1320
and power/reset logic
1321
@item
1322
ESP SCSI controller with hard disk and CD-ROM support
1323
@item
1324
Floppy drive
1325
@end itemize
1326

    
1327
The number of peripherals is fixed in the architecture.
1328

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

    
1333
A sample Linux 2.6 series kernel and ram disk image are available on
1334
the QEMU web site. Please note that currently neither Linux 2.4
1335
series, NetBSD, nor OpenBSD kernels work.
1336

    
1337
@c man begin OPTIONS
1338

    
1339
The following options are specific to the Sparc emulation:
1340

    
1341
@table @option
1342

    
1343
@item -g WxH
1344

    
1345
Set the initial TCX graphic mode. The default is 1024x768.
1346

    
1347
@end table
1348

    
1349
@c man end 
1350

    
1351
@section Sparc64 System emulator invocation
1352

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

    
1356
QEMU emulates the following sun4u peripherals:
1357

    
1358
@itemize @minus
1359
@item
1360
UltraSparc IIi APB PCI Bridge 
1361
@item
1362
PCI VGA compatible card with VESA Bochs Extensions
1363
@item
1364
Non Volatile RAM M48T59
1365
@item
1366
PC-compatible serial ports
1367
@end itemize
1368

    
1369
@section MIPS System emulator invocation
1370

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

    
1375
@itemize @minus
1376
@item 
1377
MIPS R4K CPU
1378
@item
1379
PC style serial port
1380
@item
1381
NE2000 network card
1382
@end itemize
1383

    
1384
More information is available in the QEMU mailing-list archive.
1385

    
1386
@section ARM System emulator invocation
1387

    
1388
Use the executable @file{qemu-system-arm} to simulate a ARM
1389
machine. The ARM Integrator/CP board is emulated with the following
1390
devices:
1391

    
1392
@itemize @minus
1393
@item
1394
ARM926E or ARM1026E CPU
1395
@item
1396
Two PL011 UARTs
1397
@item 
1398
SMC 91c111 Ethernet adapter
1399
@end itemize
1400

    
1401
A Linux 2.6 test image is available on the QEMU web site. More
1402
information is available in the QEMU mailing-list archive.
1403

    
1404
@chapter QEMU Linux User space emulator 
1405

    
1406
@section Quick Start
1407

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

    
1411
@itemize
1412

    
1413
@item On x86, you can just try to launch any process by using the native
1414
libraries:
1415

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

    
1420
@code{-L /} tells that the x86 dynamic linker must be searched with a
1421
@file{/} prefix.
1422

    
1423
@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):
1424

    
1425
@example 
1426
qemu-i386 -L / qemu-i386 -L / /bin/ls
1427
@end example
1428

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

    
1433
@example
1434
unset LD_LIBRARY_PATH 
1435
@end example
1436

    
1437
Then you can launch the precompiled @file{ls} x86 executable:
1438

    
1439
@example
1440
qemu-i386 tests/i386/ls
1441
@end example
1442
You can look at @file{qemu-binfmt-conf.sh} so that
1443
QEMU is automatically launched by the Linux kernel when you try to
1444
launch x86 executables. It requires the @code{binfmt_misc} module in the
1445
Linux kernel.
1446

    
1447
@item The x86 version of QEMU is also included. You can try weird things such as:
1448
@example
1449
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1450
@end example
1451

    
1452
@end itemize
1453

    
1454
@section Wine launch
1455

    
1456
@itemize
1457

    
1458
@item Ensure that you have a working QEMU with the x86 glibc
1459
distribution (see previous section). In order to verify it, you must be
1460
able to do:
1461

    
1462
@example
1463
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1464
@end example
1465

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

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

    
1473
@item Then you can try the example @file{putty.exe}:
1474

    
1475
@example
1476
qemu-i386 /usr/local/qemu-i386/wine/bin/wine /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1477
@end example
1478

    
1479
@end itemize
1480

    
1481
@section Command line options
1482

    
1483
@example
1484
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1485
@end example
1486

    
1487
@table @option
1488
@item -h
1489
Print the help
1490
@item -L path   
1491
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1492
@item -s size
1493
Set the x86 stack size in bytes (default=524288)
1494
@end table
1495

    
1496
Debug options:
1497

    
1498
@table @option
1499
@item -d
1500
Activate log (logfile=/tmp/qemu.log)
1501
@item -p pagesize
1502
Act as if the host page size was 'pagesize' bytes
1503
@end table
1504

    
1505
@node compilation
1506
@chapter Compilation from the sources
1507

    
1508
@section Linux/Unix
1509

    
1510
@subsection Compilation
1511

    
1512
First you must decompress the sources:
1513
@example
1514
cd /tmp
1515
tar zxvf qemu-x.y.z.tar.gz
1516
cd qemu-x.y.z
1517
@end example
1518

    
1519
Then you configure QEMU and build it (usually no options are needed):
1520
@example
1521
./configure
1522
make
1523
@end example
1524

    
1525
Then type as root user:
1526
@example
1527
make install
1528
@end example
1529
to install QEMU in @file{/usr/local}.
1530

    
1531
@subsection Tested tool versions
1532

    
1533
In order to compile QEMU succesfully, it is very important that you
1534
have the right tools. The most important one is gcc. I cannot guaranty
1535
that QEMU works if you do not use a tested gcc version. Look at
1536
'configure' and 'Makefile' if you want to make a different gcc
1537
version work.
1538

    
1539
@example
1540
host      gcc      binutils      glibc    linux       distribution
1541
----------------------------------------------------------------------
1542
x86       3.2      2.13.2        2.1.3    2.4.18
1543
          2.96     2.11.93.0.2   2.2.5    2.4.18      Red Hat 7.3
1544
          3.2.2    2.13.90.0.18  2.3.2    2.4.20      Red Hat 9
1545

    
1546
PowerPC   3.3 [4]  2.13.90.0.18  2.3.1    2.4.20briq
1547
          3.2
1548

    
1549
Alpha     3.3 [1]  2.14.90.0.4   2.2.5    2.2.20 [2]  Debian 3.0
1550

    
1551
Sparc32   2.95.4   2.12.90.0.1   2.2.5    2.4.18      Debian 3.0
1552

    
1553
ARM       2.95.4   2.12.90.0.1   2.2.5    2.4.9 [3]   Debian 3.0
1554

    
1555
[1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
1556
    for gcc version >= 3.3.
1557
[2] Linux >= 2.4.20 is necessary for precise exception support
1558
    (untested).
1559
[3] 2.4.9-ac10-rmk2-np1-cerf2
1560

    
1561
[4] gcc 2.95.x generates invalid code when using too many register
1562
variables. You must use gcc 3.x on PowerPC.
1563
@end example
1564

    
1565
@section Windows
1566

    
1567
@itemize
1568
@item Install the current versions of MSYS and MinGW from
1569
@url{http://www.mingw.org/}. You can find detailed installation
1570
instructions in the download section and the FAQ.
1571

    
1572
@item Download 
1573
the MinGW development library of SDL 1.2.x
1574
(@file{SDL-devel-1.2.x-mingw32.tar.gz}) from
1575
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
1576
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1577
directory. Edit the @file{sdl-config} script so that it gives the
1578
correct SDL directory when invoked.
1579

    
1580
@item Extract the current version of QEMU.
1581
 
1582
@item Start the MSYS shell (file @file{msys.bat}).
1583

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

    
1588
@item You can install QEMU in @file{Program Files/Qemu} by typing 
1589
@file{make install}. Don't forget to copy @file{SDL.dll} in
1590
@file{Program Files/Qemu}.
1591

    
1592
@end itemize
1593

    
1594
@section Cross compilation for Windows with Linux
1595

    
1596
@itemize
1597
@item
1598
Install the MinGW cross compilation tools available at
1599
@url{http://www.mingw.org/}.
1600

    
1601
@item 
1602
Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1603
unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1604
variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1605
the QEMU configuration script.
1606

    
1607
@item 
1608
Configure QEMU for Windows cross compilation:
1609
@example
1610
./configure --enable-mingw32
1611
@end example
1612
If necessary, you can change the cross-prefix according to the prefix
1613
choosen for the MinGW tools with --cross-prefix. You can also use
1614
--prefix to set the Win32 install path.
1615

    
1616
@item You can install QEMU in the installation directory by typing 
1617
@file{make install}. Don't forget to copy @file{SDL.dll} in the
1618
installation directory. 
1619

    
1620
@end itemize
1621

    
1622
Note: Currently, Wine does not seem able to launch
1623
QEMU for Win32.
1624

    
1625
@section Mac OS X
1626

    
1627
The Mac OS X patches are not fully merged in QEMU, so you should look
1628
at the QEMU mailing list archive to have all the necessary
1629
information.
1630