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