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