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