]> git.proxmox.com Git - qemu.git/blame - qemu-doc.texi
add missing definitions in the ppc linker script (Paul Brook)
[qemu.git] / qemu-doc.texi
CommitLineData
386405f7
FB
1\input texinfo @c -*- texinfo -*-
2
0806e3f6 3@iftex
1f673135 4@settitle QEMU CPU Emulator User Documentation
386405f7
FB
5@titlepage
6@sp 7
1f673135 7@center @titlefont{QEMU CPU Emulator User Documentation}
386405f7
FB
8@sp 3
9@end titlepage
0806e3f6 10@end iftex
386405f7
FB
11
12@chapter Introduction
13
322d0c66 14@section Features
386405f7 15
1f673135
FB
16QEMU is a FAST! processor emulator using dynamic translation to
17achieve good emulation speed.
1eb20527
FB
18
19QEMU has two operating modes:
0806e3f6
FB
20
21@itemize @minus
22
23@item
1f673135 24Full system emulation. In this mode, QEMU emulates a full system (for
b671f9ed 25example a PC), including a processor and various peripherals. It can
1f673135
FB
26be used to launch different Operating Systems without rebooting the
27PC or to debug system code.
1eb20527 28
0806e3f6 29@item
1f673135
FB
30User mode emulation (Linux host only). In this mode, QEMU can launch
31Linux processes compiled for one CPU on another CPU. It can be used to
32launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
33to ease cross-compilation and cross-debugging.
1eb20527
FB
34
35@end itemize
36
7c3fc84d 37QEMU can run without an host kernel driver and yet gives acceptable
6f2f2b24 38performance.
322d0c66 39
52c00a5f
FB
40For system emulation, the following hardware targets are supported:
41@itemize
42@item PC (x86 processor)
43@item PREP (PowerPC processor)
15a34c63 44@item PowerMac (PowerPC processor, in progress)
b756921a 45@item Sun4m (Sparc processor, in progress)
52c00a5f 46@end itemize
386405f7 47
1f673135 48For user emulation, x86, PowerPC, ARM, and SPARC CPUs are supported.
0806e3f6 49
5b9f457a
FB
50@chapter Installation
51
15a34c63
FB
52If you want to compile QEMU yourself, see @ref{compilation}.
53
1f673135
FB
54@section Linux
55
7c3fc84d
FB
56If a precompiled package is available for your distribution - you just
57have to install it. Otherwise, see @ref{compilation}.
5b9f457a 58
1f673135 59@section Windows
8cd0ac2f 60
15a34c63
FB
61Download the experimental binary installer at
62@url{http://www.freeoszoo.org/download.php}.
d691f669 63
1f673135 64@section Mac OS X
d691f669 65
15a34c63
FB
66Download the experimental binary installer at
67@url{http://www.freeoszoo.org/download.php}.
df0f11a0 68
52c00a5f 69@chapter QEMU PC System emulator invocation
1eb20527 70
0806e3f6
FB
71@section Introduction
72
73@c man begin DESCRIPTION
74
7c3fc84d 75The QEMU System emulator simulates the
b671f9ed 76following PC peripherals:
0806e3f6
FB
77
78@itemize @minus
15a34c63
FB
79@item
80i440FX host PCI bridge and PIIX3 PCI to ISA bridge
0806e3f6 81@item
15a34c63
FB
82Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
83extensions (hardware level, including all non standard modes).
0806e3f6
FB
84@item
85PS/2 mouse and keyboard
86@item
15a34c63 872 PCI IDE interfaces with hard disk and CD-ROM support
1f673135
FB
88@item
89Floppy disk
0806e3f6 90@item
15a34c63 91NE2000 PCI network adapters
0806e3f6 92@item
05d5818c
FB
93Serial ports
94@item
181f1558 95Soundblaster 16 card
0806e3f6
FB
96@end itemize
97
15a34c63
FB
98QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
99VGA BIOS.
100
0806e3f6
FB
101@c man end
102
1eb20527
FB
103@section Quick Start
104
285dc330 105Download and uncompress the linux image (@file{linux.img}) and type:
0806e3f6
FB
106
107@example
285dc330 108qemu linux.img
0806e3f6
FB
109@end example
110
111Linux should boot and give you a prompt.
112
ec410fc9
FB
113@section Invocation
114
115@example
0806e3f6
FB
116@c man begin SYNOPSIS
117usage: qemu [options] [disk_image]
118@c man end
ec410fc9
FB
119@end example
120
0806e3f6 121@c man begin OPTIONS
9d4520d0 122@var{disk_image} is a raw hard disk image for IDE hard disk 0.
ec410fc9
FB
123
124General options:
125@table @option
2be3bc02
FB
126@item -fda file
127@item -fdb file
be3edd95
FB
128Use @var{file} as floppy disk 0/1 image (@xref{disk_images}). You can
129use the host floppy by using @file{/dev/fd0} as filename.
2be3bc02 130
ec410fc9
FB
131@item -hda file
132@item -hdb file
181f1558
FB
133@item -hdc file
134@item -hdd file
2be3bc02 135Use @var{file} as hard disk 0, 1, 2 or 3 image (@xref{disk_images}).
1f47a922 136
181f1558
FB
137@item -cdrom file
138Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and
be3edd95
FB
139@option{-cdrom} at the same time). You can use the host CD-ROM by
140using @file{/dev/cdrom} as filename.
181f1558 141
1f673135
FB
142@item -boot [a|c|d]
143Boot on floppy (a), hard disk (c) or CD-ROM (d). Hard disk boot is
2be3bc02 144the default.
1f47a922 145
181f1558 146@item -snapshot
1f47a922
FB
147Write to temporary files instead of disk image files. In this case,
148the raw disk image you use is not written back. You can however force
149the write back by pressing @key{C-a s} (@xref{disk_images}).
ec410fc9
FB
150
151@item -m megs
15a34c63 152Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
ec410fc9 153
0806e3f6
FB
154@item -nographic
155
156Normally, QEMU uses SDL to display the VGA output. With this option,
157you can totally disable graphical output so that QEMU is a simple
158command line application. The emulated serial port is redirected on
159the console. Therefore, you can still use QEMU to debug a Linux kernel
160with a serial console.
161
3d11d0eb
FB
162@item -k language
163
164Use keyboard layout @var{language} (for example @code{fr} for
165French). This option is only needed where it is not easy to get raw PC
166keycodes (e.g. on Macs or with some X11 servers). You don't need to
167use it on PC/Linux or PC/Windows hosts.
168
169The available layouts are:
170@example
171ar de-ch es fo fr-ca hu ja mk no pt-br sv
172da en-gb et fr fr-ch is lt nl pl ru th
173de en-us fi fr-be hr it lv nl-be pt sl tr
174@end example
175
176The default is @code{en-us}.
177
a8c490cd
FB
178@item -enable-audio
179
180The SB16 emulation is disabled by default as it may give problems with
181Windows. You can enable it manually with this option.
182
15a34c63
FB
183@item -localtime
184Set the real time clock to local time (the default is to UTC
185time). This option is needed to have correct date in MS-DOS or
186Windows.
187
d63d307f
FB
188@item -full-screen
189Start in full screen.
190
f7cce898
FB
191@item -pidfile file
192Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
193from a script.
194
0806e3f6
FB
195@end table
196
1f673135
FB
197Network options:
198
199@table @option
200
201@item -n script
52c00a5f
FB
202Set TUN/TAP network init script [default=/etc/qemu-ifup]. This script
203is launched to configure the host network interface (usually tun0)
1f673135
FB
204corresponding to the virtual NE2000 card.
205
1f673135
FB
206@item -macaddr addr
207
208Set the mac address of the first interface (the format is
209aa:bb:cc:dd:ee:ff in hexa). The mac address is incremented for each
210new network interface.
211
52c00a5f
FB
212@item -tun-fd fd
213Assumes @var{fd} talks to a tap/tun host network interface and use
214it. Read @url{http://bellard.org/qemu/tetrinet.html} to have an
215example of its use.
216
217@item -user-net
15a34c63
FB
218Use the user mode network stack. This is the default if no tun/tap
219network init script is found.
52c00a5f 220
9bf05444
FB
221@item -tftp prefix
222When using the user mode network stack, activate a built-in TFTP
223server. All filenames beginning with @var{prefix} can be downloaded
224from the host to the guest using a TFTP client. The TFTP client on the
225guest must be configured in binary mode (use the command @code{bin} of
226the Unix TFTP client). The host IP address on the guest is as usual
22710.0.2.2.
228
2518bd0d
FB
229@item -smb dir
230When using the user mode network stack, activate a built-in SMB
231server so that Windows OSes can access to the host files in @file{dir}
232transparently.
233
234In the guest Windows OS, the line:
235@example
23610.0.2.4 smbserver
237@end example
238must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
239or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
240
241Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
242
243Note that a SAMBA server must be installed on the host OS in
244@file{/usr/sbin/smbd}. QEMU was tested succesfully with smbd version
2452.2.7a from the Red Hat 9.
246
9bf05444
FB
247@item -redir [tcp|udp]:host-port:[guest-host]:guest-port
248
249When using the user mode network stack, redirect incoming TCP or UDP
250connections to the host port @var{host-port} to the guest
251@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
252is not specified, its value is 10.0.2.15 (default address given by the
253built-in DHCP server).
254
255For example, to redirect host X11 connection from screen 1 to guest
256screen 0, use the following:
257
258@example
259# on the host
260qemu -redir tcp:6001::6000 [...]
261# this host xterm should open in the guest X11 server
262xterm -display :1
263@end example
264
265To redirect telnet connections from host port 5555 to telnet port on
266the guest, use the following:
267
268@example
269# on the host
270qemu -redir tcp:5555::23 [...]
271telnet localhost 5555
272@end example
273
274Then when you use on the host @code{telnet localhost 5555}, you
275connect to the guest telnet server.
276
52c00a5f 277@item -dummy-net
15a34c63 278Use the dummy network stack: no packet will be received by the network
52c00a5f 279cards.
1f673135
FB
280
281@end table
282
283Linux boot specific. When using this options, you can use a given
284Linux kernel without installing it in the disk image. It can be useful
285for easier testing of various kernels.
286
0806e3f6
FB
287@table @option
288
289@item -kernel bzImage
290Use @var{bzImage} as kernel image.
291
292@item -append cmdline
293Use @var{cmdline} as kernel command line
294
295@item -initrd file
296Use @var{file} as initial ram disk.
297
ec410fc9
FB
298@end table
299
15a34c63 300Debug/Expert options:
ec410fc9 301@table @option
a0a821a4
FB
302
303@item -serial dev
304Redirect the virtual serial port to host device @var{dev}. Available
305devices are:
306@table @code
307@item vc
308Virtual console
309@item pty
310[Linux only] Pseudo TTY (a new PTY is automatically allocated)
311@item null
312void device
313@item stdio
314[Unix only] standard input/output
315@end table
316The default device is @code{vc} in graphical mode and @code{stdio} in
317non graphical mode.
318
05d5818c
FB
319This option can be used several times to simulate up to 4 serials
320ports.
321
a0a821a4
FB
322@item -monitor dev
323Redirect the monitor to host device @var{dev} (same devices as the
324serial port).
325The default device is @code{vc} in graphical mode and @code{stdio} in
326non graphical mode.
327
ec410fc9 328@item -s
0806e3f6 329Wait gdb connection to port 1234 (@xref{gdb_usage}).
ec410fc9
FB
330@item -p port
331Change gdb connection port.
52c00a5f
FB
332@item -S
333Do not start CPU at startup (you must type 'c' in the monitor).
ec410fc9 334@item -d
9d4520d0 335Output log in /tmp/qemu.log
46d4767d
FB
336@item -hdachs c,h,s,[,t]
337Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
338@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
339translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
340all thoses parameters. This option is useful for old MS-DOS disk
341images.
7c3fc84d 342
15a34c63
FB
343@item -isa
344Simulate an ISA-only system (default is PCI system).
345@item -std-vga
346Simulate a standard VGA card with Bochs VBE extensions (default is
347Cirrus Logic GD5446 PCI VGA)
d63d307f
FB
348@item -loadvm file
349Start right away with a saved state (@code{loadvm} in monitor)
ec410fc9
FB
350@end table
351
3e11db9a
FB
352@c man end
353
354@section Keys
355
356@c man begin OPTIONS
357
a1b74fe8
FB
358During the graphical emulation, you can use the following keys:
359@table @key
f9859310 360@item Ctrl-Alt-f
a1b74fe8 361Toggle full screen
a0a821a4 362
f9859310 363@item Ctrl-Alt-n
a0a821a4
FB
364Switch to virtual console 'n'. Standard console mappings are:
365@table @emph
366@item 1
367Target system display
368@item 2
369Monitor
370@item 3
371Serial port
a1b74fe8
FB
372@end table
373
f9859310 374@item Ctrl-Alt
a0a821a4
FB
375Toggle mouse and keyboard grab.
376@end table
377
3e11db9a
FB
378In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
379@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
380
a0a821a4
FB
381During emulation, if you are using the @option{-nographic} option, use
382@key{Ctrl-a h} to get terminal commands:
ec410fc9
FB
383
384@table @key
a1b74fe8 385@item Ctrl-a h
ec410fc9 386Print this help
a1b74fe8 387@item Ctrl-a x
ec410fc9 388Exit emulatior
a1b74fe8 389@item Ctrl-a s
1f47a922 390Save disk data back to file (if -snapshot)
a1b74fe8 391@item Ctrl-a b
1f673135 392Send break (magic sysrq in Linux)
a1b74fe8 393@item Ctrl-a c
1f673135 394Switch between console and monitor
a1b74fe8
FB
395@item Ctrl-a Ctrl-a
396Send Ctrl-a
ec410fc9 397@end table
0806e3f6
FB
398@c man end
399
400@ignore
401
402@setfilename qemu
403@settitle QEMU System Emulator
404
1f673135
FB
405@c man begin SEEALSO
406The HTML documentation of QEMU for more precise information and Linux
407user mode emulator invocation.
408@c man end
409
410@c man begin AUTHOR
411Fabrice Bellard
412@c man end
413
414@end ignore
415
416@end ignore
417
1f673135
FB
418@section QEMU Monitor
419
420The QEMU monitor is used to give complex commands to the QEMU
421emulator. You can use it to:
422
423@itemize @minus
424
425@item
426Remove or insert removable medias images
427(such as CD-ROM or floppies)
428
429@item
430Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
431from a disk file.
432
433@item Inspect the VM state without an external debugger.
434
435@end itemize
436
437@subsection Commands
438
439The following commands are available:
440
441@table @option
442
443@item help or ? [cmd]
444Show the help for all commands or just for command @var{cmd}.
445
446@item commit
447Commit changes to the disk images (if -snapshot is used)
448
449@item info subcommand
450show various information about the system state
451
452@table @option
453@item info network
454show the network state
455@item info block
456show the block devices
457@item info registers
458show the cpu registers
459@item info history
460show the command line history
461@end table
462
463@item q or quit
464Quit the emulator.
465
466@item eject [-f] device
467Eject a removable media (use -f to force it).
468
469@item change device filename
470Change a removable media.
471
472@item screendump filename
473Save screen into PPM image @var{filename}.
474
475@item log item1[,...]
476Activate logging of the specified items to @file{/tmp/qemu.log}.
477
478@item savevm filename
479Save the whole virtual machine state to @var{filename}.
480
481@item loadvm filename
482Restore the whole virtual machine state from @var{filename}.
483
484@item stop
485Stop emulation.
486
487@item c or cont
488Resume emulation.
489
490@item gdbserver [port]
491Start gdbserver session (default port=1234)
492
493@item x/fmt addr
494Virtual memory dump starting at @var{addr}.
495
496@item xp /fmt addr
497Physical memory dump starting at @var{addr}.
498
499@var{fmt} is a format which tells the command how to format the
500data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
501
502@table @var
503@item count
504is the number of items to be dumped.
505
506@item format
507can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
508c (char) or i (asm instruction).
509
510@item size
52c00a5f
FB
511can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
512@code{h} or @code{w} can be specified with the @code{i} format to
513respectively select 16 or 32 bit code instruction size.
1f673135
FB
514
515@end table
516
517Examples:
518@itemize
519@item
520Dump 10 instructions at the current instruction pointer:
521@example
522(qemu) x/10i $eip
5230x90107063: ret
5240x90107064: sti
5250x90107065: lea 0x0(%esi,1),%esi
5260x90107069: lea 0x0(%edi,1),%edi
5270x90107070: ret
5280x90107071: jmp 0x90107080
5290x90107073: nop
5300x90107074: nop
5310x90107075: nop
5320x90107076: nop
533@end example
534
535@item
536Dump 80 16 bit values at the start of the video memory.
537@example
538(qemu) xp/80hx 0xb8000
5390x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
5400x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
5410x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
5420x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
5430x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
5440x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
5450x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
5460x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
5470x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
5480x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
549@end example
550@end itemize
551
552@item p or print/fmt expr
553
554Print expression value. Only the @var{format} part of @var{fmt} is
555used.
0806e3f6 556
a3a91a35
FB
557@item sendkey keys
558
559Send @var{keys} to the emulator. Use @code{-} to press several keys
560simultaneously. Example:
561@example
562sendkey ctrl-alt-f1
563@end example
564
565This command is useful to send keys that your graphical user interface
566intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
567
15a34c63
FB
568@item system_reset
569
570Reset the system.
571
1f673135 572@end table
0806e3f6 573
1f673135
FB
574@subsection Integer expressions
575
576The monitor understands integers expressions for every integer
577argument. You can use register names to get the value of specifics
578CPU registers by prefixing them with @emph{$}.
ec410fc9 579
1f47a922
FB
580@node disk_images
581@section Disk Images
582
acd935ef
FB
583Since version 0.6.1, QEMU supports many disk image formats, including
584growable disk images (their size increase as non empty sectors are
585written), compressed and encrypted disk images.
1f47a922 586
acd935ef
FB
587@subsection Quick start for disk image creation
588
589You can create a disk image with the command:
1f47a922 590@example
acd935ef 591qemu-img create myimage.img mysize
1f47a922 592@end example
acd935ef
FB
593where @var{myimage.img} is the disk image filename and @var{mysize} is its
594size in kilobytes. You can add an @code{M} suffix to give the size in
595megabytes and a @code{G} suffix for gigabytes.
596
597@xref{qemu_img_invocation} for more information.
1f47a922
FB
598
599@subsection Snapshot mode
600
601If you use the option @option{-snapshot}, all disk images are
602considered as read only. When sectors in written, they are written in
603a temporary file created in @file{/tmp}. You can however force the
acd935ef
FB
604write back to the raw disk images by using the @code{commit} monitor
605command (or @key{C-a s} in the serial console).
1f47a922 606
acd935ef
FB
607@node qemu_img_invocation
608@subsection @code{qemu-img} Invocation
1f47a922 609
acd935ef 610@include qemu-img.texi
05efe46e 611
9d4fb82e
FB
612@section Network emulation
613
614QEMU simulates up to 6 networks cards (NE2000 boards). Each card can
615be connected to a specific host network interface.
616
617@subsection Using tun/tap network interface
618
619This is the standard way to emulate network. QEMU adds a virtual
620network device on your host (called @code{tun0}), and you can then
621configure it as if it was a real ethernet card.
622
623As an example, you can download the @file{linux-test-xxx.tar.gz}
624archive and copy the script @file{qemu-ifup} in @file{/etc} and
625configure properly @code{sudo} so that the command @code{ifconfig}
626contained in @file{qemu-ifup} can be executed as root. You must verify
627that your host kernel supports the TUN/TAP network interfaces: the
628device @file{/dev/net/tun} must be present.
629
630See @ref{direct_linux_boot} to have an example of network use with a
631Linux distribution.
632
633@subsection Using the user mode network stack
634
443f1376
FB
635By using the option @option{-user-net} or if you have no tun/tap init
636script, QEMU uses a completely user mode network stack (you don't need
637root priviledge to use the virtual network). The virtual network
638configuration is the following:
9d4fb82e
FB
639
640@example
641
642QEMU Virtual Machine <------> Firewall/DHCP server <-----> Internet
643 (10.0.2.x) | (10.0.2.2)
644 |
2518bd0d
FB
645 ----> DNS server (10.0.2.3)
646 |
647 ----> SMB server (10.0.2.4)
9d4fb82e
FB
648@end example
649
650The QEMU VM behaves as if it was behind a firewall which blocks all
651incoming connections. You can use a DHCP client to automatically
652configure the network in the QEMU VM.
653
654In order to check that the user mode network is working, you can ping
655the address 10.0.2.2 and verify that you got an address in the range
65610.0.2.x from the QEMU virtual DHCP server.
657
b415a407
FB
658Note that @code{ping} is not supported reliably to the internet as it
659would require root priviledges. It means you can only ping the local
660router (10.0.2.2).
661
9bf05444
FB
662When using the built-in TFTP server, the router is also the TFTP
663server.
664
665When using the @option{-redir} option, TCP or UDP connections can be
666redirected from the host to the guest. It allows for example to
667redirect X11, telnet or SSH connections.
443f1376 668
9d4fb82e
FB
669@node direct_linux_boot
670@section Direct Linux Boot
1f673135
FB
671
672This section explains how to launch a Linux kernel inside QEMU without
673having to make a full bootable image. It is very useful for fast Linux
674kernel testing. The QEMU network configuration is also explained.
675
676@enumerate
677@item
678Download the archive @file{linux-test-xxx.tar.gz} containing a Linux
679kernel and a disk image.
680
681@item Optional: If you want network support (for example to launch X11 examples), you
682must copy the script @file{qemu-ifup} in @file{/etc} and configure
683properly @code{sudo} so that the command @code{ifconfig} contained in
684@file{qemu-ifup} can be executed as root. You must verify that your host
685kernel supports the TUN/TAP network interfaces: the device
686@file{/dev/net/tun} must be present.
687
688When network is enabled, there is a virtual network connection between
689the host kernel and the emulated kernel. The emulated kernel is seen
690from the host kernel at IP address 172.20.0.2 and the host kernel is
691seen from the emulated kernel at IP address 172.20.0.1.
692
693@item Launch @code{qemu.sh}. You should have the following output:
694
695@example
696> ./qemu.sh
697Connected to host network interface: tun0
698Linux 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
699BIOS-provided physical RAM map:
700 BIOS-e801: 0000000000000000 - 000000000009f000 (usable)
701 BIOS-e801: 0000000000100000 - 0000000002000000 (usable)
70232MB LOWMEM available.
703On node 0 totalpages: 8192
704zone(0): 4096 pages.
705zone(1): 4096 pages.
706zone(2): 0 pages.
707Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe console=ttyS0
708ide_setup: ide2=noprobe
709ide_setup: ide3=noprobe
710ide_setup: ide4=noprobe
711ide_setup: ide5=noprobe
712Initializing CPU#0
713Detected 2399.621 MHz processor.
714Console: colour EGA 80x25
715Calibrating delay loop... 4744.80 BogoMIPS
716Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data, 64k init, 0k highmem)
717Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
718Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
719Mount cache hash table entries: 512 (order: 0, 4096 bytes)
720Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
721Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
722CPU: Intel Pentium Pro stepping 03
723Checking 'hlt' instruction... OK.
724POSIX conformance testing by UNIFIX
725Linux NET4.0 for Linux 2.4
726Based upon Swansea University Computer Society NET3.039
727Initializing RT netlink socket
728apm: BIOS not found.
729Starting kswapd
730Journalled Block Device driver loaded
731Detected PS/2 Mouse Port.
732pty: 256 Unix98 ptys configured
733Serial driver version 5.05c (2001-07-08) with no serial options enabled
734ttyS00 at 0x03f8 (irq = 4) is a 16450
735ne.c:v1.10 9/23/94 Donald Becker (becker@scyld.com)
736Last modified Nov 1, 2000 by Paul Gortmaker
737NE*000 ethercard probe at 0x300: 52 54 00 12 34 56
738eth0: NE2000 found at 0x300, using IRQ 9.
739RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
740Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
741ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
742hda: QEMU HARDDISK, ATA DISK drive
743ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
744hda: attached ide-disk driver.
745hda: 20480 sectors (10 MB) w/256KiB Cache, CHS=20/16/63
746Partition check:
747 hda:
748Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996
749NET4: Linux TCP/IP 1.0 for NET4.0
750IP Protocols: ICMP, UDP, TCP, IGMP
751IP: routing cache hash table of 512 buckets, 4Kbytes
752TCP: Hash tables configured (established 2048 bind 4096)
753NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
754EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
755VFS: Mounted root (ext2 filesystem).
756Freeing unused kernel memory: 64k freed
757
758Linux 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
759
760QEMU Linux test distribution (based on Redhat 9)
761
762Type 'exit' to halt the system
763
764sh-2.05b#
765@end example
766
767@item
768Then you can play with the kernel inside the virtual serial console. You
769can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help
770about the keys you can type inside the virtual serial console. In
771particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as
772the Magic SysRq key.
773
774@item
775If the network is enabled, launch the script @file{/etc/linuxrc} in the
776emulator (don't forget the leading dot):
777@example
778. /etc/linuxrc
779@end example
780
781Then enable X11 connections on your PC from the emulated Linux:
782@example
783xhost +172.20.0.2
784@end example
785
786You can now launch @file{xterm} or @file{xlogo} and verify that you have
787a real Virtual Linux system !
788
789@end enumerate
790
791NOTES:
792@enumerate
793@item
794A 2.5.74 kernel is also included in the archive. Just
795replace the bzImage in qemu.sh to try it.
796
1f673135
FB
797@item
798In order to exit cleanly from qemu, you can do a @emph{shutdown} inside
799qemu. qemu will automatically exit when the Linux shutdown is done.
800
801@item
802You can boot slightly faster by disabling the probe of non present IDE
803interfaces. To do so, add the following options on the kernel command
804line:
805@example
806ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
807@end example
808
809@item
810The example disk image is a modified version of the one made by Kevin
811Lawton for the plex86 Project (@url{www.plex86.org}).
812
813@end enumerate
814
0806e3f6 815@node gdb_usage
da415d54
FB
816@section GDB usage
817
818QEMU has a primitive support to work with gdb, so that you can do
0806e3f6 819'Ctrl-C' while the virtual machine is running and inspect its state.
da415d54 820
9d4520d0 821In order to use gdb, launch qemu with the '-s' option. It will wait for a
da415d54
FB
822gdb connection:
823@example
6c9bf893 824> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
da415d54
FB
825Connected to host network interface: tun0
826Waiting gdb connection on port 1234
827@end example
828
829Then launch gdb on the 'vmlinux' executable:
830@example
831> gdb vmlinux
832@end example
833
834In gdb, connect to QEMU:
835@example
6c9bf893 836(gdb) target remote localhost:1234
da415d54
FB
837@end example
838
839Then you can use gdb normally. For example, type 'c' to launch the kernel:
840@example
841(gdb) c
842@end example
843
0806e3f6
FB
844Here are some useful tips in order to use gdb on system code:
845
846@enumerate
847@item
848Use @code{info reg} to display all the CPU registers.
849@item
850Use @code{x/10i $eip} to display the code at the PC position.
851@item
852Use @code{set architecture i8086} to dump 16 bit code. Then use
853@code{x/10i $cs*16+*eip} to dump the code at the PC position.
854@end enumerate
855
1a084f3d
FB
856@section Target OS specific information
857
858@subsection Linux
859
15a34c63
FB
860To have access to SVGA graphic modes under X11, use the @code{vesa} or
861the @code{cirrus} X11 driver. For optimal performances, use 16 bit
862color depth in the guest and the host OS.
1a084f3d 863
e3371e62
FB
864When using a 2.6 guest Linux kernel, you should add the option
865@code{clock=pit} on the kernel command line because the 2.6 Linux
866kernels make very strict real time clock checks by default that QEMU
867cannot simulate exactly.
868
7c3fc84d
FB
869When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
870not activated because QEMU is slower with this patch. The QEMU
871Accelerator Module is also much slower in this case. Earlier Fedora
872Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporte this
873patch by default. Newer kernels don't have it.
874
1a084f3d
FB
875@subsection Windows
876
877If you have a slow host, using Windows 95 is better as it gives the
878best speed. Windows 2000 is also a good choice.
879
e3371e62
FB
880@subsubsection SVGA graphic modes support
881
882QEMU emulates a Cirrus Logic GD5446 Video
15a34c63
FB
883card. All Windows versions starting from Windows 95 should recognize
884and use this graphic card. For optimal performances, use 16 bit color
885depth in the guest and the host OS.
1a084f3d 886
e3371e62
FB
887@subsubsection CPU usage reduction
888
889Windows 9x does not correctly use the CPU HLT
15a34c63
FB
890instruction. The result is that it takes host CPU cycles even when
891idle. You can install the utility from
892@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
893problem. Note that no such tool is needed for NT, 2000 or XP.
1a084f3d 894
e3371e62
FB
895@subsubsection Windows 2000 disk full problems
896
897Currently (release 0.6.0) QEMU has a bug which gives a @code{disk
898full} error during installation of some releases of Windows 2000. The
899workaround is to stop QEMU as soon as you notice that your disk image
900size is growing too fast (monitor it with @code{ls -ls}). Then
901relaunch QEMU to continue the installation. If you still experience
902the problem, relaunch QEMU again.
903
904Future QEMU releases are likely to correct this bug.
905
906@subsubsection Windows XP security problems
907
908Some releases of Windows XP install correctly but give a security
909error when booting:
910@example
911A problem is preventing Windows from accurately checking the
912license for this computer. Error code: 0x800703e6.
913@end example
914The only known workaround is to boot in Safe mode
915without networking support.
916
917Future QEMU releases are likely to correct this bug.
918
a0a821a4
FB
919@subsection MS-DOS and FreeDOS
920
921@subsubsection CPU usage reduction
922
923DOS does not correctly use the CPU HLT instruction. The result is that
924it takes host CPU cycles even when idle. You can install the utility
925from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
926problem.
927
15a34c63 928@chapter QEMU PowerPC System emulator invocation
1a084f3d 929
15a34c63
FB
930Use the executable @file{qemu-system-ppc} to simulate a complete PREP
931or PowerMac PowerPC system.
1a084f3d 932
b671f9ed 933QEMU emulates the following PowerMac peripherals:
1a084f3d 934
15a34c63
FB
935@itemize @minus
936@item
937UniNorth PCI Bridge
938@item
939PCI VGA compatible card with VESA Bochs Extensions
940@item
9412 PMAC IDE interfaces with hard disk and CD-ROM support
942@item
943NE2000 PCI adapters
944@item
945Non Volatile RAM
946@item
947VIA-CUDA with ADB keyboard and mouse.
1a084f3d
FB
948@end itemize
949
b671f9ed 950QEMU emulates the following PREP peripherals:
52c00a5f
FB
951
952@itemize @minus
953@item
15a34c63
FB
954PCI Bridge
955@item
956PCI VGA compatible card with VESA Bochs Extensions
957@item
52c00a5f
FB
9582 IDE interfaces with hard disk and CD-ROM support
959@item
960Floppy disk
961@item
15a34c63 962NE2000 network adapters
52c00a5f
FB
963@item
964Serial port
965@item
966PREP Non Volatile RAM
15a34c63
FB
967@item
968PC compatible keyboard and mouse.
52c00a5f
FB
969@end itemize
970
15a34c63
FB
971QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
972@url{http://site.voila.fr/jmayer/OpenHackWare/index.htm}.
973
52c00a5f
FB
974You can read the qemu PC system emulation chapter to have more
975informations about QEMU usage.
976
15a34c63
FB
977@c man begin OPTIONS
978
979The following options are specific to the PowerPC emulation:
980
981@table @option
982
983@item -prep
984Simulate a PREP system (default is PowerMAC)
985
986@item -g WxH[xDEPTH]
987
988Set the initial VGA graphic mode. The default is 800x600x15.
989
990@end table
991
992@c man end
993
994
52c00a5f
FB
995More information is available at
996@url{http://jocelyn.mayer.free.fr/qemu-ppc/}.
997
e80cfcfc
FB
998@chapter Sparc System emulator invocation
999
1000Use the executable @file{qemu-system-sparc} to simulate a JavaStation
1001(sun4m architecture). The emulation is far from complete.
1002
b671f9ed 1003QEMU emulates the following sun4m peripherals:
e80cfcfc
FB
1004
1005@itemize @minus
1006@item
1007IOMMU
1008@item
1009TCX Frame buffer
1010@item
1011Lance (Am7990) Ethernet
1012@item
1013Non Volatile RAM M48T08
1014@item
1015Slave I/O: timers, interrupt controllers, Zilog serial ports
1016@end itemize
1017
1018QEMU uses the Proll, a PROM replacement available at
1019@url{http://people.redhat.com/zaitcev/linux/}.
1020
b756921a
FB
1021A sample Linux kernel and ram disk image are available on the QEMU web
1022site.
1023
1f673135 1024@chapter QEMU User space emulator invocation
386405f7 1025
1f673135 1026@section Quick Start
df0f11a0 1027
1f673135
FB
1028In order to launch a Linux process, QEMU needs the process executable
1029itself and all the target (x86) dynamic libraries used by it.
386405f7 1030
1f673135 1031@itemize
386405f7 1032
1f673135
FB
1033@item On x86, you can just try to launch any process by using the native
1034libraries:
386405f7 1035
1f673135
FB
1036@example
1037qemu-i386 -L / /bin/ls
1038@end example
386405f7 1039
1f673135
FB
1040@code{-L /} tells that the x86 dynamic linker must be searched with a
1041@file{/} prefix.
386405f7 1042
1f673135 1043@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):
386405f7 1044
1f673135
FB
1045@example
1046qemu-i386 -L / qemu-i386 -L / /bin/ls
1047@end example
386405f7 1048
1f673135
FB
1049@item On non x86 CPUs, you need first to download at least an x86 glibc
1050(@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
1051@code{LD_LIBRARY_PATH} is not set:
df0f11a0 1052
1f673135
FB
1053@example
1054unset LD_LIBRARY_PATH
1055@end example
1eb87257 1056
1f673135 1057Then you can launch the precompiled @file{ls} x86 executable:
1eb87257 1058
1f673135
FB
1059@example
1060qemu-i386 tests/i386/ls
1061@end example
1062You can look at @file{qemu-binfmt-conf.sh} so that
1063QEMU is automatically launched by the Linux kernel when you try to
1064launch x86 executables. It requires the @code{binfmt_misc} module in the
1065Linux kernel.
1eb87257 1066
1f673135
FB
1067@item The x86 version of QEMU is also included. You can try weird things such as:
1068@example
1069qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1070@end example
1eb20527 1071
1f673135 1072@end itemize
1eb20527 1073
1f673135 1074@section Wine launch
1eb20527 1075
1f673135 1076@itemize
386405f7 1077
1f673135
FB
1078@item Ensure that you have a working QEMU with the x86 glibc
1079distribution (see previous section). In order to verify it, you must be
1080able to do:
386405f7 1081
1f673135
FB
1082@example
1083qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1084@end example
386405f7 1085
1f673135
FB
1086@item Download the binary x86 Wine install
1087(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
386405f7 1088
1f673135
FB
1089@item Configure Wine on your account. Look at the provided script
1090@file{/usr/local/qemu-i386/bin/wine-conf.sh}. Your previous
1091@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
386405f7 1092
1f673135 1093@item Then you can try the example @file{putty.exe}:
386405f7 1094
1f673135
FB
1095@example
1096qemu-i386 /usr/local/qemu-i386/wine/bin/wine /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1097@end example
386405f7 1098
1f673135 1099@end itemize
fd429f2f 1100
1f673135 1101@section Command line options
1eb20527 1102
1f673135
FB
1103@example
1104usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1105@end example
1eb20527 1106
1f673135
FB
1107@table @option
1108@item -h
1109Print the help
1110@item -L path
1111Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1112@item -s size
1113Set the x86 stack size in bytes (default=524288)
386405f7
FB
1114@end table
1115
1f673135 1116Debug options:
386405f7 1117
1f673135
FB
1118@table @option
1119@item -d
1120Activate log (logfile=/tmp/qemu.log)
1121@item -p pagesize
1122Act as if the host page size was 'pagesize' bytes
1123@end table
386405f7 1124
15a34c63
FB
1125@node compilation
1126@chapter Compilation from the sources
1127
7c3fc84d
FB
1128@section Linux/Unix
1129
1130@subsection Compilation
1131
1132First you must decompress the sources:
1133@example
1134cd /tmp
1135tar zxvf qemu-x.y.z.tar.gz
1136cd qemu-x.y.z
1137@end example
1138
1139Then you configure QEMU and build it (usually no options are needed):
1140@example
1141./configure
1142make
1143@end example
1144
1145Then type as root user:
1146@example
1147make install
1148@end example
1149to install QEMU in @file{/usr/local}.
1150
7c3fc84d
FB
1151@subsection Tested tool versions
1152
1153In order to compile QEMU succesfully, it is very important that you
1154have the right tools. The most important one is gcc. I cannot guaranty
1155that QEMU works if you do not use a tested gcc version. Look at
1156'configure' and 'Makefile' if you want to make a different gcc
1157version work.
1158
1159@example
1160host gcc binutils glibc linux distribution
1161----------------------------------------------------------------------
1162x86 3.2 2.13.2 2.1.3 2.4.18
1163 2.96 2.11.93.0.2 2.2.5 2.4.18 Red Hat 7.3
1164 3.2.2 2.13.90.0.18 2.3.2 2.4.20 Red Hat 9
1165
1166PowerPC 3.3 [4] 2.13.90.0.18 2.3.1 2.4.20briq
1167 3.2
1168
1169Alpha 3.3 [1] 2.14.90.0.4 2.2.5 2.2.20 [2] Debian 3.0
1170
1171Sparc32 2.95.4 2.12.90.0.1 2.2.5 2.4.18 Debian 3.0
1172
1173ARM 2.95.4 2.12.90.0.1 2.2.5 2.4.9 [3] Debian 3.0
1174
1175[1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
1176 for gcc version >= 3.3.
1177[2] Linux >= 2.4.20 is necessary for precise exception support
1178 (untested).
1179[3] 2.4.9-ac10-rmk2-np1-cerf2
1180
1181[4] gcc 2.95.x generates invalid code when using too many register
1182variables. You must use gcc 3.x on PowerPC.
1183@end example
15a34c63
FB
1184
1185@section Windows
1186
1187@itemize
1188@item Install the current versions of MSYS and MinGW from
1189@url{http://www.mingw.org/}. You can find detailed installation
1190instructions in the download section and the FAQ.
1191
1192@item Download
1193the MinGW development library of SDL 1.2.x
1194(@file{SDL-devel-1.2.x-mingw32.tar.gz}) from
1195@url{http://www.libsdl.org}. Unpack it in a temporary place, and
1196unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1197directory. Edit the @file{sdl-config} script so that it gives the
1198correct SDL directory when invoked.
1199
1200@item Extract the current version of QEMU.
1201
1202@item Start the MSYS shell (file @file{msys.bat}).
1203
1204@item Change to the QEMU directory. Launch @file{./configure} and
1205@file{make}. If you have problems using SDL, verify that
1206@file{sdl-config} can be launched from the MSYS command line.
1207
1208@item You can install QEMU in @file{Program Files/Qemu} by typing
1209@file{make install}. Don't forget to copy @file{SDL.dll} in
1210@file{Program Files/Qemu}.
1211
1212@end itemize
1213
1214@section Cross compilation for Windows with Linux
1215
1216@itemize
1217@item
1218Install the MinGW cross compilation tools available at
1219@url{http://www.mingw.org/}.
1220
1221@item
1222Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1223unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1224variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1225the QEMU configuration script.
1226
1227@item
1228Configure QEMU for Windows cross compilation:
1229@example
1230./configure --enable-mingw32
1231@end example
1232If necessary, you can change the cross-prefix according to the prefix
1233choosen for the MinGW tools with --cross-prefix. You can also use
1234--prefix to set the Win32 install path.
1235
1236@item You can install QEMU in the installation directory by typing
1237@file{make install}. Don't forget to copy @file{SDL.dll} in the
1238installation directory.
1239
1240@end itemize
1241
1242Note: Currently, Wine does not seem able to launch
1243QEMU for Win32.
1244
1245@section Mac OS X
1246
1247The Mac OS X patches are not fully merged in QEMU, so you should look
1248at the QEMU mailing list archive to have all the necessary
1249information.
1250