1 \input texinfo @c -*- texinfo -*-
4 @settitle QEMU CPU Emulator User Documentation
7 @center @titlefont{QEMU CPU Emulator User Documentation}
16 QEMU is a FAST! processor emulator using dynamic translation to
17 achieve good emulation speed.
19 QEMU has two operating modes:
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.
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.
37 QEMU can run without an host kernel driver and yet gives acceptable
40 For system emulation, the following hardware targets are supported:
42 @item PC (x86 processor)
43 @item PREP (PowerPC processor)
44 @item PowerMac (PowerPC processor, in progress)
45 @item Sun4m (32-bit Sparc processor)
46 @item Sun4u (64-bit Sparc processor, in progress)
49 For user emulation, x86, PowerPC, ARM, and Sparc32/64 CPUs are supported.
53 If you want to compile QEMU yourself, see @ref{compilation}.
57 If a precompiled package is available for your distribution - you just
58 have to install it. Otherwise, see @ref{compilation}.
62 Download the experimental binary installer at
63 @url{http://www.freeoszoo.org/download.php}.
67 Download the experimental binary installer at
68 @url{http://www.freeoszoo.org/download.php}.
70 @chapter QEMU PC System emulator invocation
74 @c man begin DESCRIPTION
76 The QEMU System emulator simulates the
77 following PC peripherals:
81 i440FX host PCI bridge and PIIX3 PCI to ISA bridge
83 Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
84 extensions (hardware level, including all non standard modes).
86 PS/2 mouse and keyboard
88 2 PCI IDE interfaces with hard disk and CD-ROM support
92 NE2000 PCI network adapters
99 QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
106 Download and uncompress the linux image (@file{linux.img}) and type:
112 Linux should boot and give you a prompt.
117 @c man begin SYNOPSIS
118 usage: qemu [options] [disk_image]
123 @var{disk_image} is a raw hard disk image for IDE hard disk 0.
129 Use @var{file} as floppy disk 0/1 image (@xref{disk_images}). You can
130 use the host floppy by using @file{/dev/fd0} as filename.
136 Use @var{file} as hard disk 0, 1, 2 or 3 image (@xref{disk_images}).
139 Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and
140 @option{-cdrom} at the same time). You can use the host CD-ROM by
141 using @file{/dev/cdrom} as filename.
144 Boot on floppy (a), hard disk (c) or CD-ROM (d). Hard disk boot is
148 Write to temporary files instead of disk image files. In this case,
149 the raw disk image you use is not written back. You can however force
150 the write back by pressing @key{C-a s} (@xref{disk_images}).
153 Set virtual RAM size to @var{megs} megabytes. Default is 128 MB.
157 Normally, QEMU uses SDL to display the VGA output. With this option,
158 you can totally disable graphical output so that QEMU is a simple
159 command line application. The emulated serial port is redirected on
160 the console. Therefore, you can still use QEMU to debug a Linux kernel
161 with a serial console.
165 Use keyboard layout @var{language} (for example @code{fr} for
166 French). This option is only needed where it is not easy to get raw PC
167 keycodes (e.g. on Macs or with some X11 servers). You don't need to
168 use it on PC/Linux or PC/Windows hosts.
170 The available layouts are:
172 ar de-ch es fo fr-ca hu ja mk no pt-br sv
173 da en-gb et fr fr-ch is lt nl pl ru th
174 de en-us fi fr-be hr it lv nl-be pt sl tr
177 The default is @code{en-us}.
181 The SB16 emulation is disabled by default as it may give problems with
182 Windows. You can enable it manually with this option.
185 Set the real time clock to local time (the default is to UTC
186 time). This option is needed to have correct date in MS-DOS or
190 Start in full screen.
193 Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
203 Set TUN/TAP network init script [default=/etc/qemu-ifup]. This script
204 is launched to configure the host network interface (usually tun0)
205 corresponding to the virtual NE2000 card.
209 Simulate @var{n} network cards (the default is 1).
213 Set the mac address of the first interface (the format is
214 aa:bb:cc:dd:ee:ff in hexa). The mac address is incremented for each
215 new network interface.
218 Assumes @var{fd} talks to a tap/tun host network interface and use
219 it. Read @url{http://bellard.org/qemu/tetrinet.html} to have an
223 Use the user mode network stack. This is the default if no tun/tap
224 network init script is found.
227 When using the user mode network stack, activate a built-in TFTP
228 server. All filenames beginning with @var{prefix} can be downloaded
229 from the host to the guest using a TFTP client. The TFTP client on the
230 guest must be configured in binary mode (use the command @code{bin} of
231 the Unix TFTP client). The host IP address on the guest is as usual
235 When using the user mode network stack, activate a built-in SMB
236 server so that Windows OSes can access to the host files in @file{dir}
239 In the guest Windows OS, the line:
243 must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
244 or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
246 Then @file{dir} can be accessed in @file{\\smbserver\qemu}.
248 Note that a SAMBA server must be installed on the host OS in
249 @file{/usr/sbin/smbd}. QEMU was tested succesfully with smbd version
250 2.2.7a from the Red Hat 9.
252 @item -redir [tcp|udp]:host-port:[guest-host]:guest-port
254 When using the user mode network stack, redirect incoming TCP or UDP
255 connections to the host port @var{host-port} to the guest
256 @var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
257 is not specified, its value is 10.0.2.15 (default address given by the
258 built-in DHCP server).
260 For example, to redirect host X11 connection from screen 1 to guest
261 screen 0, use the following:
265 qemu -redir tcp:6001::6000 [...]
266 # this host xterm should open in the guest X11 server
270 To redirect telnet connections from host port 5555 to telnet port on
271 the guest, use the following:
275 qemu -redir tcp:5555::23 [...]
276 telnet localhost 5555
279 Then when you use on the host @code{telnet localhost 5555}, you
280 connect to the guest telnet server.
283 Use the dummy network stack: no packet will be received by the network
288 Linux boot specific. When using this options, you can use a given
289 Linux kernel without installing it in the disk image. It can be useful
290 for easier testing of various kernels.
294 @item -kernel bzImage
295 Use @var{bzImage} as kernel image.
297 @item -append cmdline
298 Use @var{cmdline} as kernel command line
301 Use @var{file} as initial ram disk.
305 Debug/Expert options:
309 Redirect the virtual serial port to host device @var{dev}. Available
315 [Linux only] Pseudo TTY (a new PTY is automatically allocated)
319 [Unix only] standard input/output
321 The default device is @code{vc} in graphical mode and @code{stdio} in
324 This option can be used several times to simulate up to 4 serials
328 Redirect the monitor to host device @var{dev} (same devices as the
330 The default device is @code{vc} in graphical mode and @code{stdio} in
334 Wait gdb connection to port 1234 (@xref{gdb_usage}).
336 Change gdb connection port.
338 Do not start CPU at startup (you must type 'c' in the monitor).
340 Output log in /tmp/qemu.log
341 @item -hdachs c,h,s,[,t]
342 Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
343 @var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
344 translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
345 all thoses parameters. This option is useful for old MS-DOS disk
349 Simulate an ISA-only system (default is PCI system).
351 Simulate a standard VGA card with Bochs VBE extensions (default is
352 Cirrus Logic GD5446 PCI VGA)
354 Start right away with a saved state (@code{loadvm} in monitor)
363 During the graphical emulation, you can use the following keys:
369 Switch to virtual console 'n'. Standard console mappings are:
372 Target system display
380 Toggle mouse and keyboard grab.
383 In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
384 @key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
386 During emulation, if you are using the @option{-nographic} option, use
387 @key{Ctrl-a h} to get terminal commands:
395 Save disk data back to file (if -snapshot)
397 Send break (magic sysrq in Linux)
399 Switch between console and monitor
408 @settitle QEMU System Emulator
411 The HTML documentation of QEMU for more precise information and Linux
412 user mode emulator invocation.
423 @section QEMU Monitor
425 The QEMU monitor is used to give complex commands to the QEMU
426 emulator. You can use it to:
431 Remove or insert removable medias images
432 (such as CD-ROM or floppies)
435 Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
438 @item Inspect the VM state without an external debugger.
444 The following commands are available:
448 @item help or ? [cmd]
449 Show the help for all commands or just for command @var{cmd}.
452 Commit changes to the disk images (if -snapshot is used)
454 @item info subcommand
455 show various information about the system state
459 show the network state
461 show the block devices
463 show the cpu registers
465 show the command line history
471 @item eject [-f] device
472 Eject a removable media (use -f to force it).
474 @item change device filename
475 Change a removable media.
477 @item screendump filename
478 Save screen into PPM image @var{filename}.
480 @item log item1[,...]
481 Activate logging of the specified items to @file{/tmp/qemu.log}.
483 @item savevm filename
484 Save the whole virtual machine state to @var{filename}.
486 @item loadvm filename
487 Restore the whole virtual machine state from @var{filename}.
495 @item gdbserver [port]
496 Start gdbserver session (default port=1234)
499 Virtual memory dump starting at @var{addr}.
502 Physical memory dump starting at @var{addr}.
504 @var{fmt} is a format which tells the command how to format the
505 data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
509 is the number of items to be dumped.
512 can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal),
513 c (char) or i (asm instruction).
516 can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
517 @code{h} or @code{w} can be specified with the @code{i} format to
518 respectively select 16 or 32 bit code instruction size.
525 Dump 10 instructions at the current instruction pointer:
530 0x90107065: lea 0x0(%esi,1),%esi
531 0x90107069: lea 0x0(%edi,1),%edi
533 0x90107071: jmp 0x90107080
541 Dump 80 16 bit values at the start of the video memory.
543 (qemu) xp/80hx 0xb8000
544 0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
545 0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
546 0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
547 0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
548 0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
549 0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
550 0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
551 0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
552 0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
553 0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
557 @item p or print/fmt expr
559 Print expression value. Only the @var{format} part of @var{fmt} is
564 Send @var{keys} to the emulator. Use @code{-} to press several keys
565 simultaneously. Example:
570 This command is useful to send keys that your graphical user interface
571 intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
579 @subsection Integer expressions
581 The monitor understands integers expressions for every integer
582 argument. You can use register names to get the value of specifics
583 CPU registers by prefixing them with @emph{$}.
588 Since version 0.6.1, QEMU supports many disk image formats, including
589 growable disk images (their size increase as non empty sectors are
590 written), compressed and encrypted disk images.
592 @subsection Quick start for disk image creation
594 You can create a disk image with the command:
596 qemu-img create myimage.img mysize
598 where @var{myimage.img} is the disk image filename and @var{mysize} is its
599 size in kilobytes. You can add an @code{M} suffix to give the size in
600 megabytes and a @code{G} suffix for gigabytes.
602 @xref{qemu_img_invocation} for more information.
604 @subsection Snapshot mode
606 If you use the option @option{-snapshot}, all disk images are
607 considered as read only. When sectors in written, they are written in
608 a temporary file created in @file{/tmp}. You can however force the
609 write back to the raw disk images by using the @code{commit} monitor
610 command (or @key{C-a s} in the serial console).
612 @node qemu_img_invocation
613 @subsection @code{qemu-img} Invocation
615 @include qemu-img.texi
617 @section Network emulation
619 QEMU simulates up to 6 networks cards (NE2000 boards). Each card can
620 be connected to a specific host network interface.
622 @subsection Using tun/tap network interface
624 This is the standard way to emulate network. QEMU adds a virtual
625 network device on your host (called @code{tun0}), and you can then
626 configure it as if it was a real ethernet card.
628 As an example, you can download the @file{linux-test-xxx.tar.gz}
629 archive and copy the script @file{qemu-ifup} in @file{/etc} and
630 configure properly @code{sudo} so that the command @code{ifconfig}
631 contained in @file{qemu-ifup} can be executed as root. You must verify
632 that your host kernel supports the TUN/TAP network interfaces: the
633 device @file{/dev/net/tun} must be present.
635 See @ref{direct_linux_boot} to have an example of network use with a
638 @subsection Using the user mode network stack
640 By using the option @option{-user-net} or if you have no tun/tap init
641 script, QEMU uses a completely user mode network stack (you don't need
642 root priviledge to use the virtual network). The virtual network
643 configuration is the following:
647 QEMU Virtual Machine <------> Firewall/DHCP server <-----> Internet
648 (10.0.2.x) | (10.0.2.2)
650 ----> DNS server (10.0.2.3)
652 ----> SMB server (10.0.2.4)
655 The QEMU VM behaves as if it was behind a firewall which blocks all
656 incoming connections. You can use a DHCP client to automatically
657 configure the network in the QEMU VM.
659 In order to check that the user mode network is working, you can ping
660 the address 10.0.2.2 and verify that you got an address in the range
661 10.0.2.x from the QEMU virtual DHCP server.
663 Note that @code{ping} is not supported reliably to the internet as it
664 would require root priviledges. It means you can only ping the local
667 When using the built-in TFTP server, the router is also the TFTP
670 When using the @option{-redir} option, TCP or UDP connections can be
671 redirected from the host to the guest. It allows for example to
672 redirect X11, telnet or SSH connections.
674 @node direct_linux_boot
675 @section Direct Linux Boot
677 This section explains how to launch a Linux kernel inside QEMU without
678 having to make a full bootable image. It is very useful for fast Linux
679 kernel testing. The QEMU network configuration is also explained.
683 Download the archive @file{linux-test-xxx.tar.gz} containing a Linux
684 kernel and a disk image.
686 @item Optional: If you want network support (for example to launch X11 examples), you
687 must copy the script @file{qemu-ifup} in @file{/etc} and configure
688 properly @code{sudo} so that the command @code{ifconfig} contained in
689 @file{qemu-ifup} can be executed as root. You must verify that your host
690 kernel supports the TUN/TAP network interfaces: the device
691 @file{/dev/net/tun} must be present.
693 When network is enabled, there is a virtual network connection between
694 the host kernel and the emulated kernel. The emulated kernel is seen
695 from the host kernel at IP address 172.20.0.2 and the host kernel is
696 seen from the emulated kernel at IP address 172.20.0.1.
698 @item Launch @code{qemu.sh}. You should have the following output:
702 Connected to host network interface: tun0
703 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
704 BIOS-provided physical RAM map:
705 BIOS-e801: 0000000000000000 - 000000000009f000 (usable)
706 BIOS-e801: 0000000000100000 - 0000000002000000 (usable)
707 32MB LOWMEM available.
708 On node 0 totalpages: 8192
712 Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe console=ttyS0
713 ide_setup: ide2=noprobe
714 ide_setup: ide3=noprobe
715 ide_setup: ide4=noprobe
716 ide_setup: ide5=noprobe
718 Detected 2399.621 MHz processor.
719 Console: colour EGA 80x25
720 Calibrating delay loop... 4744.80 BogoMIPS
721 Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data, 64k init, 0k highmem)
722 Dentry cache hash table entries: 4096 (order: 3, 32768 bytes)
723 Inode cache hash table entries: 2048 (order: 2, 16384 bytes)
724 Mount cache hash table entries: 512 (order: 0, 4096 bytes)
725 Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
726 Page-cache hash table entries: 8192 (order: 3, 32768 bytes)
727 CPU: Intel Pentium Pro stepping 03
728 Checking 'hlt' instruction... OK.
729 POSIX conformance testing by UNIFIX
730 Linux NET4.0 for Linux 2.4
731 Based upon Swansea University Computer Society NET3.039
732 Initializing RT netlink socket
735 Journalled Block Device driver loaded
736 Detected PS/2 Mouse Port.
737 pty: 256 Unix98 ptys configured
738 Serial driver version 5.05c (2001-07-08) with no serial options enabled
739 ttyS00 at 0x03f8 (irq = 4) is a 16450
741 Last modified Nov 1, 2000 by Paul Gortmaker
742 NE*000 ethercard probe at 0x300: 52 54 00 12 34 56
743 eth0: NE2000 found at 0x300, using IRQ 9.
744 RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
745 Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
746 ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx
747 hda: QEMU HARDDISK, ATA DISK drive
748 ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
749 hda: attached ide-disk driver.
750 hda: 20480 sectors (10 MB) w/256KiB Cache, CHS=20/16/63
753 Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996
754 NET4: Linux TCP/IP 1.0 for NET4.0
755 IP Protocols: ICMP, UDP, TCP, IGMP
756 IP: routing cache hash table of 512 buckets, 4Kbytes
757 TCP: Hash tables configured (established 2048 bind 4096)
758 NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
759 EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
760 VFS: Mounted root (ext2 filesystem).
761 Freeing unused kernel memory: 64k freed
763 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
765 QEMU Linux test distribution (based on Redhat 9)
767 Type 'exit' to halt the system
773 Then you can play with the kernel inside the virtual serial console. You
774 can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help
775 about the keys you can type inside the virtual serial console. In
776 particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as
780 If the network is enabled, launch the script @file{/etc/linuxrc} in the
781 emulator (don't forget the leading dot):
786 Then enable X11 connections on your PC from the emulated Linux:
791 You can now launch @file{xterm} or @file{xlogo} and verify that you have
792 a real Virtual Linux system !
799 A 2.5.74 kernel is also included in the archive. Just
800 replace the bzImage in qemu.sh to try it.
803 In order to exit cleanly from qemu, you can do a @emph{shutdown} inside
804 qemu. qemu will automatically exit when the Linux shutdown is done.
807 You can boot slightly faster by disabling the probe of non present IDE
808 interfaces. To do so, add the following options on the kernel command
811 ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe
815 The example disk image is a modified version of the one made by Kevin
816 Lawton for the plex86 Project (@url{www.plex86.org}).
823 QEMU has a primitive support to work with gdb, so that you can do
824 'Ctrl-C' while the virtual machine is running and inspect its state.
826 In order to use gdb, launch qemu with the '-s' option. It will wait for a
829 > qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
830 Connected to host network interface: tun0
831 Waiting gdb connection on port 1234
834 Then launch gdb on the 'vmlinux' executable:
839 In gdb, connect to QEMU:
841 (gdb) target remote localhost:1234
844 Then you can use gdb normally. For example, type 'c' to launch the kernel:
849 Here are some useful tips in order to use gdb on system code:
853 Use @code{info reg} to display all the CPU registers.
855 Use @code{x/10i $eip} to display the code at the PC position.
857 Use @code{set architecture i8086} to dump 16 bit code. Then use
858 @code{x/10i $cs*16+*eip} to dump the code at the PC position.
861 @section Target OS specific information
865 To have access to SVGA graphic modes under X11, use the @code{vesa} or
866 the @code{cirrus} X11 driver. For optimal performances, use 16 bit
867 color depth in the guest and the host OS.
869 When using a 2.6 guest Linux kernel, you should add the option
870 @code{clock=pit} on the kernel command line because the 2.6 Linux
871 kernels make very strict real time clock checks by default that QEMU
872 cannot simulate exactly.
874 When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
875 not activated because QEMU is slower with this patch. The QEMU
876 Accelerator Module is also much slower in this case. Earlier Fedora
877 Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporte this
878 patch by default. Newer kernels don't have it.
882 If you have a slow host, using Windows 95 is better as it gives the
883 best speed. Windows 2000 is also a good choice.
885 @subsubsection SVGA graphic modes support
887 QEMU emulates a Cirrus Logic GD5446 Video
888 card. All Windows versions starting from Windows 95 should recognize
889 and use this graphic card. For optimal performances, use 16 bit color
890 depth in the guest and the host OS.
892 @subsubsection CPU usage reduction
894 Windows 9x does not correctly use the CPU HLT
895 instruction. The result is that it takes host CPU cycles even when
896 idle. You can install the utility from
897 @url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
898 problem. Note that no such tool is needed for NT, 2000 or XP.
900 @subsubsection Windows 2000 disk full problems
902 Currently (release 0.6.0) QEMU has a bug which gives a @code{disk
903 full} error during installation of some releases of Windows 2000. The
904 workaround is to stop QEMU as soon as you notice that your disk image
905 size is growing too fast (monitor it with @code{ls -ls}). Then
906 relaunch QEMU to continue the installation. If you still experience
907 the problem, relaunch QEMU again.
909 Future QEMU releases are likely to correct this bug.
911 @subsubsection Windows XP security problems
913 Some releases of Windows XP install correctly but give a security
916 A problem is preventing Windows from accurately checking the
917 license for this computer. Error code: 0x800703e6.
919 The only known workaround is to boot in Safe mode
920 without networking support.
922 Future QEMU releases are likely to correct this bug.
924 @subsection MS-DOS and FreeDOS
926 @subsubsection CPU usage reduction
928 DOS does not correctly use the CPU HLT instruction. The result is that
929 it takes host CPU cycles even when idle. You can install the utility
930 from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
933 @chapter QEMU PowerPC System emulator invocation
935 Use the executable @file{qemu-system-ppc} to simulate a complete PREP
936 or PowerMac PowerPC system.
938 QEMU emulates the following PowerMac peripherals:
944 PCI VGA compatible card with VESA Bochs Extensions
946 2 PMAC IDE interfaces with hard disk and CD-ROM support
952 VIA-CUDA with ADB keyboard and mouse.
955 QEMU emulates the following PREP peripherals:
961 PCI VGA compatible card with VESA Bochs Extensions
963 2 IDE interfaces with hard disk and CD-ROM support
967 NE2000 network adapters
971 PREP Non Volatile RAM
973 PC compatible keyboard and mouse.
976 QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
977 @url{http://site.voila.fr/jmayer/OpenHackWare/index.htm}.
979 You can read the qemu PC system emulation chapter to have more
980 informations about QEMU usage.
984 The following options are specific to the PowerPC emulation:
989 Simulate a PREP system (default is PowerMAC)
993 Set the initial VGA graphic mode. The default is 800x600x15.
1000 More information is available at
1001 @url{http://jocelyn.mayer.free.fr/qemu-ppc/}.
1003 @chapter Sparc32 System emulator invocation
1005 Use the executable @file{qemu-system-sparc} to simulate a JavaStation
1006 (sun4m architecture). The emulation is somewhat complete.
1008 QEMU emulates the following sun4m peripherals:
1016 Lance (Am7990) Ethernet
1018 Non Volatile RAM M48T08
1020 Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1021 and power/reset logic
1023 ESP SCSI controller with hard disk and CD-ROM support
1028 The number of peripherals is fixed in the architecture.
1030 QEMU uses the Proll, a PROM replacement available at
1031 @url{http://people.redhat.com/zaitcev/linux/}. The required
1032 QEMU-specific patches are included with the sources.
1034 A sample Linux 2.6 series kernel and ram disk image are available on
1035 the QEMU web site. Please note that currently neither Linux 2.4
1036 series, NetBSD, nor OpenBSD kernels work.
1038 @c man begin OPTIONS
1040 The following options are specific to the Sparc emulation:
1046 Set the initial TCX graphic mode. The default is 1024x768.
1052 @chapter Sparc64 System emulator invocation
1054 Use the executable @file{qemu-system-sparc64} to simulate a Sun4u machine.
1055 The emulator is not usable for anything yet.
1057 @chapter QEMU User space emulator invocation
1059 @section Quick Start
1061 In order to launch a Linux process, QEMU needs the process executable
1062 itself and all the target (x86) dynamic libraries used by it.
1066 @item On x86, you can just try to launch any process by using the native
1070 qemu-i386 -L / /bin/ls
1073 @code{-L /} tells that the x86 dynamic linker must be searched with a
1076 @item Since QEMU is also a linux process, you can launch qemu with qemu (NOTE: you can only do that if you compiled QEMU from the sources):
1079 qemu-i386 -L / qemu-i386 -L / /bin/ls
1082 @item On non x86 CPUs, you need first to download at least an x86 glibc
1083 (@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
1084 @code{LD_LIBRARY_PATH} is not set:
1087 unset LD_LIBRARY_PATH
1090 Then you can launch the precompiled @file{ls} x86 executable:
1093 qemu-i386 tests/i386/ls
1095 You can look at @file{qemu-binfmt-conf.sh} so that
1096 QEMU is automatically launched by the Linux kernel when you try to
1097 launch x86 executables. It requires the @code{binfmt_misc} module in the
1100 @item The x86 version of QEMU is also included. You can try weird things such as:
1102 qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1107 @section Wine launch
1111 @item Ensure that you have a working QEMU with the x86 glibc
1112 distribution (see previous section). In order to verify it, you must be
1116 qemu-i386 /usr/local/qemu-i386/bin/ls-i386
1119 @item Download the binary x86 Wine install
1120 (@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
1122 @item Configure Wine on your account. Look at the provided script
1123 @file{/usr/local/qemu-i386/bin/wine-conf.sh}. Your previous
1124 @code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
1126 @item Then you can try the example @file{putty.exe}:
1129 qemu-i386 /usr/local/qemu-i386/wine/bin/wine /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
1134 @section Command line options
1137 usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
1144 Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
1146 Set the x86 stack size in bytes (default=524288)
1153 Activate log (logfile=/tmp/qemu.log)
1155 Act as if the host page size was 'pagesize' bytes
1159 @chapter Compilation from the sources
1163 @subsection Compilation
1165 First you must decompress the sources:
1168 tar zxvf qemu-x.y.z.tar.gz
1172 Then you configure QEMU and build it (usually no options are needed):
1178 Then type as root user:
1182 to install QEMU in @file{/usr/local}.
1184 @subsection Tested tool versions
1186 In order to compile QEMU succesfully, it is very important that you
1187 have the right tools. The most important one is gcc. I cannot guaranty
1188 that QEMU works if you do not use a tested gcc version. Look at
1189 'configure' and 'Makefile' if you want to make a different gcc
1193 host gcc binutils glibc linux distribution
1194 ----------------------------------------------------------------------
1195 x86 3.2 2.13.2 2.1.3 2.4.18
1196 2.96 2.11.93.0.2 2.2.5 2.4.18 Red Hat 7.3
1197 3.2.2 2.13.90.0.18 2.3.2 2.4.20 Red Hat 9
1199 PowerPC 3.3 [4] 2.13.90.0.18 2.3.1 2.4.20briq
1202 Alpha 3.3 [1] 2.14.90.0.4 2.2.5 2.2.20 [2] Debian 3.0
1204 Sparc32 2.95.4 2.12.90.0.1 2.2.5 2.4.18 Debian 3.0
1206 ARM 2.95.4 2.12.90.0.1 2.2.5 2.4.9 [3] Debian 3.0
1208 [1] On Alpha, QEMU needs the gcc 'visibility' attribute only available
1209 for gcc version >= 3.3.
1210 [2] Linux >= 2.4.20 is necessary for precise exception support
1212 [3] 2.4.9-ac10-rmk2-np1-cerf2
1214 [4] gcc 2.95.x generates invalid code when using too many register
1215 variables. You must use gcc 3.x on PowerPC.
1221 @item Install the current versions of MSYS and MinGW from
1222 @url{http://www.mingw.org/}. You can find detailed installation
1223 instructions in the download section and the FAQ.
1226 the MinGW development library of SDL 1.2.x
1227 (@file{SDL-devel-1.2.x-mingw32.tar.gz}) from
1228 @url{http://www.libsdl.org}. Unpack it in a temporary place, and
1229 unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
1230 directory. Edit the @file{sdl-config} script so that it gives the
1231 correct SDL directory when invoked.
1233 @item Extract the current version of QEMU.
1235 @item Start the MSYS shell (file @file{msys.bat}).
1237 @item Change to the QEMU directory. Launch @file{./configure} and
1238 @file{make}. If you have problems using SDL, verify that
1239 @file{sdl-config} can be launched from the MSYS command line.
1241 @item You can install QEMU in @file{Program Files/Qemu} by typing
1242 @file{make install}. Don't forget to copy @file{SDL.dll} in
1243 @file{Program Files/Qemu}.
1247 @section Cross compilation for Windows with Linux
1251 Install the MinGW cross compilation tools available at
1252 @url{http://www.mingw.org/}.
1255 Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
1256 unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
1257 variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
1258 the QEMU configuration script.
1261 Configure QEMU for Windows cross compilation:
1263 ./configure --enable-mingw32
1265 If necessary, you can change the cross-prefix according to the prefix
1266 choosen for the MinGW tools with --cross-prefix. You can also use
1267 --prefix to set the Win32 install path.
1269 @item You can install QEMU in the installation directory by typing
1270 @file{make install}. Don't forget to copy @file{SDL.dll} in the
1271 installation directory.
1275 Note: Currently, Wine does not seem able to launch
1280 The Mac OS X patches are not fully merged in QEMU, so you should look
1281 at the QEMU mailing list archive to have all the necessary