Annotation of qemu/qemu-doc.texi, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.