Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 9bf05444

History | View | Annotate | Download (35.1 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 peripherials. 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
As QEMU requires no host kernel driver to run, it is very safe and
38
easy to use.
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
@end itemize
46

    
47
For user emulation, x86, PowerPC, ARM, and SPARC CPUs are supported.
48

    
49
@chapter Installation
50

    
51
If you want to compile QEMU yourself, see @ref{compilation}.
52

    
53
@section Linux
54

    
55
Download the binary distribution (@file{qemu-XXX-i386.tar.gz}) and
56
untar it as root in @file{/}:
57

    
58
@example
59
su
60
cd /
61
tar zxvf /tmp/qemu-XXX-i386.tar.gz
62
@end example
63

    
64
@section Windows
65

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

    
69
@section Mac OS X
70

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

    
74
@chapter QEMU PC System emulator invocation
75

    
76
@section Introduction
77

    
78
@c man begin DESCRIPTION
79

    
80
The QEMU System emulator simulates a complete PC.
81

    
82
In order to meet specific user needs, two versions of QEMU are
83
available:
84

    
85
@enumerate
86

    
87
@item 
88
@code{qemu-fast} uses the host Memory Management Unit (MMU) to
89
simulate the x86 MMU. It is @emph{fast} but has limitations because
90
the whole 4 GB address space cannot be used and some memory mapped
91
peripherials cannot be emulated accurately yet. Therefore, a specific
92
guest Linux kernel can be used (@xref{linux_compile}) as guest
93
OS. 
94

    
95
Moreover there is no separation between the host and target address
96
spaces, so it offers no security (the target OS can modify the
97
@code{qemu-fast} code by writing at the right addresses).
98

    
99
@item 
100
@code{qemu} uses a software MMU. It is about @emph{two times slower}
101
but gives a more accurate emulation and a complete separation between
102
the host and target address spaces.
103

    
104
@end enumerate
105

    
106
QEMU emulates the following PC peripherials:
107

    
108
@itemize @minus
109
@item 
110
i440FX host PCI bridge and PIIX3 PCI to ISA bridge
111
@item
112
Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
113
extensions (hardware level, including all non standard modes).
114
@item
115
PS/2 mouse and keyboard
116
@item 
117
2 PCI IDE interfaces with hard disk and CD-ROM support
118
@item
119
Floppy disk
120
@item 
121
NE2000 PCI network adapters
122
@item
123
Serial ports
124
@item
125
Soundblaster 16 card
126
@end itemize
127

    
128
QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
129
VGA BIOS.
130

    
131
@c man end
132

    
133
@section Quick Start
134

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

    
137
@example
138
qemu linux.img
139
@end example
140

    
141
Linux should boot and give you a prompt.
142

    
143
@section Invocation
144

    
145
@example
146
@c man begin SYNOPSIS
147
usage: qemu [options] [disk_image]
148
@c man end
149
@end example
150

    
151
@c man begin OPTIONS
152
@var{disk_image} is a raw hard disk image for IDE hard disk 0.
153

    
154
General options:
155
@table @option
156
@item -fda file
157
@item -fdb file
158
Use @var{file} as floppy disk 0/1 image (@xref{disk_images}). You can
159
use the host floppy by using @file{/dev/fd0} as filename.
160

    
161
@item -hda file
162
@item -hdb file
163
@item -hdc file
164
@item -hdd file
165
Use @var{file} as hard disk 0, 1, 2 or 3 image (@xref{disk_images}).
166

    
167
@item -cdrom file
168
Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and
169
@option{-cdrom} at the same time). You can use the host CD-ROM by
170
using @file{/dev/cdrom} as filename.
171

    
172
@item -boot [a|c|d]
173
Boot on floppy (a), hard disk (c) or CD-ROM (d). Hard disk boot is
174
the default.
175

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

    
181
@item -m megs
182
Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
183

    
184
@item -initrd file
185
Use @var{file} as initial ram disk.
186

    
187
@item -nographic
188

    
189
Normally, QEMU uses SDL to display the VGA output. With this option,
190
you can totally disable graphical output so that QEMU is a simple
191
command line application. The emulated serial port is redirected on
192
the console. Therefore, you can still use QEMU to debug a Linux kernel
193
with a serial console.
194

    
195
@item -enable-audio
196

    
197
The SB16 emulation is disabled by default as it may give problems with
198
Windows. You can enable it manually with this option.
199

    
200
@item -localtime
201
Set the real time clock to local time (the default is to UTC
202
time). This option is needed to have correct date in MS-DOS or
203
Windows.
204

    
205
@end table
206

    
207
Network options:
208

    
209
@table @option
210

    
211
@item -n script      
212
Set TUN/TAP network init script [default=/etc/qemu-ifup]. This script
213
is launched to configure the host network interface (usually tun0)
214
corresponding to the virtual NE2000 card.
215

    
216
@item -macaddr addr   
217

    
218
Set the mac address of the first interface (the format is
219
aa:bb:cc:dd:ee:ff in hexa). The mac address is incremented for each
220
new network interface.
221

    
222
@item -tun-fd fd
223
Assumes @var{fd} talks to a tap/tun host network interface and use
224
it. Read @url{http://bellard.org/qemu/tetrinet.html} to have an
225
example of its use.
226

    
227
@item -user-net 
228
Use the user mode network stack. This is the default if no tun/tap
229
network init script is found.
230

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

    
239
@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
240

    
241
When using the user mode network stack, redirect incoming TCP or UDP
242
connections to the host port @var{host-port} to the guest
243
@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
244
is not specified, its value is 10.0.2.15 (default address given by the
245
built-in DHCP server).
246

    
247
For example, to redirect host X11 connection from screen 1 to guest
248
screen 0, use the following:
249

    
250
@example
251
# on the host
252
qemu -redir tcp:6001::6000 [...]
253
# this host xterm should open in the guest X11 server
254
xterm -display :1
255
@end example
256

    
257
To redirect telnet connections from host port 5555 to telnet port on
258
the guest, use the following:
259

    
260
@example
261
# on the host
262
qemu -redir tcp:5555::23 [...]
263
telnet localhost 5555
264
@end example
265

    
266
Then when you use on the host @code{telnet localhost 5555}, you
267
connect to the guest telnet server.
268

    
269
@item -dummy-net 
270
Use the dummy network stack: no packet will be received by the network
271
cards.
272

    
273
@end table
274

    
275
Linux boot specific. When using this options, you can use a given
276
Linux kernel without installing it in the disk image. It can be useful
277
for easier testing of various kernels.
278

    
279
@table @option
280

    
281
@item -kernel bzImage 
282
Use @var{bzImage} as kernel image.
283

    
284
@item -append cmdline 
285
Use @var{cmdline} as kernel command line
286

    
287
@item -initrd file
288
Use @var{file} as initial ram disk.
289

    
290
@end table
291

    
292
Debug/Expert options:
293
@table @option
294

    
295
@item -serial dev
296
Redirect the virtual serial port to host device @var{dev}. Available
297
devices are:
298
@table @code
299
@item vc
300
Virtual console
301
@item pty
302
[Linux only] Pseudo TTY (a new PTY is automatically allocated)
303
@item null
304
void device
305
@item stdio
306
[Unix only] standard input/output
307
@end table
308
The default device is @code{vc} in graphical mode and @code{stdio} in
309
non graphical mode.
310

    
311
This option can be used several times to simulate up to 4 serials
312
ports.
313

    
314
@item -monitor dev
315
Redirect the monitor to host device @var{dev} (same devices as the
316
serial port).
317
The default device is @code{vc} in graphical mode and @code{stdio} in
318
non graphical mode.
319

    
320
@item -s
321
Wait gdb connection to port 1234 (@xref{gdb_usage}). 
322
@item -p port
323
Change gdb connection port.
324
@item -S
325
Do not start CPU at startup (you must type 'c' in the monitor).
326
@item -d             
327
Output log in /tmp/qemu.log
328
@item -isa
329
Simulate an ISA-only system (default is PCI system).
330
@item -std-vga
331
Simulate a standard VGA card with Bochs VBE extensions (default is
332
Cirrus Logic GD5446 PCI VGA)
333

    
334
@end table
335

    
336
@c man end
337

    
338
@section Keys
339

    
340
@c man begin OPTIONS
341

    
342
During the graphical emulation, you can use the following keys:
343
@table @key
344
@item Ctrl-Shift-f
345
Toggle full screen
346

    
347
@item Ctrl-Shift-Fn
348
Switch to virtual console 'n'. Standard console mappings are:
349
@table @emph
350
@item 1
351
Target system display
352
@item 2
353
Monitor
354
@item 3
355
Serial port
356
@end table
357

    
358
@item Ctrl-Shift
359
Toggle mouse and keyboard grab.
360
@end table
361

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

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

    
368
@table @key
369
@item Ctrl-a h
370
Print this help
371
@item Ctrl-a x    
372
Exit emulatior
373
@item Ctrl-a s    
374
Save disk data back to file (if -snapshot)
375
@item Ctrl-a b
376
Send break (magic sysrq in Linux)
377
@item Ctrl-a c
378
Switch between console and monitor
379
@item Ctrl-a Ctrl-a
380
Send Ctrl-a
381
@end table
382
@c man end
383

    
384
@ignore
385

    
386
@setfilename qemu 
387
@settitle QEMU System Emulator
388

    
389
@c man begin SEEALSO
390
The HTML documentation of QEMU for more precise information and Linux
391
user mode emulator invocation.
392
@c man end
393

    
394
@c man begin AUTHOR
395
Fabrice Bellard
396
@c man end
397

    
398
@end ignore
399

    
400
@end ignore
401

    
402

    
403
@section QEMU Monitor
404

    
405
The QEMU monitor is used to give complex commands to the QEMU
406
emulator. You can use it to:
407

    
408
@itemize @minus
409

    
410
@item
411
Remove or insert removable medias images
412
(such as CD-ROM or floppies)
413

    
414
@item 
415
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
416
from a disk file.
417

    
418
@item Inspect the VM state without an external debugger.
419

    
420
@end itemize
421

    
422
@subsection Commands
423

    
424
The following commands are available:
425

    
426
@table @option
427

    
428
@item help or ? [cmd]
429
Show the help for all commands or just for command @var{cmd}.
430

    
431
@item commit  
432
Commit changes to the disk images (if -snapshot is used)
433

    
434
@item info subcommand 
435
show various information about the system state
436

    
437
@table @option
438
@item info network
439
show the network state
440
@item info block
441
show the block devices
442
@item info registers
443
show the cpu registers
444
@item info history
445
show the command line history
446
@end table
447

    
448
@item q or quit
449
Quit the emulator.
450

    
451
@item eject [-f] device
452
Eject a removable media (use -f to force it).
453

    
454
@item change device filename
455
Change a removable media.
456

    
457
@item screendump filename
458
Save screen into PPM image @var{filename}.
459

    
460
@item log item1[,...]
461
Activate logging of the specified items to @file{/tmp/qemu.log}.
462

    
463
@item savevm filename
464
Save the whole virtual machine state to @var{filename}.
465

    
466
@item loadvm filename
467
Restore the whole virtual machine state from @var{filename}.
468

    
469
@item stop
470
Stop emulation.
471

    
472
@item c or cont
473
Resume emulation.
474

    
475
@item gdbserver [port]
476
Start gdbserver session (default port=1234)
477

    
478
@item x/fmt addr
479
Virtual memory dump starting at @var{addr}.
480

    
481
@item xp /fmt addr
482
Physical memory dump starting at @var{addr}.
483

    
484
@var{fmt} is a format which tells the command how to format the
485
data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
486

    
487
@table @var
488
@item count 
489
is the number of items to be dumped.
490

    
491
@item format
492
can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
493
c (char) or i (asm instruction).
494

    
495
@item size
496
can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
497
@code{h} or @code{w} can be specified with the @code{i} format to
498
respectively select 16 or 32 bit code instruction size.
499

    
500
@end table
501

    
502
Examples: 
503
@itemize
504
@item
505
Dump 10 instructions at the current instruction pointer:
506
@example 
507
(qemu) x/10i $eip
508
0x90107063:  ret
509
0x90107064:  sti
510
0x90107065:  lea    0x0(%esi,1),%esi
511
0x90107069:  lea    0x0(%edi,1),%edi
512
0x90107070:  ret
513
0x90107071:  jmp    0x90107080
514
0x90107073:  nop
515
0x90107074:  nop
516
0x90107075:  nop
517
0x90107076:  nop
518
@end example
519

    
520
@item
521
Dump 80 16 bit values at the start of the video memory.
522
@example 
523
(qemu) xp/80hx 0xb8000
524
0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
525
0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
526
0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
527
0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
528
0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
529
0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
530
0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
531
0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
532
0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
533
0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
534
@end example
535
@end itemize
536

    
537
@item p or print/fmt expr
538

    
539
Print expression value. Only the @var{format} part of @var{fmt} is
540
used.
541

    
542
@item sendkey keys
543

    
544
Send @var{keys} to the emulator. Use @code{-} to press several keys
545
simultaneously. Example:
546
@example
547
sendkey ctrl-alt-f1
548
@end example
549

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

    
553
@item system_reset
554

    
555
Reset the system.
556

    
557
@end table
558

    
559
@subsection Integer expressions
560

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

    
565
@node disk_images
566
@section Disk Images
567

    
568
@subsection Raw disk images
569

    
570
The disk images can simply be raw images of the hard disk. You can
571
create them with the command:
572
@example
573
dd of=myimage bs=1024 seek=mysize count=0
574
@end example
575
where @var{myimage} is the image filename and @var{mysize} is its size
576
in kilobytes.
577

    
578
@subsection Snapshot mode
579

    
580
If you use the option @option{-snapshot}, all disk images are
581
considered as read only. When sectors in written, they are written in
582
a temporary file created in @file{/tmp}. You can however force the
583
write back to the raw disk images by pressing @key{C-a s}.
584

    
585
NOTE: The snapshot mode only works with raw disk images.
586

    
587
@subsection Copy On Write disk images
588

    
589
QEMU also supports user mode Linux
590
(@url{http://user-mode-linux.sourceforge.net/}) Copy On Write (COW)
591
disk images. The COW disk images are much smaller than normal images
592
as they store only modified sectors. They also permit the use of the
593
same disk image template for many users.
594

    
595
To create a COW disk images, use the command:
596

    
597
@example
598
qemu-mkcow -f myrawimage.bin mycowimage.cow
599
@end example
600

    
601
@file{myrawimage.bin} is a raw image you want to use as original disk
602
image. It will never be written to.
603

    
604
@file{mycowimage.cow} is the COW disk image which is created by
605
@code{qemu-mkcow}. You can use it directly with the @option{-hdx}
606
options. You must not modify the original raw disk image if you use
607
COW images, as COW images only store the modified sectors from the raw
608
disk image. QEMU stores the original raw disk image name and its
609
modified time in the COW disk image so that chances of mistakes are
610
reduced.
611

    
612
If the raw disk image is not read-only, by pressing @key{C-a s} you
613
can flush the COW disk image back into the raw disk image, as in
614
snapshot mode.
615

    
616
COW disk images can also be created without a corresponding raw disk
617
image. It is useful to have a big initial virtual disk image without
618
using much disk space. Use:
619

    
620
@example
621
qemu-mkcow mycowimage.cow 1024
622
@end example
623

    
624
to create a 1 gigabyte empty COW disk image.
625

    
626
NOTES: 
627
@enumerate
628
@item
629
COW disk images must be created on file systems supporting
630
@emph{holes} such as ext2 or ext3.
631
@item 
632
Since holes are used, the displayed size of the COW disk image is not
633
the real one. To know it, use the @code{ls -ls} command.
634
@end enumerate
635

    
636
@subsection Convert VMware disk images to raw disk images
637

    
638
You can use the tool @file{vmdk2raw} to convert VMware disk images to
639
raw disk images directly usable by QEMU. The syntax is:
640
@example
641
vmdk2raw vmware_image output_image
642
@end example
643

    
644
@section Network emulation
645

    
646
QEMU simulates up to 6 networks cards (NE2000 boards). Each card can
647
be connected to a specific host network interface.
648

    
649
@subsection Using tun/tap network interface
650

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

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

    
662
See @ref{direct_linux_boot} to have an example of network use with a
663
Linux distribution.
664

    
665
@subsection Using the user mode network stack
666

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

    
672
@example
673

    
674
QEMU Virtual Machine    <------>  Firewall/DHCP server <-----> Internet
675
     (10.0.2.x)            |          (10.0.2.2)
676
                           |
677
                           ---->  DNS 
678
                              (10.0.2.3)
679
@end example
680

    
681
The QEMU VM behaves as if it was behind a firewall which blocks all
682
incoming connections. You can use a DHCP client to automatically
683
configure the network in the QEMU VM.
684

    
685
In order to check that the user mode network is working, you can ping
686
the address 10.0.2.2 and verify that you got an address in the range
687
10.0.2.x from the QEMU virtual DHCP server.
688

    
689
Note that @code{ping} is not supported reliably to the internet as it
690
would require root priviledges. It means you can only ping the local
691
router (10.0.2.2).
692

    
693
When using the built-in TFTP server, the router is also the TFTP
694
server.
695

    
696
When using the @option{-redir} option, TCP or UDP connections can be
697
redirected from the host to the guest. It allows for example to
698
redirect X11, telnet or SSH connections.
699

    
700
@node direct_linux_boot
701
@section Direct Linux Boot
702

    
703
This section explains how to launch a Linux kernel inside QEMU without
704
having to make a full bootable image. It is very useful for fast Linux
705
kernel testing. The QEMU network configuration is also explained.
706

    
707
@enumerate
708
@item
709
Download the archive @file{linux-test-xxx.tar.gz} containing a Linux
710
kernel and a disk image. 
711

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

    
719
When network is enabled, there is a virtual network connection between
720
the host kernel and the emulated kernel. The emulated kernel is seen
721
from the host kernel at IP address 172.20.0.2 and the host kernel is
722
seen from the emulated kernel at IP address 172.20.0.1.
723

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

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

    
798
@item
799
Then you can play with the kernel inside the virtual serial console. You
800
can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help
801
about the keys you can type inside the virtual serial console. In
802
particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as
803
the Magic SysRq key.
804

    
805
@item 
806
If the network is enabled, launch the script @file{/etc/linuxrc} in the
807
emulator (don't forget the leading dot):
808
@example
809
. /etc/linuxrc
810
@end example
811

    
812
Then enable X11 connections on your PC from the emulated Linux: 
813
@example
814
xhost +172.20.0.2
815
@end example
816

    
817
You can now launch @file{xterm} or @file{xlogo} and verify that you have
818
a real Virtual Linux system !
819

    
820
@end enumerate
821

    
822
NOTES:
823
@enumerate
824
@item 
825
A 2.5.74 kernel is also included in the archive. Just
826
replace the bzImage in qemu.sh to try it.
827

    
828
@item 
829
qemu-fast creates a temporary file in @var{$QEMU_TMPDIR} (@file{/tmp} is the
830
default) containing all the simulated PC memory. If possible, try to use
831
a temporary directory using the tmpfs filesystem to avoid too many
832
unnecessary disk accesses.
833

    
834
@item 
835
In order to exit cleanly from qemu, you can do a @emph{shutdown} inside
836
qemu. qemu will automatically exit when the Linux shutdown is done.
837

    
838
@item 
839
You can boot slightly faster by disabling the probe of non present IDE
840
interfaces. To do so, add the following options on the kernel command
841
line:
842
@example
843
ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
844
@end example
845

    
846
@item 
847
The example disk image is a modified version of the one made by Kevin
848
Lawton for the plex86 Project (@url{www.plex86.org}).
849

    
850
@end enumerate
851

    
852
@node linux_compile
853
@section Linux Kernel Compilation
854

    
855
You can use any linux kernel with QEMU. However, if you want to use
856
@code{qemu-fast} to get maximum performances, you must use a modified
857
guest kernel. If you are using a 2.6 guest kernel, you can use
858
directly the patch @file{linux-2.6-qemu-fast.patch} made by Rusty
859
Russel available in the QEMU source archive. Otherwise, you can make the
860
following changes @emph{by hand} to the Linux kernel:
861

    
862
@enumerate
863
@item
864
The kernel must be mapped at 0x90000000 (the default is
865
0xc0000000). You must modify only two lines in the kernel source:
866

    
867
In @file{include/asm/page.h}, replace
868
@example
869
#define __PAGE_OFFSET           (0xc0000000)
870
@end example
871
by
872
@example
873
#define __PAGE_OFFSET           (0x90000000)
874
@end example
875

    
876
And in @file{arch/i386/vmlinux.lds}, replace
877
@example
878
  . = 0xc0000000 + 0x100000;
879
@end example
880
by 
881
@example
882
  . = 0x90000000 + 0x100000;
883
@end example
884

    
885
@item
886
If you want to enable SMP (Symmetric Multi-Processing) support, you
887
must make the following change in @file{include/asm/fixmap.h}. Replace
888
@example
889
#define FIXADDR_TOP	(0xffffX000UL)
890
@end example
891
by 
892
@example
893
#define FIXADDR_TOP	(0xa7ffX000UL)
894
@end example
895
(X is 'e' or 'f' depending on the kernel version). Although you can
896
use an SMP kernel with QEMU, it only supports one CPU.
897

    
898
@item
899
If you are not using a 2.6 kernel as host kernel but if you use a target
900
2.6 kernel, you must also ensure that the 'HZ' define is set to 100
901
(1000 is the default) as QEMU cannot currently emulate timers at
902
frequencies greater than 100 Hz on host Linux systems < 2.6. In
903
@file{include/asm/param.h}, replace:
904

    
905
@example
906
# define HZ		1000		/* Internal kernel timer frequency */
907
@end example
908
by
909
@example
910
# define HZ		100		/* Internal kernel timer frequency */
911
@end example
912

    
913
@end enumerate
914

    
915
The file config-2.x.x gives the configuration of the example kernels.
916

    
917
Just type
918
@example
919
make bzImage
920
@end example
921

    
922
As you would do to make a real kernel. Then you can use with QEMU
923
exactly the same kernel as you would boot on your PC (in
924
@file{arch/i386/boot/bzImage}).
925

    
926
@node gdb_usage
927
@section GDB usage
928

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

    
932
In order to use gdb, launch qemu with the '-s' option. It will wait for a
933
gdb connection:
934
@example
935
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
936
Connected to host network interface: tun0
937
Waiting gdb connection on port 1234
938
@end example
939

    
940
Then launch gdb on the 'vmlinux' executable:
941
@example
942
> gdb vmlinux
943
@end example
944

    
945
In gdb, connect to QEMU:
946
@example
947
(gdb) target remote localhost:1234
948
@end example
949

    
950
Then you can use gdb normally. For example, type 'c' to launch the kernel:
951
@example
952
(gdb) c
953
@end example
954

    
955
Here are some useful tips in order to use gdb on system code:
956

    
957
@enumerate
958
@item
959
Use @code{info reg} to display all the CPU registers.
960
@item
961
Use @code{x/10i $eip} to display the code at the PC position.
962
@item
963
Use @code{set architecture i8086} to dump 16 bit code. Then use
964
@code{x/10i $cs*16+*eip} to dump the code at the PC position.
965
@end enumerate
966

    
967
@section Target OS specific information
968

    
969
@subsection Linux
970

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

    
975
When using a 2.6 guest Linux kernel, you should add the option
976
@code{clock=pit} on the kernel command line because the 2.6 Linux
977
kernels make very strict real time clock checks by default that QEMU
978
cannot simulate exactly.
979

    
980
@subsection Windows
981

    
982
If you have a slow host, using Windows 95 is better as it gives the
983
best speed. Windows 2000 is also a good choice.
984

    
985
@subsubsection SVGA graphic modes support
986

    
987
QEMU emulates a Cirrus Logic GD5446 Video
988
card. All Windows versions starting from Windows 95 should recognize
989
and use this graphic card. For optimal performances, use 16 bit color
990
depth in the guest and the host OS.
991

    
992
@subsubsection CPU usage reduction
993

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

    
1000
@subsubsection Windows 2000 disk full problems
1001

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

    
1009
Future QEMU releases are likely to correct this bug.
1010

    
1011
@subsubsection Windows XP security problems
1012

    
1013
Some releases of Windows XP install correctly but give a security
1014
error when booting:
1015
@example
1016
A problem is preventing Windows from accurately checking the
1017
license for this computer. Error code: 0x800703e6.
1018
@end example
1019
The only known workaround is to boot in Safe mode
1020
without networking support. 
1021

    
1022
Future QEMU releases are likely to correct this bug.
1023

    
1024
@subsection MS-DOS and FreeDOS
1025

    
1026
@subsubsection CPU usage reduction
1027

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

    
1033
@chapter QEMU PowerPC System emulator invocation
1034

    
1035
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1036
or PowerMac PowerPC system.
1037

    
1038
QEMU emulates the following PowerMac peripherials:
1039

    
1040
@itemize @minus
1041
@item 
1042
UniNorth PCI Bridge 
1043
@item
1044
PCI VGA compatible card with VESA Bochs Extensions
1045
@item 
1046
2 PMAC IDE interfaces with hard disk and CD-ROM support
1047
@item 
1048
NE2000 PCI adapters
1049
@item
1050
Non Volatile RAM
1051
@item
1052
VIA-CUDA with ADB keyboard and mouse.
1053
@end itemize
1054

    
1055
QEMU emulates the following PREP peripherials:
1056

    
1057
@itemize @minus
1058
@item 
1059
PCI Bridge
1060
@item
1061
PCI VGA compatible card with VESA Bochs Extensions
1062
@item 
1063
2 IDE interfaces with hard disk and CD-ROM support
1064
@item
1065
Floppy disk
1066
@item 
1067
NE2000 network adapters
1068
@item
1069
Serial port
1070
@item
1071
PREP Non Volatile RAM
1072
@item
1073
PC compatible keyboard and mouse.
1074
@end itemize
1075

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

    
1079
You can read the qemu PC system emulation chapter to have more
1080
informations about QEMU usage.
1081

    
1082
@c man begin OPTIONS
1083

    
1084
The following options are specific to the PowerPC emulation:
1085

    
1086
@table @option
1087

    
1088
@item -prep
1089
Simulate a PREP system (default is PowerMAC)
1090

    
1091
@item -g WxH[xDEPTH]  
1092

    
1093
Set the initial VGA graphic mode. The default is 800x600x15.
1094

    
1095
@end table
1096

    
1097
@c man end 
1098

    
1099

    
1100
More information is available at
1101
@url{http://jocelyn.mayer.free.fr/qemu-ppc/}.
1102

    
1103
@chapter QEMU User space emulator invocation
1104

    
1105
@section Quick Start
1106

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

    
1110
@itemize
1111

    
1112
@item On x86, you can just try to launch any process by using the native
1113
libraries:
1114

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

    
1119
@code{-L /} tells that the x86 dynamic linker must be searched with a
1120
@file{/} prefix.
1121

    
1122
@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):
1123

    
1124
@example 
1125
qemu-i386 -L / qemu-i386 -L / /bin/ls
1126
@end example
1127

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

    
1132
@example
1133
unset LD_LIBRARY_PATH 
1134
@end example
1135

    
1136
Then you can launch the precompiled @file{ls} x86 executable:
1137

    
1138
@example
1139
qemu-i386 tests/i386/ls
1140
@end example
1141
You can look at @file{qemu-binfmt-conf.sh} so that
1142
QEMU is automatically launched by the Linux kernel when you try to
1143
launch x86 executables. It requires the @code{binfmt_misc} module in the
1144
Linux kernel.
1145

    
1146
@item The x86 version of QEMU is also included. You can try weird things such as:
1147
@example
1148
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1149
@end example
1150

    
1151
@end itemize
1152

    
1153
@section Wine launch
1154

    
1155
@itemize
1156

    
1157
@item Ensure that you have a working QEMU with the x86 glibc
1158
distribution (see previous section). In order to verify it, you must be
1159
able to do:
1160

    
1161
@example
1162
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1163
@end example
1164

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

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

    
1172
@item Then you can try the example @file{putty.exe}:
1173

    
1174
@example
1175
qemu-i386 /usr/local/qemu-i386/wine/bin/wine /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1176
@end example
1177

    
1178
@end itemize
1179

    
1180
@section Command line options
1181

    
1182
@example
1183
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1184
@end example
1185

    
1186
@table @option
1187
@item -h
1188
Print the help
1189
@item -L path   
1190
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1191
@item -s size
1192
Set the x86 stack size in bytes (default=524288)
1193
@end table
1194

    
1195
Debug options:
1196

    
1197
@table @option
1198
@item -d
1199
Activate log (logfile=/tmp/qemu.log)
1200
@item -p pagesize
1201
Act as if the host page size was 'pagesize' bytes
1202
@end table
1203

    
1204
@node compilation
1205
@chapter Compilation from the sources
1206

    
1207
@section Linux/BSD
1208

    
1209
Read the @file{README} which gives the related information.
1210

    
1211
@section Windows
1212

    
1213
@itemize
1214
@item Install the current versions of MSYS and MinGW from
1215
@url{http://www.mingw.org/}. You can find detailed installation
1216
instructions in the download section and the FAQ.
1217

    
1218
@item Download 
1219
the MinGW development library of SDL 1.2.x
1220
(@file{SDL-devel-1.2.x-mingw32.tar.gz}) from
1221
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
1222
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1223
directory. Edit the @file{sdl-config} script so that it gives the
1224
correct SDL directory when invoked.
1225

    
1226
@item Extract the current version of QEMU.
1227
 
1228
@item Start the MSYS shell (file @file{msys.bat}).
1229

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

    
1234
@item You can install QEMU in @file{Program Files/Qemu} by typing 
1235
@file{make install}. Don't forget to copy @file{SDL.dll} in
1236
@file{Program Files/Qemu}.
1237

    
1238
@end itemize
1239

    
1240
@section Cross compilation for Windows with Linux
1241

    
1242
@itemize
1243
@item
1244
Install the MinGW cross compilation tools available at
1245
@url{http://www.mingw.org/}.
1246

    
1247
@item 
1248
Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1249
unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1250
variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1251
the QEMU configuration script.
1252

    
1253
@item 
1254
Configure QEMU for Windows cross compilation:
1255
@example
1256
./configure --enable-mingw32
1257
@end example
1258
If necessary, you can change the cross-prefix according to the prefix
1259
choosen for the MinGW tools with --cross-prefix. You can also use
1260
--prefix to set the Win32 install path.
1261

    
1262
@item You can install QEMU in the installation directory by typing 
1263
@file{make install}. Don't forget to copy @file{SDL.dll} in the
1264
installation directory. 
1265

    
1266
@end itemize
1267

    
1268
Note: Currently, Wine does not seem able to launch
1269
QEMU for Win32.
1270

    
1271
@section Mac OS X
1272

    
1273
The Mac OS X patches are not fully merged in QEMU, so you should look
1274
at the QEMU mailing list archive to have all the necessary
1275
information.
1276