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