Statistics
| Branch: | Revision:

root / qemu-doc.texi @ 0443eaf6

History | View | Annotate | Download (37.8 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
QEMU can run without an host kernel driver and yet gives acceptable
38
performance. On an x86 host, if you want the highest performance for
39
the x86 target, the @emph{QEMU Accelerator Module} (KQEMU) allows QEMU
40
to reach near native performances. KQEMU is currently only supported
41
for an x86 Linux 2.4 or 2.6 host system, but more host OSes will be
42
supported in the future.
43

    
44
For system emulation, the following hardware targets are supported:
45
@itemize
46
@item PC (x86 processor)
47
@item PREP (PowerPC processor)
48
@item PowerMac (PowerPC processor, in progress)
49
@end itemize
50

    
51
For user emulation, x86, PowerPC, ARM, and SPARC CPUs are supported.
52

    
53
@chapter Installation
54

    
55
If you want to compile QEMU yourself, see @ref{compilation}.
56

    
57
@section Linux
58

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

    
62
@section Windows
63

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

    
67
@section Mac OS X
68

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

    
72
@chapter QEMU PC System emulator invocation
73

    
74
@section Introduction
75

    
76
@c man begin DESCRIPTION
77

    
78
The QEMU System emulator simulates the
79
following PC peripherials:
80

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

    
101
QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
102
VGA BIOS.
103

    
104
@c man end
105

    
106
@section Quick Start
107

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

    
110
@example
111
qemu linux.img
112
@end example
113

    
114
Linux should boot and give you a prompt.
115

    
116
@section Invocation
117

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

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

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

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

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

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

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

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

    
157
@item -nographic
158

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

    
165
@item -k language
166

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

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

    
179
The default is @code{en-us}.
180

    
181
@item -enable-audio
182

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

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

    
191
@item -full-screen
192
Start in full screen.
193

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

    
198
@end table
199

    
200
Network options:
201

    
202
@table @option
203

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

    
209
@item -macaddr addr   
210

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

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

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

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

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

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

    
244
Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
245

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

    
250
@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
251

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

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

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

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

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

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

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

    
284
@end table
285

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

    
290
@table @option
291

    
292
@item -kernel bzImage 
293
Use @var{bzImage} as kernel image.
294

    
295
@item -append cmdline 
296
Use @var{cmdline} as kernel command line
297

    
298
@item -initrd file
299
Use @var{file} as initial ram disk.
300

    
301
@end table
302

    
303
Debug/Expert options:
304
@table @option
305

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

    
322
This option can be used several times to simulate up to 4 serials
323
ports.
324

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

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

    
346
@item -no-kqemu
347
Disable the usage of the QEMU Accelerator module (KQEMU). QEMU will work as
348
usual but will be slower. This option can be useful to determine if
349
emulation problems are coming from KQEMU.
350

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

    
360
@c man end
361

    
362
@section Keys
363

    
364
@c man begin OPTIONS
365

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

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

    
382
@item Ctrl-Alt
383
Toggle mouse and keyboard grab.
384
@end table
385

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

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

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

    
408
@ignore
409

    
410
@setfilename qemu 
411
@settitle QEMU System Emulator
412

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

    
418
@c man begin AUTHOR
419
Fabrice Bellard
420
@c man end
421

    
422
@end ignore
423

    
424
@end ignore
425

    
426
@section QEMU Accelerator Module
427

    
428
The QEMU Accelerator Module (KQEMU) is an optional part of QEMU currently only
429
available for Linux 2.4 or 2.6 x86 hosts. It enables QEMU to run x86
430
code much faster. Provided it is installed on your PC (see
431
@ref{kqemu_install}), QEMU will automatically use it.
432

    
433
WARNING: as with any alpha stage kernel driver, KQEMU may cause
434
arbitrary data loss on your PC, so you'd better backup your sensitive
435
data before using it.
436

    
437
When using KQEMU, QEMU will create a big hidden file containing the
438
RAM of the virtual machine. For best performance, it is important that
439
this file is kept in RAM and not on the hard disk. QEMU uses the
440
@file{/dev/shm} directory to create this file because @code{tmpfs} is
441
usually mounted on it (check with the shell command
442
@code{df}). Otherwise @file{/tmp} is used as fallback. You can use the
443
@var{QEMU_TMPDIR} shell variable to set a new directory for the QEMU
444
RAM file.
445

    
446
@section QEMU Monitor
447

    
448
The QEMU monitor is used to give complex commands to the QEMU
449
emulator. You can use it to:
450

    
451
@itemize @minus
452

    
453
@item
454
Remove or insert removable medias images
455
(such as CD-ROM or floppies)
456

    
457
@item 
458
Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
459
from a disk file.
460

    
461
@item Inspect the VM state without an external debugger.
462

    
463
@end itemize
464

    
465
@subsection Commands
466

    
467
The following commands are available:
468

    
469
@table @option
470

    
471
@item help or ? [cmd]
472
Show the help for all commands or just for command @var{cmd}.
473

    
474
@item commit  
475
Commit changes to the disk images (if -snapshot is used)
476

    
477
@item info subcommand 
478
show various information about the system state
479

    
480
@table @option
481
@item info network
482
show the network state
483
@item info block
484
show the block devices
485
@item info registers
486
show the cpu registers
487
@item info history
488
show the command line history
489
@end table
490

    
491
@item q or quit
492
Quit the emulator.
493

    
494
@item eject [-f] device
495
Eject a removable media (use -f to force it).
496

    
497
@item change device filename
498
Change a removable media.
499

    
500
@item screendump filename
501
Save screen into PPM image @var{filename}.
502

    
503
@item log item1[,...]
504
Activate logging of the specified items to @file{/tmp/qemu.log}.
505

    
506
@item savevm filename
507
Save the whole virtual machine state to @var{filename}.
508

    
509
@item loadvm filename
510
Restore the whole virtual machine state from @var{filename}.
511

    
512
@item stop
513
Stop emulation.
514

    
515
@item c or cont
516
Resume emulation.
517

    
518
@item gdbserver [port]
519
Start gdbserver session (default port=1234)
520

    
521
@item x/fmt addr
522
Virtual memory dump starting at @var{addr}.
523

    
524
@item xp /fmt addr
525
Physical memory dump starting at @var{addr}.
526

    
527
@var{fmt} is a format which tells the command how to format the
528
data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
529

    
530
@table @var
531
@item count 
532
is the number of items to be dumped.
533

    
534
@item format
535
can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
536
c (char) or i (asm instruction).
537

    
538
@item size
539
can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
540
@code{h} or @code{w} can be specified with the @code{i} format to
541
respectively select 16 or 32 bit code instruction size.
542

    
543
@end table
544

    
545
Examples: 
546
@itemize
547
@item
548
Dump 10 instructions at the current instruction pointer:
549
@example 
550
(qemu) x/10i $eip
551
0x90107063:  ret
552
0x90107064:  sti
553
0x90107065:  lea    0x0(%esi,1),%esi
554
0x90107069:  lea    0x0(%edi,1),%edi
555
0x90107070:  ret
556
0x90107071:  jmp    0x90107080
557
0x90107073:  nop
558
0x90107074:  nop
559
0x90107075:  nop
560
0x90107076:  nop
561
@end example
562

    
563
@item
564
Dump 80 16 bit values at the start of the video memory.
565
@example 
566
(qemu) xp/80hx 0xb8000
567
0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
568
0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
569
0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
570
0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
571
0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
572
0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
573
0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
574
0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
575
0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
576
0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
577
@end example
578
@end itemize
579

    
580
@item p or print/fmt expr
581

    
582
Print expression value. Only the @var{format} part of @var{fmt} is
583
used.
584

    
585
@item sendkey keys
586

    
587
Send @var{keys} to the emulator. Use @code{-} to press several keys
588
simultaneously. Example:
589
@example
590
sendkey ctrl-alt-f1
591
@end example
592

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

    
596
@item system_reset
597

    
598
Reset the system.
599

    
600
@end table
601

    
602
@subsection Integer expressions
603

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

    
608
@node disk_images
609
@section Disk Images
610

    
611
Since version 0.6.1, QEMU supports many disk image formats, including
612
growable disk images (their size increase as non empty sectors are
613
written), compressed and encrypted disk images.
614

    
615
@subsection Quick start for disk image creation
616

    
617
You can create a disk image with the command:
618
@example
619
qemu-img create myimage.img mysize
620
@end example
621
where @var{myimage.img} is the disk image filename and @var{mysize} is its
622
size in kilobytes. You can add an @code{M} suffix to give the size in
623
megabytes and a @code{G} suffix for gigabytes.
624

    
625
@xref{qemu_img_invocation} for more information.
626

    
627
@subsection Snapshot mode
628

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

    
635
@node qemu_img_invocation
636
@subsection @code{qemu-img} Invocation
637

    
638
@include qemu-img.texi
639

    
640
@section Network emulation
641

    
642
QEMU simulates up to 6 networks cards (NE2000 boards). Each card can
643
be connected to a specific host network interface.
644

    
645
@subsection Using tun/tap network interface
646

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

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

    
658
See @ref{direct_linux_boot} to have an example of network use with a
659
Linux distribution.
660

    
661
@subsection Using the user mode network stack
662

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

    
668
@example
669

    
670
QEMU Virtual Machine    <------>  Firewall/DHCP server <-----> Internet
671
     (10.0.2.x)            |          (10.0.2.2)
672
                           |
673
                           ---->  DNS server (10.0.2.3)
674
                           |     
675
                           ---->  SMB server (10.0.2.4)
676
@end example
677

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

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

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

    
690
When using the built-in TFTP server, the router is also the TFTP
691
server.
692

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

    
697
@node direct_linux_boot
698
@section Direct Linux Boot
699

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

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

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

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

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

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

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

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

    
809
Then enable X11 connections on your PC from the emulated Linux: 
810
@example
811
xhost +172.20.0.2
812
@end example
813

    
814
You can now launch @file{xterm} or @file{xlogo} and verify that you have
815
a real Virtual Linux system !
816

    
817
@end enumerate
818

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

    
825
@item 
826
In order to exit cleanly from qemu, you can do a @emph{shutdown} inside
827
qemu. qemu will automatically exit when the Linux shutdown is done.
828

    
829
@item 
830
You can boot slightly faster by disabling the probe of non present IDE
831
interfaces. To do so, add the following options on the kernel command
832
line:
833
@example
834
ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
835
@end example
836

    
837
@item 
838
The example disk image is a modified version of the one made by Kevin
839
Lawton for the plex86 Project (@url{www.plex86.org}).
840

    
841
@end enumerate
842

    
843
@node gdb_usage
844
@section GDB usage
845

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

    
849
In order to use gdb, launch qemu with the '-s' option. It will wait for a
850
gdb connection:
851
@example
852
> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
853
Connected to host network interface: tun0
854
Waiting gdb connection on port 1234
855
@end example
856

    
857
Then launch gdb on the 'vmlinux' executable:
858
@example
859
> gdb vmlinux
860
@end example
861

    
862
In gdb, connect to QEMU:
863
@example
864
(gdb) target remote localhost:1234
865
@end example
866

    
867
Then you can use gdb normally. For example, type 'c' to launch the kernel:
868
@example
869
(gdb) c
870
@end example
871

    
872
Here are some useful tips in order to use gdb on system code:
873

    
874
@enumerate
875
@item
876
Use @code{info reg} to display all the CPU registers.
877
@item
878
Use @code{x/10i $eip} to display the code at the PC position.
879
@item
880
Use @code{set architecture i8086} to dump 16 bit code. Then use
881
@code{x/10i $cs*16+*eip} to dump the code at the PC position.
882
@end enumerate
883

    
884
@section Target OS specific information
885

    
886
@subsection Linux
887

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

    
892
When using a 2.6 guest Linux kernel, you should add the option
893
@code{clock=pit} on the kernel command line because the 2.6 Linux
894
kernels make very strict real time clock checks by default that QEMU
895
cannot simulate exactly.
896

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

    
903
@subsection Windows
904

    
905
If you have a slow host, using Windows 95 is better as it gives the
906
best speed. Windows 2000 is also a good choice.
907

    
908
@subsubsection SVGA graphic modes support
909

    
910
QEMU emulates a Cirrus Logic GD5446 Video
911
card. All Windows versions starting from Windows 95 should recognize
912
and use this graphic card. For optimal performances, use 16 bit color
913
depth in the guest and the host OS.
914

    
915
@subsubsection CPU usage reduction
916

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

    
923
@subsubsection Windows 2000 disk full problems
924

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

    
932
Future QEMU releases are likely to correct this bug.
933

    
934
@subsubsection Windows XP security problems
935

    
936
Some releases of Windows XP install correctly but give a security
937
error when booting:
938
@example
939
A problem is preventing Windows from accurately checking the
940
license for this computer. Error code: 0x800703e6.
941
@end example
942
The only known workaround is to boot in Safe mode
943
without networking support. 
944

    
945
Future QEMU releases are likely to correct this bug.
946

    
947
@subsection MS-DOS and FreeDOS
948

    
949
@subsubsection CPU usage reduction
950

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

    
956
@chapter QEMU PowerPC System emulator invocation
957

    
958
Use the executable @file{qemu-system-ppc} to simulate a complete PREP
959
or PowerMac PowerPC system.
960

    
961
QEMU emulates the following PowerMac peripherials:
962

    
963
@itemize @minus
964
@item 
965
UniNorth PCI Bridge 
966
@item
967
PCI VGA compatible card with VESA Bochs Extensions
968
@item 
969
2 PMAC IDE interfaces with hard disk and CD-ROM support
970
@item 
971
NE2000 PCI adapters
972
@item
973
Non Volatile RAM
974
@item
975
VIA-CUDA with ADB keyboard and mouse.
976
@end itemize
977

    
978
QEMU emulates the following PREP peripherials:
979

    
980
@itemize @minus
981
@item 
982
PCI Bridge
983
@item
984
PCI VGA compatible card with VESA Bochs Extensions
985
@item 
986
2 IDE interfaces with hard disk and CD-ROM support
987
@item
988
Floppy disk
989
@item 
990
NE2000 network adapters
991
@item
992
Serial port
993
@item
994
PREP Non Volatile RAM
995
@item
996
PC compatible keyboard and mouse.
997
@end itemize
998

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

    
1002
You can read the qemu PC system emulation chapter to have more
1003
informations about QEMU usage.
1004

    
1005
@c man begin OPTIONS
1006

    
1007
The following options are specific to the PowerPC emulation:
1008

    
1009
@table @option
1010

    
1011
@item -prep
1012
Simulate a PREP system (default is PowerMAC)
1013

    
1014
@item -g WxH[xDEPTH]  
1015

    
1016
Set the initial VGA graphic mode. The default is 800x600x15.
1017

    
1018
@end table
1019

    
1020
@c man end 
1021

    
1022

    
1023
More information is available at
1024
@url{http://jocelyn.mayer.free.fr/qemu-ppc/}.
1025

    
1026
@chapter Sparc System emulator invocation
1027

    
1028
Use the executable @file{qemu-system-sparc} to simulate a JavaStation
1029
(sun4m architecture). The emulation is far from complete.
1030

    
1031
QEMU emulates the following sun4m peripherials:
1032

    
1033
@itemize @minus
1034
@item 
1035
IOMMU
1036
@item
1037
TCX Frame buffer
1038
@item 
1039
Lance (Am7990) Ethernet
1040
@item
1041
Non Volatile RAM M48T08
1042
@item
1043
Slave I/O: timers, interrupt controllers, Zilog serial ports
1044
@end itemize
1045

    
1046
QEMU uses the Proll, a PROM replacement available at
1047
@url{http://people.redhat.com/zaitcev/linux/}.
1048

    
1049
@chapter QEMU User space emulator invocation
1050

    
1051
@section Quick Start
1052

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

    
1056
@itemize
1057

    
1058
@item On x86, you can just try to launch any process by using the native
1059
libraries:
1060

    
1061
@example 
1062
qemu-i386 -L / /bin/ls
1063
@end example
1064

    
1065
@code{-L /} tells that the x86 dynamic linker must be searched with a
1066
@file{/} prefix.
1067

    
1068
@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):
1069

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

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

    
1078
@example
1079
unset LD_LIBRARY_PATH 
1080
@end example
1081

    
1082
Then you can launch the precompiled @file{ls} x86 executable:
1083

    
1084
@example
1085
qemu-i386 tests/i386/ls
1086
@end example
1087
You can look at @file{qemu-binfmt-conf.sh} so that
1088
QEMU is automatically launched by the Linux kernel when you try to
1089
launch x86 executables. It requires the @code{binfmt_misc} module in the
1090
Linux kernel.
1091

    
1092
@item The x86 version of QEMU is also included. You can try weird things such as:
1093
@example
1094
qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1095
@end example
1096

    
1097
@end itemize
1098

    
1099
@section Wine launch
1100

    
1101
@itemize
1102

    
1103
@item Ensure that you have a working QEMU with the x86 glibc
1104
distribution (see previous section). In order to verify it, you must be
1105
able to do:
1106

    
1107
@example
1108
qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1109
@end example
1110

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

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

    
1118
@item Then you can try the example @file{putty.exe}:
1119

    
1120
@example
1121
qemu-i386 /usr/local/qemu-i386/wine/bin/wine /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1122
@end example
1123

    
1124
@end itemize
1125

    
1126
@section Command line options
1127

    
1128
@example
1129
usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1130
@end example
1131

    
1132
@table @option
1133
@item -h
1134
Print the help
1135
@item -L path   
1136
Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1137
@item -s size
1138
Set the x86 stack size in bytes (default=524288)
1139
@end table
1140

    
1141
Debug options:
1142

    
1143
@table @option
1144
@item -d
1145
Activate log (logfile=/tmp/qemu.log)
1146
@item -p pagesize
1147
Act as if the host page size was 'pagesize' bytes
1148
@end table
1149

    
1150
@node compilation
1151
@chapter Compilation from the sources
1152

    
1153
@section Linux/Unix
1154

    
1155
@subsection Compilation
1156

    
1157
First you must decompress the sources:
1158
@example
1159
cd /tmp
1160
tar zxvf qemu-x.y.z.tar.gz
1161
cd qemu-x.y.z
1162
@end example
1163

    
1164
If you want to use the optional QEMU Accelerator Module, then download
1165
it and install it in qemu-x.y.z/:
1166
@example
1167
tar zxvf /tmp/kqemu-x.y.z.tar.gz
1168
@end example
1169

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

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

    
1182
@node kqemu_install
1183
@subsection QEMU Accelerator Installation
1184

    
1185
If you use x86 Linux, the compilation of the QEMU Accelerator Kernel
1186
Module (KQEMU) is automatically activated provided you have the
1187
necessary kernel headers. If nonetheless the compilation fails, you
1188
can disable its compilation with the @option{--disable-kqemu} option. 
1189

    
1190
If you are using a 2.6 host kernel, then all the necessary kernel
1191
headers should be already installed. If you are using a 2.4 kernel,
1192
then you should verify that properly configured kernel sources are
1193
installed and compiled. On a Redhat 9 distribution for example, the
1194
following must be done:
1195
@example
1196
1) Install the kernel-source-xxx package
1197
2) cd /usr/src/linux-xxx
1198
3) make distclean
1199
4) Copy /boot/config-vvv in .config (use uname -r to know your configuration name 'vvv')
1200
5) Edit the Makefile to change the EXTRAVERSION line to match your
1201
   current configuration name:
1202
   EXTRAVERSION = -custom
1203
to 
1204
   EXTRAVERSION = -8 # This is an example, it can be -8smp too
1205
5) make menuconfig # Just save the configuration
1206
6) make dep bzImage
1207
@end example
1208

    
1209
The installation of KQEMU is not fully automatic because it is highly
1210
distribution dependent. When launching 
1211
@example
1212
make install
1213
@end example
1214

    
1215
KQEMU is installed in /lib/modules/@var{kernel_version}/misc. The
1216
device @file{/dev/kqemu} is created with read/write access rights for
1217
everyone. If you fear security issues, you can restrict the access
1218
rights of @file{/dev/kqemu}.
1219

    
1220
If you want that KQEMU is installed automatically at boot time, you can add
1221

    
1222
@example
1223
# Load the KQEMU kernel module
1224
/sbin/modprobe kqemu
1225
@end example
1226

    
1227
in @file{/etc/rc.d/rc.local}.
1228

    
1229
If your distribution uses udev (like Fedora), the @file{/dev/kqemu} is
1230
not created automatically (yet) at every reboot. You can add the
1231
following in @file{/etc/rc.d/rc.local}:
1232

    
1233
@example
1234
# Create the KQEMU device
1235
mknod /dev/kqemu c 250 0
1236
chmod 666 /dev/kqemu
1237
@end example
1238

    
1239
@subsection Tested tool versions
1240

    
1241
In order to compile QEMU succesfully, it is very important that you
1242
have the right tools. The most important one is gcc. I cannot guaranty
1243
that QEMU works if you do not use a tested gcc version. Look at
1244
'configure' and 'Makefile' if you want to make a different gcc
1245
version work.
1246

    
1247
@example
1248
host      gcc      binutils      glibc    linux       distribution
1249
----------------------------------------------------------------------
1250
x86       3.2      2.13.2        2.1.3    2.4.18
1251
          2.96     2.11.93.0.2   2.2.5    2.4.18      Red Hat 7.3
1252
          3.2.2    2.13.90.0.18  2.3.2    2.4.20      Red Hat 9
1253

    
1254
PowerPC   3.3 [4]  2.13.90.0.18  2.3.1    2.4.20briq
1255
          3.2
1256

    
1257
Alpha     3.3 [1]  2.14.90.0.4   2.2.5    2.2.20 [2]  Debian 3.0
1258

    
1259
Sparc32   2.95.4   2.12.90.0.1   2.2.5    2.4.18      Debian 3.0
1260

    
1261
ARM       2.95.4   2.12.90.0.1   2.2.5    2.4.9 [3]   Debian 3.0
1262

    
1263
[1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
1264
    for gcc version >= 3.3.
1265
[2] Linux >= 2.4.20 is necessary for precise exception support
1266
    (untested).
1267
[3] 2.4.9-ac10-rmk2-np1-cerf2
1268

    
1269
[4] gcc 2.95.x generates invalid code when using too many register
1270
variables. You must use gcc 3.x on PowerPC.
1271
@end example
1272

    
1273
@section Windows
1274

    
1275
@itemize
1276
@item Install the current versions of MSYS and MinGW from
1277
@url{http://www.mingw.org/}. You can find detailed installation
1278
instructions in the download section and the FAQ.
1279

    
1280
@item Download 
1281
the MinGW development library of SDL 1.2.x
1282
(@file{SDL-devel-1.2.x-mingw32.tar.gz}) from
1283
@url{http://www.libsdl.org}. Unpack it in a temporary place, and
1284
unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1285
directory. Edit the @file{sdl-config} script so that it gives the
1286
correct SDL directory when invoked.
1287

    
1288
@item Extract the current version of QEMU.
1289
 
1290
@item Start the MSYS shell (file @file{msys.bat}).
1291

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

    
1296
@item You can install QEMU in @file{Program Files/Qemu} by typing 
1297
@file{make install}. Don't forget to copy @file{SDL.dll} in
1298
@file{Program Files/Qemu}.
1299

    
1300
@end itemize
1301

    
1302
@section Cross compilation for Windows with Linux
1303

    
1304
@itemize
1305
@item
1306
Install the MinGW cross compilation tools available at
1307
@url{http://www.mingw.org/}.
1308

    
1309
@item 
1310
Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1311
unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1312
variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1313
the QEMU configuration script.
1314

    
1315
@item 
1316
Configure QEMU for Windows cross compilation:
1317
@example
1318
./configure --enable-mingw32
1319
@end example
1320
If necessary, you can change the cross-prefix according to the prefix
1321
choosen for the MinGW tools with --cross-prefix. You can also use
1322
--prefix to set the Win32 install path.
1323

    
1324
@item You can install QEMU in the installation directory by typing 
1325
@file{make install}. Don't forget to copy @file{SDL.dll} in the
1326
installation directory. 
1327

    
1328
@end itemize
1329

    
1330
Note: Currently, Wine does not seem able to launch
1331
QEMU for Win32.
1332

    
1333
@section Mac OS X
1334

    
1335
The Mac OS X patches are not fully merged in QEMU, so you should look
1336
at the QEMU mailing list archive to have all the necessary
1337
information.
1338