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