Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 3475187d

History | View | Annotate | Download (35.3 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 a processor and various peripherals. It can
26
be used to launch different Operating Systems without rebooting the
27
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 processor)
43
@item PREP (PowerPC processor)
44
@item PowerMac (PowerPC processor, in progress)
45
@item Sun4m (32-bit Sparc processor)
46
@item Sun4u (64-bit Sparc processor, in progress)
47
@end itemize
48

    
49
For user emulation, x86, PowerPC, ARM, and Sparc32/64 CPUs are supported.
50

    
51
@chapter Installation
52

    
53
If you want to compile QEMU yourself, see @ref{compilation}.
54

    
55
@section Linux
56

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

    
60
@section Windows
61

    
62
Download the experimental binary installer at
63
@url{http://www.freeoszoo.org/download.php}.
64

    
65
@section Mac OS X
66

    
67
Download the experimental binary installer at
68
@url{http://www.freeoszoo.org/download.php}.
69

    
70
@chapter QEMU PC System emulator invocation
71

    
72
@section Introduction
73

    
74
@c man begin DESCRIPTION
75

    
76
The QEMU System emulator simulates the
77
following PC peripherals:
78

    
79
@itemize @minus
80
@item 
81
i440FX host PCI bridge and PIIX3 PCI to ISA bridge
82
@item
83
Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
84
extensions (hardware level, including all non standard modes).
85
@item
86
PS/2 mouse and keyboard
87
@item 
88
2 PCI IDE interfaces with hard disk and CD-ROM support
89
@item
90
Floppy disk
91
@item 
92
NE2000 PCI network adapters
93
@item
94
Serial ports
95
@item
96
Soundblaster 16 card
97
@end itemize
98

    
99
QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
100
VGA BIOS.
101

    
102
@c man end
103

    
104
@section Quick Start
105

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

    
108
@example
109
qemu linux.img
110
@end example
111

    
112
Linux should boot and give you a prompt.
113

    
114
@section Invocation
115

    
116
@example
117
@c man begin SYNOPSIS
118
usage: qemu [options] [disk_image]
119
@c man end
120
@end example
121

    
122
@c man begin OPTIONS
123
@var{disk_image} is a raw hard disk image for IDE hard disk 0.
124

    
125
General options:
126
@table @option
127
@item -fda file
128
@item -fdb file
129
Use @var{file} as floppy disk 0/1 image (@xref{disk_images}). You can
130
use the host floppy by using @file{/dev/fd0} as filename.
131

    
132
@item -hda file
133
@item -hdb file
134
@item -hdc file
135
@item -hdd file
136
Use @var{file} as hard disk 0, 1, 2 or 3 image (@xref{disk_images}).
137

    
138
@item -cdrom file
139
Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and
140
@option{-cdrom} at the same time). You can use the host CD-ROM by
141
using @file{/dev/cdrom} as filename.
142

    
143
@item -boot [a|c|d]
144
Boot on floppy (a), hard disk (c) or CD-ROM (d). Hard disk boot is
145
the default.
146

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

    
152
@item -m megs
153
Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
154

    
155
@item -nographic
156

    
157
Normally, QEMU uses SDL to display the VGA output. With this option,
158
you can totally disable graphical output so that QEMU is a simple
159
command line application. The emulated serial port is redirected on
160
the console. Therefore, you can still use QEMU to debug a Linux kernel
161
with a serial console.
162

    
163
@item -k language
164

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

    
170
The available layouts are:
171
@example
172
ar  de-ch  es  fo     fr-ca  hu  ja  mk     no  pt-br  sv
173
da  en-gb  et  fr     fr-ch  is  lt  nl     pl  ru     th
174
de  en-us  fi  fr-be  hr     it  lv  nl-be  pt  sl     tr
175
@end example
176

    
177
The default is @code{en-us}.
178

    
179
@item -enable-audio
180

    
181
The SB16 emulation is disabled by default as it may give problems with
182
Windows. You can enable it manually with this option.
183

    
184
@item -localtime
185
Set the real time clock to local time (the default is to UTC
186
time). This option is needed to have correct date in MS-DOS or
187
Windows.
188

    
189
@item -full-screen
190
Start in full screen.
191

    
192
@item -pidfile file
193
Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
194
from a script.
195

    
196
@end table
197

    
198
Network options:
199

    
200
@table @option
201

    
202
@item -n script      
203
Set TUN/TAP network init script [default=/etc/qemu-ifup]. This script
204
is launched to configure the host network interface (usually tun0)
205
corresponding to the virtual NE2000 card.
206

    
207
@item -nics n
208

    
209
Simulate @var{n} network cards (the default is 1).
210

    
211
@item -macaddr addr   
212

    
213
Set the mac address of the first interface (the format is
214
aa:bb:cc:dd:ee:ff in hexa). The mac address is incremented for each
215
new network interface.
216

    
217
@item -tun-fd fd
218
Assumes @var{fd} talks to a tap/tun host network interface and use
219
it. Read @url{http://bellard.org/qemu/tetrinet.html} to have an
220
example of its use.
221

    
222
@item -user-net 
223
Use the user mode network stack. This is the default if no tun/tap
224
network init script is found.
225

    
226
@item -tftp prefix
227
When using the user mode network stack, activate a built-in TFTP
228
server. All filenames beginning with @var{prefix} can be downloaded
229
from the host to the guest using a TFTP client. The TFTP client on the
230
guest must be configured in binary mode (use the command @code{bin} of
231
the Unix TFTP client). The host IP address on the guest is as usual
232
10.0.2.2.
233

    
234
@item -smb dir
235
When using the user mode network stack, activate a built-in SMB
236
server so that Windows OSes can access to the host files in @file{dir}
237
transparently.
238

    
239
In the guest Windows OS, the line:
240
@example
241
10.0.2.4 smbserver
242
@end example
243
must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
244
or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
245

    
246
Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
247

    
248
Note that a SAMBA server must be installed on the host OS in
249
@file{/usr/sbin/smbd}. QEMU was tested succesfully with smbd version
250
2.2.7a from the Red Hat 9.
251

    
252
@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
253

    
254
When using the user mode network stack, redirect incoming TCP or UDP
255
connections to the host port @var{host-port} to the guest
256
@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
257
is not specified, its value is 10.0.2.15 (default address given by the
258
built-in DHCP server).
259

    
260
For example, to redirect host X11 connection from screen 1 to guest
261
screen 0, use the following:
262

    
263
@example
264
# on the host
265
qemu -redir tcp:6001::6000 [...]
266
# this host xterm should open in the guest X11 server
267
xterm -display :1
268
@end example
269

    
270
To redirect telnet connections from host port 5555 to telnet port on
271
the guest, use the following:
272

    
273
@example
274
# on the host
275
qemu -redir tcp:5555::23 [...]
276
telnet localhost 5555
277
@end example
278

    
279
Then when you use on the host @code{telnet localhost 5555}, you
280
connect to the guest telnet server.
281

    
282
@item -dummy-net 
283
Use the dummy network stack: no packet will be received by the network
284
cards.
285

    
286
@end table
287

    
288
Linux boot specific. When using this options, you can use a given
289
Linux kernel without installing it in the disk image. It can be useful
290
for easier testing of various kernels.
291

    
292
@table @option
293

    
294
@item -kernel bzImage 
295
Use @var{bzImage} as kernel image.
296

    
297
@item -append cmdline 
298
Use @var{cmdline} as kernel command line
299

    
300
@item -initrd file
301
Use @var{file} as initial ram disk.
302

    
303
@end table
304

    
305
Debug/Expert options:
306
@table @option
307

    
308
@item -serial dev
309
Redirect the virtual serial port to host device @var{dev}. Available
310
devices are:
311
@table @code
312
@item vc
313
Virtual console
314
@item pty
315
[Linux only] Pseudo TTY (a new PTY is automatically allocated)
316
@item null
317
void device
318
@item stdio
319
[Unix only] standard input/output
320
@end table
321
The default device is @code{vc} in graphical mode and @code{stdio} in
322
non graphical mode.
323

    
324
This option can be used several times to simulate up to 4 serials
325
ports.
326

    
327
@item -monitor dev
328
Redirect the monitor to host device @var{dev} (same devices as the
329
serial port).
330
The default device is @code{vc} in graphical mode and @code{stdio} in
331
non graphical mode.
332

    
333
@item -s
334
Wait gdb connection to port 1234 (@xref{gdb_usage}). 
335
@item -p port
336
Change gdb connection port.
337
@item -S
338
Do not start CPU at startup (you must type 'c' in the monitor).
339
@item -d             
340
Output log in /tmp/qemu.log
341
@item -hdachs c,h,s,[,t]
342
Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
343
@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
344
translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
345
all thoses parameters. This option is useful for old MS-DOS disk
346
images.
347

    
348
@item -isa
349
Simulate an ISA-only system (default is PCI system).
350
@item -std-vga
351
Simulate a standard VGA card with Bochs VBE extensions (default is
352
Cirrus Logic GD5446 PCI VGA)
353
@item -loadvm file
354
Start right away with a saved state (@code{loadvm} in monitor)
355
@end table
356

    
357
@c man end
358

    
359
@section Keys
360

    
361
@c man begin OPTIONS
362

    
363
During the graphical emulation, you can use the following keys:
364
@table @key
365
@item Ctrl-Alt-f
366
Toggle full screen
367

    
368
@item Ctrl-Alt-n
369
Switch to virtual console 'n'. Standard console mappings are:
370
@table @emph
371
@item 1
372
Target system display
373
@item 2
374
Monitor
375
@item 3
376
Serial port
377
@end table
378

    
379
@item Ctrl-Alt
380
Toggle mouse and keyboard grab.
381
@end table
382

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

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

    
389
@table @key
390
@item Ctrl-a h
391
Print this help
392
@item Ctrl-a x    
393
Exit emulatior
394
@item Ctrl-a s    
395
Save disk data back to file (if -snapshot)
396
@item Ctrl-a b
397
Send break (magic sysrq in Linux)
398
@item Ctrl-a c
399
Switch between console and monitor
400
@item Ctrl-a Ctrl-a
401
Send Ctrl-a
402
@end table
403
@c man end
404

    
405
@ignore
406

    
407
@setfilename qemu 
408
@settitle QEMU System Emulator
409

    
410
@c man begin SEEALSO
411
The HTML documentation of QEMU for more precise information and Linux
412
user mode emulator invocation.
413
@c man end
414

    
415
@c man begin AUTHOR
416
Fabrice Bellard
417
@c man end
418

    
419
@end ignore
420

    
421
@end ignore
422

    
423
@section QEMU Monitor
424

    
425
The QEMU monitor is used to give complex commands to the QEMU
426
emulator. You can use it to:
427

    
428
@itemize @minus
429

    
430
@item
431
Remove or insert removable medias images
432
(such as CD-ROM or floppies)
433

    
434
@item 
435
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
436
from a disk file.
437

    
438
@item Inspect the VM state without an external debugger.
439

    
440
@end itemize
441

    
442
@subsection Commands
443

    
444
The following commands are available:
445

    
446
@table @option
447

    
448
@item help or ? [cmd]
449
Show the help for all commands or just for command @var{cmd}.
450

    
451
@item commit  
452
Commit changes to the disk images (if -snapshot is used)
453

    
454
@item info subcommand 
455
show various information about the system state
456

    
457
@table @option
458
@item info network
459
show the network state
460
@item info block
461
show the block devices
462
@item info registers
463
show the cpu registers
464
@item info history
465
show the command line history
466
@end table
467

    
468
@item q or quit
469
Quit the emulator.
470

    
471
@item eject [-f] device
472
Eject a removable media (use -f to force it).
473

    
474
@item change device filename
475
Change a removable media.
476

    
477
@item screendump filename
478
Save screen into PPM image @var{filename}.
479

    
480
@item log item1[,...]
481
Activate logging of the specified items to @file{/tmp/qemu.log}.
482

    
483
@item savevm filename
484
Save the whole virtual machine state to @var{filename}.
485

    
486
@item loadvm filename
487
Restore the whole virtual machine state from @var{filename}.
488

    
489
@item stop
490
Stop emulation.
491

    
492
@item c or cont
493
Resume emulation.
494

    
495
@item gdbserver [port]
496
Start gdbserver session (default port=1234)
497

    
498
@item x/fmt addr
499
Virtual memory dump starting at @var{addr}.
500

    
501
@item xp /fmt addr
502
Physical memory dump starting at @var{addr}.
503

    
504
@var{fmt} is a format which tells the command how to format the
505
data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
506

    
507
@table @var
508
@item count 
509
is the number of items to be dumped.
510

    
511
@item format
512
can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
513
c (char) or i (asm instruction).
514

    
515
@item size
516
can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
517
@code{h} or @code{w} can be specified with the @code{i} format to
518
respectively select 16 or 32 bit code instruction size.
519

    
520
@end table
521

    
522
Examples: 
523
@itemize
524
@item
525
Dump 10 instructions at the current instruction pointer:
526
@example 
527
(qemu) x/10i $eip
528
0x90107063:  ret
529
0x90107064:  sti
530
0x90107065:  lea    0x0(%esi,1),%esi
531
0x90107069:  lea    0x0(%edi,1),%edi
532
0x90107070:  ret
533
0x90107071:  jmp    0x90107080
534
0x90107073:  nop
535
0x90107074:  nop
536
0x90107075:  nop
537
0x90107076:  nop
538
@end example
539

    
540
@item
541
Dump 80 16 bit values at the start of the video memory.
542
@example 
543
(qemu) xp/80hx 0xb8000
544
0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
545
0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
546
0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
547
0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
548
0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
549
0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
550
0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
551
0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
552
0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
553
0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
554
@end example
555
@end itemize
556

    
557
@item p or print/fmt expr
558

    
559
Print expression value. Only the @var{format} part of @var{fmt} is
560
used.
561

    
562
@item sendkey keys
563

    
564
Send @var{keys} to the emulator. Use @code{-} to press several keys
565
simultaneously. Example:
566
@example
567
sendkey ctrl-alt-f1
568
@end example
569

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

    
573
@item system_reset
574

    
575
Reset the system.
576

    
577
@end table
578

    
579
@subsection Integer expressions
580

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

    
585
@node disk_images
586
@section Disk Images
587

    
588
Since version 0.6.1, QEMU supports many disk image formats, including
589
growable disk images (their size increase as non empty sectors are
590
written), compressed and encrypted disk images.
591

    
592
@subsection Quick start for disk image creation
593

    
594
You can create a disk image with the command:
595
@example
596
qemu-img create myimage.img mysize
597
@end example
598
where @var{myimage.img} is the disk image filename and @var{mysize} is its
599
size in kilobytes. You can add an @code{M} suffix to give the size in
600
megabytes and a @code{G} suffix for gigabytes.
601

    
602
@xref{qemu_img_invocation} for more information.
603

    
604
@subsection Snapshot mode
605

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

    
612
@node qemu_img_invocation
613
@subsection @code{qemu-img} Invocation
614

    
615
@include qemu-img.texi
616

    
617
@section Network emulation
618

    
619
QEMU simulates up to 6 networks cards (NE2000 boards). Each card can
620
be connected to a specific host network interface.
621

    
622
@subsection Using tun/tap network interface
623

    
624
This is the standard way to emulate network. QEMU adds a virtual
625
network device on your host (called @code{tun0}), and you can then
626
configure it as if it was a real ethernet card.
627

    
628
As an example, you can download the @file{linux-test-xxx.tar.gz}
629
archive and copy the script @file{qemu-ifup} in @file{/etc} and
630
configure properly @code{sudo} so that the command @code{ifconfig}
631
contained in @file{qemu-ifup} can be executed as root. You must verify
632
that your host kernel supports the TUN/TAP network interfaces: the
633
device @file{/dev/net/tun} must be present.
634

    
635
See @ref{direct_linux_boot} to have an example of network use with a
636
Linux distribution.
637

    
638
@subsection Using the user mode network stack
639

    
640
By using the option @option{-user-net} or if you have no tun/tap init
641
script, QEMU uses a completely user mode network stack (you don't need
642
root priviledge to use the virtual network). The virtual network
643
configuration is the following:
644

    
645
@example
646

    
647
QEMU Virtual Machine    <------>  Firewall/DHCP server <-----> Internet
648
     (10.0.2.x)            |          (10.0.2.2)
649
                           |
650
                           ---->  DNS server (10.0.2.3)
651
                           |     
652
                           ---->  SMB server (10.0.2.4)
653
@end example
654

    
655
The QEMU VM behaves as if it was behind a firewall which blocks all
656
incoming connections. You can use a DHCP client to automatically
657
configure the network in the QEMU VM.
658

    
659
In order to check that the user mode network is working, you can ping
660
the address 10.0.2.2 and verify that you got an address in the range
661
10.0.2.x from the QEMU virtual DHCP server.
662

    
663
Note that @code{ping} is not supported reliably to the internet as it
664
would require root priviledges. It means you can only ping the local
665
router (10.0.2.2).
666

    
667
When using the built-in TFTP server, the router is also the TFTP
668
server.
669

    
670
When using the @option{-redir} option, TCP or UDP connections can be
671
redirected from the host to the guest. It allows for example to
672
redirect X11, telnet or SSH connections.
673

    
674
@node direct_linux_boot
675
@section Direct Linux Boot
676

    
677
This section explains how to launch a Linux kernel inside QEMU without
678
having to make a full bootable image. It is very useful for fast Linux
679
kernel testing. The QEMU network configuration is also explained.
680

    
681
@enumerate
682
@item
683
Download the archive @file{linux-test-xxx.tar.gz} containing a Linux
684
kernel and a disk image. 
685

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

    
693
When network is enabled, there is a virtual network connection between
694
the host kernel and the emulated kernel. The emulated kernel is seen
695
from the host kernel at IP address 172.20.0.2 and the host kernel is
696
seen from the emulated kernel at IP address 172.20.0.1.
697

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

    
700
@example
701
> ./qemu.sh 
702
Connected to host network interface: tun0
703
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
704
BIOS-provided physical RAM map:
705
 BIOS-e801: 0000000000000000 - 000000000009f000 (usable)
706
 BIOS-e801: 0000000000100000 - 0000000002000000 (usable)
707
32MB LOWMEM available.
708
On node 0 totalpages: 8192
709
zone(0): 4096 pages.
710
zone(1): 4096 pages.
711
zone(2): 0 pages.
712
Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe console=ttyS0
713
ide_setup: ide2=noprobe
714
ide_setup: ide3=noprobe
715
ide_setup: ide4=noprobe
716
ide_setup: ide5=noprobe
717
Initializing CPU#0
718
Detected 2399.621 MHz processor.
719
Console: colour EGA 80x25
720
Calibrating delay loop... 4744.80 BogoMIPS
721
Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data, 64k init, 0k highmem)
722
Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
723
Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
724
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
725
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
726
Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
727
CPU: Intel Pentium Pro stepping 03
728
Checking 'hlt' instruction... OK.
729
POSIX conformance testing by UNIFIX
730
Linux NET4.0 for Linux 2.4
731
Based upon Swansea University Computer Society NET3.039
732
Initializing RT netlink socket
733
apm: BIOS not found.
734
Starting kswapd
735
Journalled Block Device driver loaded
736
Detected PS/2 Mouse Port.
737
pty: 256 Unix98 ptys configured
738
Serial driver version 5.05c (2001-07-08) with no serial options enabled
739
ttyS00 at 0x03f8 (irq = 4) is a 16450
740
ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
741
Last modified Nov 1, 2000 by Paul Gortmaker
742
NE*000 ethercard probe at 0x300: 52 54 00 12 34 56
743
eth0: NE2000 found at 0x300, using IRQ 9.
744
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
745
Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
746
ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
747
hda: QEMU HARDDISK, ATA DISK drive
748
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
749
hda: attached ide-disk driver.
750
hda: 20480 sectors (10 MB) w/256KiB Cache, CHS=20/16/63
751
Partition check:
752
 hda:
753
Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996
754
NET4: Linux TCP/IP 1.0 for NET4.0
755
IP Protocols: ICMP, UDP, TCP, IGMP
756
IP: routing cache hash table of 512 buckets, 4Kbytes
757
TCP: Hash tables configured (established 2048 bind 4096)
758
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
759
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
760
VFS: Mounted root (ext2 filesystem).
761
Freeing unused kernel memory: 64k freed
762
 
763
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
764
 
765
QEMU Linux test distribution (based on Redhat 9)
766
 
767
Type 'exit' to halt the system
768
 
769
sh-2.05b# 
770
@end example
771

    
772
@item
773
Then you can play with the kernel inside the virtual serial console. You
774
can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help
775
about the keys you can type inside the virtual serial console. In
776
particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as
777
the Magic SysRq key.
778

    
779
@item 
780
If the network is enabled, launch the script @file{/etc/linuxrc} in the
781
emulator (don't forget the leading dot):
782
@example
783
. /etc/linuxrc
784
@end example
785

    
786
Then enable X11 connections on your PC from the emulated Linux: 
787
@example
788
xhost +172.20.0.2
789
@end example
790

    
791
You can now launch @file{xterm} or @file{xlogo} and verify that you have
792
a real Virtual Linux system !
793

    
794
@end enumerate
795

    
796
NOTES:
797
@enumerate
798
@item 
799
A 2.5.74 kernel is also included in the archive. Just
800
replace the bzImage in qemu.sh to try it.
801

    
802
@item 
803
In order to exit cleanly from qemu, you can do a @emph{shutdown} inside
804
qemu. qemu will automatically exit when the Linux shutdown is done.
805

    
806
@item 
807
You can boot slightly faster by disabling the probe of non present IDE
808
interfaces. To do so, add the following options on the kernel command
809
line:
810
@example
811
ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
812
@end example
813

    
814
@item 
815
The example disk image is a modified version of the one made by Kevin
816
Lawton for the plex86 Project (@url{www.plex86.org}).
817

    
818
@end enumerate
819

    
820
@node gdb_usage
821
@section GDB usage
822

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

    
826
In order to use gdb, launch qemu with the '-s' option. It will wait for a
827
gdb connection:
828
@example
829
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
830
Connected to host network interface: tun0
831
Waiting gdb connection on port 1234
832
@end example
833

    
834
Then launch gdb on the 'vmlinux' executable:
835
@example
836
> gdb vmlinux
837
@end example
838

    
839
In gdb, connect to QEMU:
840
@example
841
(gdb) target remote localhost:1234
842
@end example
843

    
844
Then you can use gdb normally. For example, type 'c' to launch the kernel:
845
@example
846
(gdb) c
847
@end example
848

    
849
Here are some useful tips in order to use gdb on system code:
850

    
851
@enumerate
852
@item
853
Use @code{info reg} to display all the CPU registers.
854
@item
855
Use @code{x/10i $eip} to display the code at the PC position.
856
@item
857
Use @code{set architecture i8086} to dump 16 bit code. Then use
858
@code{x/10i $cs*16+*eip} to dump the code at the PC position.
859
@end enumerate
860

    
861
@section Target OS specific information
862

    
863
@subsection Linux
864

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

    
869
When using a 2.6 guest Linux kernel, you should add the option
870
@code{clock=pit} on the kernel command line because the 2.6 Linux
871
kernels make very strict real time clock checks by default that QEMU
872
cannot simulate exactly.
873

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

    
880
@subsection Windows
881

    
882
If you have a slow host, using Windows 95 is better as it gives the
883
best speed. Windows 2000 is also a good choice.
884

    
885
@subsubsection SVGA graphic modes support
886

    
887
QEMU emulates a Cirrus Logic GD5446 Video
888
card. All Windows versions starting from Windows 95 should recognize
889
and use this graphic card. For optimal performances, use 16 bit color
890
depth in the guest and the host OS.
891

    
892
@subsubsection CPU usage reduction
893

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

    
900
@subsubsection Windows 2000 disk full problems
901

    
902
Currently (release 0.6.0) QEMU has a bug which gives a @code{disk
903
full} error during installation of some releases of Windows 2000. The
904
workaround is to stop QEMU as soon as you notice that your disk image
905
size is growing too fast (monitor it with @code{ls -ls}). Then
906
relaunch QEMU to continue the installation. If you still experience
907
the problem, relaunch QEMU again.
908

    
909
Future QEMU releases are likely to correct this bug.
910

    
911
@subsubsection Windows XP security problems
912

    
913
Some releases of Windows XP install correctly but give a security
914
error when booting:
915
@example
916
A problem is preventing Windows from accurately checking the
917
license for this computer. Error code: 0x800703e6.
918
@end example
919
The only known workaround is to boot in Safe mode
920
without networking support. 
921

    
922
Future QEMU releases are likely to correct this bug.
923

    
924
@subsection MS-DOS and FreeDOS
925

    
926
@subsubsection CPU usage reduction
927

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

    
933
@chapter QEMU PowerPC System emulator invocation
934

    
935
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
936
or PowerMac PowerPC system.
937

    
938
QEMU emulates the following PowerMac peripherals:
939

    
940
@itemize @minus
941
@item 
942
UniNorth PCI Bridge 
943
@item
944
PCI VGA compatible card with VESA Bochs Extensions
945
@item 
946
2 PMAC IDE interfaces with hard disk and CD-ROM support
947
@item 
948
NE2000 PCI adapters
949
@item
950
Non Volatile RAM
951
@item
952
VIA-CUDA with ADB keyboard and mouse.
953
@end itemize
954

    
955
QEMU emulates the following PREP peripherals:
956

    
957
@itemize @minus
958
@item 
959
PCI Bridge
960
@item
961
PCI VGA compatible card with VESA Bochs Extensions
962
@item 
963
2 IDE interfaces with hard disk and CD-ROM support
964
@item
965
Floppy disk
966
@item 
967
NE2000 network adapters
968
@item
969
Serial port
970
@item
971
PREP Non Volatile RAM
972
@item
973
PC compatible keyboard and mouse.
974
@end itemize
975

    
976
QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
977
@url{http://site.voila.fr/jmayer/OpenHackWare/index.htm}.
978

    
979
You can read the qemu PC system emulation chapter to have more
980
informations about QEMU usage.
981

    
982
@c man begin OPTIONS
983

    
984
The following options are specific to the PowerPC emulation:
985

    
986
@table @option
987

    
988
@item -prep
989
Simulate a PREP system (default is PowerMAC)
990

    
991
@item -g WxH[xDEPTH]  
992

    
993
Set the initial VGA graphic mode. The default is 800x600x15.
994

    
995
@end table
996

    
997
@c man end 
998

    
999

    
1000
More information is available at
1001
@url{http://jocelyn.mayer.free.fr/qemu-ppc/}.
1002

    
1003
@chapter Sparc32 System emulator invocation
1004

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

    
1008
QEMU emulates the following sun4m peripherals:
1009

    
1010
@itemize @minus
1011
@item
1012
IOMMU
1013
@item
1014
TCX Frame buffer
1015
@item 
1016
Lance (Am7990) Ethernet
1017
@item
1018
Non Volatile RAM M48T08
1019
@item
1020
Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1021
and power/reset logic
1022
@item
1023
ESP SCSI controller with hard disk and CD-ROM support
1024
@item
1025
Floppy drive
1026
@end itemize
1027

    
1028
The number of peripherals is fixed in the architecture.
1029

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

    
1034
A sample Linux 2.6 series kernel and ram disk image are available on
1035
the QEMU web site. Please note that currently neither Linux 2.4
1036
series, NetBSD, nor OpenBSD kernels work.
1037

    
1038
@c man begin OPTIONS
1039

    
1040
The following options are specific to the Sparc emulation:
1041

    
1042
@table @option
1043

    
1044
@item -g WxH
1045

    
1046
Set the initial TCX graphic mode. The default is 1024x768.
1047

    
1048
@end table
1049

    
1050
@c man end 
1051

    
1052
@chapter Sparc64 System emulator invocation
1053

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

    
1057
@chapter QEMU User space emulator invocation
1058

    
1059
@section Quick Start
1060

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

    
1064
@itemize
1065

    
1066
@item On x86, you can just try to launch any process by using the native
1067
libraries:
1068

    
1069
@example 
1070
qemu-i386 -L / /bin/ls
1071
@end example
1072

    
1073
@code{-L /} tells that the x86 dynamic linker must be searched with a
1074
@file{/} prefix.
1075

    
1076
@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):
1077

    
1078
@example 
1079
qemu-i386 -L / qemu-i386 -L / /bin/ls
1080
@end example
1081

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

    
1086
@example
1087
unset LD_LIBRARY_PATH 
1088
@end example
1089

    
1090
Then you can launch the precompiled @file{ls} x86 executable:
1091

    
1092
@example
1093
qemu-i386 tests/i386/ls
1094
@end example
1095
You can look at @file{qemu-binfmt-conf.sh} so that
1096
QEMU is automatically launched by the Linux kernel when you try to
1097
launch x86 executables. It requires the @code{binfmt_misc} module in the
1098
Linux kernel.
1099

    
1100
@item The x86 version of QEMU is also included. You can try weird things such as:
1101
@example
1102
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1103
@end example
1104

    
1105
@end itemize
1106

    
1107
@section Wine launch
1108

    
1109
@itemize
1110

    
1111
@item Ensure that you have a working QEMU with the x86 glibc
1112
distribution (see previous section). In order to verify it, you must be
1113
able to do:
1114

    
1115
@example
1116
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1117
@end example
1118

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

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

    
1126
@item Then you can try the example @file{putty.exe}:
1127

    
1128
@example
1129
qemu-i386 /usr/local/qemu-i386/wine/bin/wine /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1130
@end example
1131

    
1132
@end itemize
1133

    
1134
@section Command line options
1135

    
1136
@example
1137
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1138
@end example
1139

    
1140
@table @option
1141
@item -h
1142
Print the help
1143
@item -L path   
1144
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1145
@item -s size
1146
Set the x86 stack size in bytes (default=524288)
1147
@end table
1148

    
1149
Debug options:
1150

    
1151
@table @option
1152
@item -d
1153
Activate log (logfile=/tmp/qemu.log)
1154
@item -p pagesize
1155
Act as if the host page size was 'pagesize' bytes
1156
@end table
1157

    
1158
@node compilation
1159
@chapter Compilation from the sources
1160

    
1161
@section Linux/Unix
1162

    
1163
@subsection Compilation
1164

    
1165
First you must decompress the sources:
1166
@example
1167
cd /tmp
1168
tar zxvf qemu-x.y.z.tar.gz
1169
cd qemu-x.y.z
1170
@end example
1171

    
1172
Then you configure QEMU and build it (usually no options are needed):
1173
@example
1174
./configure
1175
make
1176
@end example
1177

    
1178
Then type as root user:
1179
@example
1180
make install
1181
@end example
1182
to install QEMU in @file{/usr/local}.
1183

    
1184
@subsection Tested tool versions
1185

    
1186
In order to compile QEMU succesfully, it is very important that you
1187
have the right tools. The most important one is gcc. I cannot guaranty
1188
that QEMU works if you do not use a tested gcc version. Look at
1189
'configure' and 'Makefile' if you want to make a different gcc
1190
version work.
1191

    
1192
@example
1193
host      gcc      binutils      glibc    linux       distribution
1194
----------------------------------------------------------------------
1195
x86       3.2      2.13.2        2.1.3    2.4.18
1196
          2.96     2.11.93.0.2   2.2.5    2.4.18      Red Hat 7.3
1197
          3.2.2    2.13.90.0.18  2.3.2    2.4.20      Red Hat 9
1198

    
1199
PowerPC   3.3 [4]  2.13.90.0.18  2.3.1    2.4.20briq
1200
          3.2
1201

    
1202
Alpha     3.3 [1]  2.14.90.0.4   2.2.5    2.2.20 [2]  Debian 3.0
1203

    
1204
Sparc32   2.95.4   2.12.90.0.1   2.2.5    2.4.18      Debian 3.0
1205

    
1206
ARM       2.95.4   2.12.90.0.1   2.2.5    2.4.9 [3]   Debian 3.0
1207

    
1208
[1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
1209
    for gcc version >= 3.3.
1210
[2] Linux >= 2.4.20 is necessary for precise exception support
1211
    (untested).
1212
[3] 2.4.9-ac10-rmk2-np1-cerf2
1213

    
1214
[4] gcc 2.95.x generates invalid code when using too many register
1215
variables. You must use gcc 3.x on PowerPC.
1216
@end example
1217

    
1218
@section Windows
1219

    
1220
@itemize
1221
@item Install the current versions of MSYS and MinGW from
1222
@url{http://www.mingw.org/}. You can find detailed installation
1223
instructions in the download section and the FAQ.
1224

    
1225
@item Download 
1226
the MinGW development library of SDL 1.2.x
1227
(@file{SDL-devel-1.2.x-mingw32.tar.gz}) from
1228
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
1229
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1230
directory. Edit the @file{sdl-config} script so that it gives the
1231
correct SDL directory when invoked.
1232

    
1233
@item Extract the current version of QEMU.
1234
 
1235
@item Start the MSYS shell (file @file{msys.bat}).
1236

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

    
1241
@item You can install QEMU in @file{Program Files/Qemu} by typing 
1242
@file{make install}. Don't forget to copy @file{SDL.dll} in
1243
@file{Program Files/Qemu}.
1244

    
1245
@end itemize
1246

    
1247
@section Cross compilation for Windows with Linux
1248

    
1249
@itemize
1250
@item
1251
Install the MinGW cross compilation tools available at
1252
@url{http://www.mingw.org/}.
1253

    
1254
@item 
1255
Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1256
unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1257
variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1258
the QEMU configuration script.
1259

    
1260
@item 
1261
Configure QEMU for Windows cross compilation:
1262
@example
1263
./configure --enable-mingw32
1264
@end example
1265
If necessary, you can change the cross-prefix according to the prefix
1266
choosen for the MinGW tools with --cross-prefix. You can also use
1267
--prefix to set the Win32 install path.
1268

    
1269
@item You can install QEMU in the installation directory by typing 
1270
@file{make install}. Don't forget to copy @file{SDL.dll} in the
1271
installation directory. 
1272

    
1273
@end itemize
1274

    
1275
Note: Currently, Wine does not seem able to launch
1276
QEMU for Win32.
1277

    
1278
@section Mac OS X
1279

    
1280
The Mac OS X patches are not fully merged in QEMU, so you should look
1281
at the QEMU mailing list archive to have all the necessary
1282
information.
1283