|
|
1.1 root 1: \input texinfo @c -*- texinfo -*- 1.1.1.3 ! root 2: @c %**start of header ! 3: @setfilename qemu-doc.info ! 4: @settitle QEMU CPU Emulator User Documentation ! 5: @exampleindent 0 ! 6: @paragraphindent 0 ! 7: @c %**end of header 1.1 root 8: 9: @iftex 10: @titlepage 11: @sp 7 1.1.1.3 ! root 12: @center @titlefont{QEMU CPU Emulator} ! 13: @sp 1 ! 14: @center @titlefont{User Documentation} 1.1 root 15: @sp 3 16: @end titlepage 17: @end iftex 18: 1.1.1.3 ! root 19: @ifnottex ! 20: @node Top ! 21: @top ! 22: ! 23: @menu ! 24: * Introduction:: ! 25: * Installation:: ! 26: * QEMU PC System emulator:: ! 27: * QEMU System emulator for non PC targets:: ! 28: * QEMU Linux User space emulator:: ! 29: * compilation:: Compilation from the sources ! 30: * Index:: ! 31: @end menu ! 32: @end ifnottex ! 33: ! 34: @contents ! 35: ! 36: @node Introduction 1.1 root 37: @chapter Introduction 38: 1.1.1.3 ! root 39: @menu ! 40: * intro_features:: Features ! 41: @end menu ! 42: ! 43: @node intro_features 1.1 root 44: @section Features 45: 46: QEMU is a FAST! processor emulator using dynamic translation to 47: achieve good emulation speed. 48: 49: QEMU has two operating modes: 50: 51: @itemize @minus 52: 53: @item 54: Full system emulation. In this mode, QEMU emulates a full system (for 1.1.1.2 root 55: example a PC), including one or several processors and various 56: peripherals. It can be used to launch different Operating Systems 57: without rebooting the PC or to debug system code. 1.1 root 58: 59: @item 60: User mode emulation (Linux host only). In this mode, QEMU can launch 61: Linux processes compiled for one CPU on another CPU. It can be used to 62: launch the Wine Windows API emulator (@url{http://www.winehq.org}) or 63: to ease cross-compilation and cross-debugging. 64: 65: @end itemize 66: 67: QEMU can run without an host kernel driver and yet gives acceptable 68: performance. 69: 70: For system emulation, the following hardware targets are supported: 71: @itemize 72: @item PC (x86 or x86_64 processor) 1.1.1.2 root 73: @item ISA PC (old style PC without PCI bus) 1.1 root 74: @item PREP (PowerPC processor) 75: @item G3 BW PowerMac (PowerPC processor) 76: @item Mac99 PowerMac (PowerPC processor, in progress) 77: @item Sun4m (32-bit Sparc processor) 78: @item Sun4u (64-bit Sparc processor, in progress) 1.1.1.2 root 79: @item Malta board (32-bit MIPS processor) 1.1.1.3 ! root 80: @item ARM Integrator/CP (ARM926E or 1026E processor) 1.1 root 81: @end itemize 82: 1.1.1.2 root 83: For user emulation, x86, PowerPC, ARM, MIPS, and Sparc32/64 CPUs are supported. 1.1 root 84: 1.1.1.3 ! root 85: @node Installation 1.1 root 86: @chapter Installation 87: 88: If you want to compile QEMU yourself, see @ref{compilation}. 89: 1.1.1.3 ! root 90: @menu ! 91: * install_linux:: Linux ! 92: * install_windows:: Windows ! 93: * install_mac:: Macintosh ! 94: @end menu ! 95: ! 96: @node install_linux 1.1 root 97: @section Linux 98: 99: If a precompiled package is available for your distribution - you just 100: have to install it. Otherwise, see @ref{compilation}. 101: 1.1.1.3 ! root 102: @node install_windows 1.1 root 103: @section Windows 104: 105: Download the experimental binary installer at 1.1.1.3 ! root 106: @url{http://www.free.oszoo.org/@/download.html}. 1.1 root 107: 1.1.1.3 ! root 108: @node install_mac 1.1 root 109: @section Mac OS X 110: 111: Download the experimental binary installer at 1.1.1.3 ! root 112: @url{http://www.free.oszoo.org/@/download.html}. 1.1 root 113: 1.1.1.3 ! root 114: @node QEMU PC System emulator 1.1.1.2 root 115: @chapter QEMU PC System emulator 1.1 root 116: 1.1.1.3 ! root 117: @menu ! 118: * pcsys_introduction:: Introduction ! 119: * pcsys_quickstart:: Quick Start ! 120: * sec_invocation:: Invocation ! 121: * pcsys_keys:: Keys ! 122: * pcsys_monitor:: QEMU Monitor ! 123: * disk_images:: Disk Images ! 124: * pcsys_network:: Network emulation ! 125: * direct_linux_boot:: Direct Linux Boot ! 126: * pcsys_usb:: USB emulation ! 127: * gdb_usage:: GDB usage ! 128: * pcsys_os_specific:: Target OS specific information ! 129: @end menu ! 130: ! 131: @node pcsys_introduction 1.1 root 132: @section Introduction 133: 134: @c man begin DESCRIPTION 135: 1.1.1.2 root 136: The QEMU PC System emulator simulates the 137: following peripherals: 1.1 root 138: 139: @itemize @minus 140: @item 141: i440FX host PCI bridge and PIIX3 PCI to ISA bridge 142: @item 143: Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA 144: extensions (hardware level, including all non standard modes). 145: @item 146: PS/2 mouse and keyboard 147: @item 148: 2 PCI IDE interfaces with hard disk and CD-ROM support 149: @item 150: Floppy disk 151: @item 152: NE2000 PCI network adapters 153: @item 154: Serial ports 155: @item 1.1.1.2 root 156: Creative SoundBlaster 16 sound card 157: @item 158: ENSONIQ AudioPCI ES1370 sound card 159: @item 160: Adlib(OPL2) - Yamaha YM3812 compatible chip 161: @item 162: PCI UHCI USB controller and a virtual USB hub. 1.1 root 163: @end itemize 164: 1.1.1.2 root 165: SMP is supported with up to 255 CPUs. 166: 167: Note that adlib is only available when QEMU was configured with 168: -enable-adlib 169: 1.1 root 170: QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL 171: VGA BIOS. 172: 1.1.1.2 root 173: QEMU uses YM3812 emulation by Tatsuyuki Satoh. 174: 1.1 root 175: @c man end 176: 1.1.1.3 ! root 177: @node pcsys_quickstart 1.1 root 178: @section Quick Start 179: 180: Download and uncompress the linux image (@file{linux.img}) and type: 181: 182: @example 183: qemu linux.img 184: @end example 185: 186: Linux should boot and give you a prompt. 187: 188: @node sec_invocation 189: @section Invocation 190: 191: @example 192: @c man begin SYNOPSIS 193: usage: qemu [options] [disk_image] 194: @c man end 195: @end example 196: 197: @c man begin OPTIONS 198: @var{disk_image} is a raw hard disk image for IDE hard disk 0. 199: 200: General options: 201: @table @option 1.1.1.2 root 202: @item -M machine 203: Select the emulated machine (@code{-M ?} for list) 204: 1.1 root 205: @item -fda file 206: @item -fdb file 1.1.1.3 ! root 207: Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can 1.1 root 208: use the host floppy by using @file{/dev/fd0} as filename. 209: 210: @item -hda file 211: @item -hdb file 212: @item -hdc file 213: @item -hdd file 1.1.1.3 ! root 214: Use @var{file} as hard disk 0, 1, 2 or 3 image (@pxref{disk_images}). 1.1 root 215: 216: @item -cdrom file 217: Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and and 218: @option{-cdrom} at the same time). You can use the host CD-ROM by 219: using @file{/dev/cdrom} as filename. 220: 221: @item -boot [a|c|d] 222: Boot on floppy (a), hard disk (c) or CD-ROM (d). Hard disk boot is 223: the default. 224: 225: @item -snapshot 226: Write to temporary files instead of disk image files. In this case, 227: the raw disk image you use is not written back. You can however force 1.1.1.3 ! root 228: the write back by pressing @key{C-a s} (@pxref{disk_images}). 1.1 root 229: 230: @item -m megs 231: Set virtual RAM size to @var{megs} megabytes. Default is 128 MB. 232: 1.1.1.2 root 233: @item -smp n 234: Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255 235: CPUs are supported. 236: 1.1 root 237: @item -nographic 238: 239: Normally, QEMU uses SDL to display the VGA output. With this option, 240: you can totally disable graphical output so that QEMU is a simple 241: command line application. The emulated serial port is redirected on 242: the console. Therefore, you can still use QEMU to debug a Linux kernel 243: with a serial console. 244: 1.1.1.3 ! root 245: @item -vnc d ! 246: ! 247: Normally, QEMU uses SDL to display the VGA output. With this option, ! 248: you can have QEMU listen on VNC display d and redirect the VGA display ! 249: over the VNC session. It is very useful to enable the usb tablet device ! 250: when using this option (option @option{-usbdevice tablet}). ! 251: 1.1 root 252: @item -k language 253: 254: Use keyboard layout @var{language} (for example @code{fr} for 255: French). This option is only needed where it is not easy to get raw PC 256: keycodes (e.g. on Macs or with some X11 servers). You don't need to 257: use it on PC/Linux or PC/Windows hosts. 258: 259: The available layouts are: 260: @example 261: ar de-ch es fo fr-ca hu ja mk no pt-br sv 262: da en-gb et fr fr-ch is lt nl pl ru th 263: de en-us fi fr-be hr it lv nl-be pt sl tr 264: @end example 265: 266: The default is @code{en-us}. 267: 1.1.1.2 root 268: @item -audio-help 1.1 root 269: 1.1.1.2 root 270: Will show the audio subsystem help: list of drivers, tunable 271: parameters. 272: 273: @item -soundhw card1,card2,... or -soundhw all 274: 275: Enable audio and selected sound hardware. Use ? to print all 276: available sound hardware. 277: 278: @example 279: qemu -soundhw sb16,adlib hda 280: qemu -soundhw es1370 hda 281: qemu -soundhw all hda 282: qemu -soundhw ? 283: @end example 1.1 root 284: 285: @item -localtime 286: Set the real time clock to local time (the default is to UTC 287: time). This option is needed to have correct date in MS-DOS or 288: Windows. 289: 290: @item -full-screen 291: Start in full screen. 292: 293: @item -pidfile file 294: Store the QEMU process PID in @var{file}. It is useful if you launch QEMU 295: from a script. 296: 297: @item -win2k-hack 298: Use it when installing Windows 2000 to avoid a disk full bug. After 299: Windows 2000 is installed, you no longer need this option (this option 300: slows down the IDE transfers). 301: 302: @end table 303: 1.1.1.2 root 304: USB options: 305: @table @option 306: 307: @item -usb 308: Enable the USB driver (will be the default soon) 309: 310: @item -usbdevice devname 311: Add the USB device @var{devname}. See the monitor command 312: @code{usb_add} to have more information. 313: @end table 314: 1.1 root 315: Network options: 316: 317: @table @option 318: 1.1.1.3 ! root 319: @item -net nic[,vlan=n][,macaddr=addr][,model=type] 1.1.1.2 root 320: Create a new Network Interface Card and connect it to VLAN @var{n} (@var{n} 321: = 0 is the default). The NIC is currently an NE2000 on the PC 322: target. Optionally, the MAC address can be changed. If no 323: @option{-net} option is specified, a single NIC is created. 1.1.1.3 ! root 324: Qemu can emulate several different models of network card. Valid values for ! 325: @var{type} are @code{ne2k_pci}, @code{ne2k_isa}, @code{rtl8139}, ! 326: @code{smc91c111} and @code{lance}. Not all devices are supported on all ! 327: targets. 1.1.1.2 root 328: 1.1.1.3 ! root 329: @item -net user[,vlan=n][,hostname=name] 1.1.1.2 root 330: Use the user mode network stack which requires no administrator 1.1.1.3 ! root 331: priviledge to run. @option{hostname=name} can be used to specify the client ! 332: hostname reported by the builtin DHCP server. 1.1 root 333: 1.1.1.2 root 334: @item -net tap[,vlan=n][,fd=h][,ifname=name][,script=file] 335: Connect the host TAP network interface @var{name} to VLAN @var{n} and 336: use the network script @var{file} to configure it. The default 337: network script is @file{/etc/qemu-ifup}. If @var{name} is not 338: provided, the OS automatically provides one. @option{fd=h} can be 339: used to specify the handle of an already opened host TAP interface. Example: 1.1 root 340: 1.1.1.2 root 341: @example 342: qemu linux.img -net nic -net tap 343: @end example 1.1 root 344: 1.1.1.2 root 345: More complicated example (two NICs, each one connected to a TAP device) 346: @example 347: qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \ 348: -net nic,vlan=1 -net tap,vlan=1,ifname=tap1 349: @end example 1.1 root 350: 351: 1.1.1.2 root 352: @item -net socket[,vlan=n][,fd=h][,listen=[host]:port][,connect=host:port] 1.1 root 353: 1.1.1.2 root 354: Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual 355: machine using a TCP socket connection. If @option{listen} is 356: specified, QEMU waits for incoming connections on @var{port} 357: (@var{host} is optional). @option{connect} is used to connect to 358: another QEMU instance using the @option{listen} option. @option{fd=h} 359: specifies an already opened TCP socket. 360: 361: Example: 362: @example 363: # launch a first QEMU instance 1.1.1.3 ! root 364: qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \ ! 365: -net socket,listen=:1234 ! 366: # connect the VLAN 0 of this instance to the VLAN 0 ! 367: # of the first instance ! 368: qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \ ! 369: -net socket,connect=127.0.0.1:1234 1.1.1.2 root 370: @end example 371: 372: @item -net socket[,vlan=n][,fd=h][,mcast=maddr:port] 373: 374: Create a VLAN @var{n} shared with another QEMU virtual 375: machines using a UDP multicast socket, effectively making a bus for 376: every QEMU with same multicast address @var{maddr} and @var{port}. 377: NOTES: 378: @enumerate 379: @item 380: Several QEMU can be running on different hosts and share same bus (assuming 381: correct multicast setup for these hosts). 382: @item 383: mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see 384: @url{http://user-mode-linux.sf.net}. 385: @item Use @option{fd=h} to specify an already opened UDP multicast socket. 386: @end enumerate 387: 388: Example: 389: @example 390: # launch one QEMU instance 1.1.1.3 ! root 391: qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \ ! 392: -net socket,mcast=230.0.0.1:1234 1.1.1.2 root 393: # launch another QEMU instance on same "bus" 1.1.1.3 ! root 394: qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \ ! 395: -net socket,mcast=230.0.0.1:1234 1.1.1.2 root 396: # launch yet another QEMU instance on same "bus" 1.1.1.3 ! root 397: qemu linux.img -net nic,macaddr=52:54:00:12:34:58 \ ! 398: -net socket,mcast=230.0.0.1:1234 1.1.1.2 root 399: @end example 400: 401: Example (User Mode Linux compat.): 402: @example 1.1.1.3 ! root 403: # launch QEMU instance (note mcast address selected ! 404: # is UML's default) ! 405: qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \ ! 406: -net socket,mcast=239.192.168.1:1102 1.1.1.2 root 407: # launch UML 408: /path/to/linux ubd0=/path/to/root_fs eth0=mcast 409: @end example 410: 411: @item -net none 412: Indicate that no network devices should be configured. It is used to 1.1.1.3 ! root 413: override the default configuration (@option{-net nic -net user}) which ! 414: is activated if no @option{-net} options are provided. 1.1 root 415: 416: @item -tftp prefix 417: When using the user mode network stack, activate a built-in TFTP 418: server. All filenames beginning with @var{prefix} can be downloaded 419: from the host to the guest using a TFTP client. The TFTP client on the 420: guest must be configured in binary mode (use the command @code{bin} of 421: the Unix TFTP client). The host IP address on the guest is as usual 422: 10.0.2.2. 423: 424: @item -smb dir 425: When using the user mode network stack, activate a built-in SMB 426: server so that Windows OSes can access to the host files in @file{dir} 427: transparently. 428: 429: In the guest Windows OS, the line: 430: @example 431: 10.0.2.4 smbserver 432: @end example 433: must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me) 434: or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000). 435: 436: Then @file{dir} can be accessed in @file{\\smbserver\qemu}. 437: 438: Note that a SAMBA server must be installed on the host OS in 439: @file{/usr/sbin/smbd}. QEMU was tested succesfully with smbd version 440: 2.2.7a from the Red Hat 9 and version 3.0.10-1.fc3 from Fedora Core 3. 441: 442: @item -redir [tcp|udp]:host-port:[guest-host]:guest-port 443: 444: When using the user mode network stack, redirect incoming TCP or UDP 445: connections to the host port @var{host-port} to the guest 446: @var{guest-host} on guest port @var{guest-port}. If @var{guest-host} 447: is not specified, its value is 10.0.2.15 (default address given by the 448: built-in DHCP server). 449: 450: For example, to redirect host X11 connection from screen 1 to guest 451: screen 0, use the following: 452: 453: @example 454: # on the host 455: qemu -redir tcp:6001::6000 [...] 456: # this host xterm should open in the guest X11 server 457: xterm -display :1 458: @end example 459: 460: To redirect telnet connections from host port 5555 to telnet port on 461: the guest, use the following: 462: 463: @example 464: # on the host 465: qemu -redir tcp:5555::23 [...] 466: telnet localhost 5555 467: @end example 468: 469: Then when you use on the host @code{telnet localhost 5555}, you 470: connect to the guest telnet server. 471: 472: @end table 473: 1.1.1.2 root 474: Linux boot specific: When using these options, you can use a given 1.1 root 475: Linux kernel without installing it in the disk image. It can be useful 476: for easier testing of various kernels. 477: 478: @table @option 479: 480: @item -kernel bzImage 481: Use @var{bzImage} as kernel image. 482: 483: @item -append cmdline 484: Use @var{cmdline} as kernel command line 485: 486: @item -initrd file 487: Use @var{file} as initial ram disk. 488: 489: @end table 490: 491: Debug/Expert options: 492: @table @option 493: 494: @item -serial dev 495: Redirect the virtual serial port to host device @var{dev}. Available 496: devices are: 497: @table @code 498: @item vc 499: Virtual console 500: @item pty 501: [Linux only] Pseudo TTY (a new PTY is automatically allocated) 502: @item null 503: void device 1.1.1.2 root 504: @item /dev/XXX 505: [Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port 506: parameters are set according to the emulated ones. 507: @item /dev/parportN 508: [Linux only, parallel port only] Use host parallel port 509: @var{N}. Currently only SPP parallel port features can be used. 510: @item file:filename 511: Write output to filename. No character can be read. 1.1 root 512: @item stdio 513: [Unix only] standard input/output 1.1.1.2 root 514: @item pipe:filename 515: [Unix only] name pipe @var{filename} 1.1 root 516: @end table 517: The default device is @code{vc} in graphical mode and @code{stdio} in 518: non graphical mode. 519: 520: This option can be used several times to simulate up to 4 serials 521: ports. 522: 1.1.1.2 root 523: @item -parallel dev 524: Redirect the virtual parallel port to host device @var{dev} (same 525: devices as the serial port). On Linux hosts, @file{/dev/parportN} can 526: be used to use hardware devices connected on the corresponding host 527: parallel port. 528: 529: This option can be used several times to simulate up to 3 parallel 530: ports. 531: 1.1 root 532: @item -monitor dev 533: Redirect the monitor to host device @var{dev} (same devices as the 534: serial port). 535: The default device is @code{vc} in graphical mode and @code{stdio} in 536: non graphical mode. 537: 538: @item -s 1.1.1.3 ! root 539: Wait gdb connection to port 1234 (@pxref{gdb_usage}). 1.1 root 540: @item -p port 541: Change gdb connection port. 542: @item -S 543: Do not start CPU at startup (you must type 'c' in the monitor). 544: @item -d 545: Output log in /tmp/qemu.log 546: @item -hdachs c,h,s,[,t] 547: Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <= 548: @var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS 549: translation mode (@var{t}=none, lba or auto). Usually QEMU can guess 550: all thoses parameters. This option is useful for old MS-DOS disk 551: images. 552: 553: @item -std-vga 554: Simulate a standard VGA card with Bochs VBE extensions (default is 555: Cirrus Logic GD5446 PCI VGA) 556: @item -loadvm file 557: Start right away with a saved state (@code{loadvm} in monitor) 558: @end table 559: 560: @c man end 561: 1.1.1.3 ! root 562: @node pcsys_keys 1.1 root 563: @section Keys 564: 565: @c man begin OPTIONS 566: 567: During the graphical emulation, you can use the following keys: 568: @table @key 569: @item Ctrl-Alt-f 570: Toggle full screen 571: 572: @item Ctrl-Alt-n 573: Switch to virtual console 'n'. Standard console mappings are: 574: @table @emph 575: @item 1 576: Target system display 577: @item 2 578: Monitor 579: @item 3 580: Serial port 581: @end table 582: 583: @item Ctrl-Alt 584: Toggle mouse and keyboard grab. 585: @end table 586: 587: In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down}, 588: @key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log. 589: 590: During emulation, if you are using the @option{-nographic} option, use 591: @key{Ctrl-a h} to get terminal commands: 592: 593: @table @key 594: @item Ctrl-a h 595: Print this help 596: @item Ctrl-a x 597: Exit emulatior 598: @item Ctrl-a s 599: Save disk data back to file (if -snapshot) 600: @item Ctrl-a b 601: Send break (magic sysrq in Linux) 602: @item Ctrl-a c 603: Switch between console and monitor 604: @item Ctrl-a Ctrl-a 605: Send Ctrl-a 606: @end table 607: @c man end 608: 609: @ignore 610: 611: @c man begin SEEALSO 612: The HTML documentation of QEMU for more precise information and Linux 613: user mode emulator invocation. 614: @c man end 615: 616: @c man begin AUTHOR 617: Fabrice Bellard 618: @c man end 619: 620: @end ignore 621: 1.1.1.3 ! root 622: @node pcsys_monitor 1.1 root 623: @section QEMU Monitor 624: 625: The QEMU monitor is used to give complex commands to the QEMU 626: emulator. You can use it to: 627: 628: @itemize @minus 629: 630: @item 631: Remove or insert removable medias images 632: (such as CD-ROM or floppies) 633: 634: @item 635: Freeze/unfreeze the Virtual Machine (VM) and save or restore its state 636: from a disk file. 637: 638: @item Inspect the VM state without an external debugger. 639: 640: @end itemize 641: 642: @subsection Commands 643: 644: The following commands are available: 645: 646: @table @option 647: 648: @item help or ? [cmd] 649: Show the help for all commands or just for command @var{cmd}. 650: 651: @item commit 652: Commit changes to the disk images (if -snapshot is used) 653: 654: @item info subcommand 655: show various information about the system state 656: 657: @table @option 658: @item info network 1.1.1.2 root 659: show the various VLANs and the associated devices 1.1 root 660: @item info block 661: show the block devices 662: @item info registers 663: show the cpu registers 664: @item info history 665: show the command line history 1.1.1.2 root 666: @item info pci 667: show emulated PCI device 668: @item info usb 669: show USB devices plugged on the virtual USB hub 670: @item info usbhost 671: show all USB host devices 1.1 root 672: @end table 673: 674: @item q or quit 675: Quit the emulator. 676: 677: @item eject [-f] device 678: Eject a removable media (use -f to force it). 679: 680: @item change device filename 681: Change a removable media. 682: 683: @item screendump filename 684: Save screen into PPM image @var{filename}. 685: 686: @item log item1[,...] 687: Activate logging of the specified items to @file{/tmp/qemu.log}. 688: 689: @item savevm filename 690: Save the whole virtual machine state to @var{filename}. 691: 692: @item loadvm filename 693: Restore the whole virtual machine state from @var{filename}. 694: 695: @item stop 696: Stop emulation. 697: 698: @item c or cont 699: Resume emulation. 700: 701: @item gdbserver [port] 702: Start gdbserver session (default port=1234) 703: 704: @item x/fmt addr 705: Virtual memory dump starting at @var{addr}. 706: 707: @item xp /fmt addr 708: Physical memory dump starting at @var{addr}. 709: 710: @var{fmt} is a format which tells the command how to format the 711: data. Its syntax is: @option{/@{count@}@{format@}@{size@}} 712: 713: @table @var 714: @item count 715: is the number of items to be dumped. 716: 717: @item format 718: can be x (hexa), d (signed decimal), u (unsigned decimal), o (octal), 719: c (char) or i (asm instruction). 720: 721: @item size 722: can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86, 723: @code{h} or @code{w} can be specified with the @code{i} format to 724: respectively select 16 or 32 bit code instruction size. 725: 726: @end table 727: 728: Examples: 729: @itemize 730: @item 731: Dump 10 instructions at the current instruction pointer: 732: @example 733: (qemu) x/10i $eip 734: 0x90107063: ret 735: 0x90107064: sti 736: 0x90107065: lea 0x0(%esi,1),%esi 737: 0x90107069: lea 0x0(%edi,1),%edi 738: 0x90107070: ret 739: 0x90107071: jmp 0x90107080 740: 0x90107073: nop 741: 0x90107074: nop 742: 0x90107075: nop 743: 0x90107076: nop 744: @end example 745: 746: @item 747: Dump 80 16 bit values at the start of the video memory. 1.1.1.3 ! root 748: @smallexample 1.1 root 749: (qemu) xp/80hx 0xb8000 750: 0x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42 751: 0x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41 752: 0x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72 753: 0x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73 754: 0x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20 755: 0x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720 756: 0x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 757: 0x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 758: 0x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 759: 0x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 1.1.1.3 ! root 760: @end smallexample 1.1 root 761: @end itemize 762: 763: @item p or print/fmt expr 764: 765: Print expression value. Only the @var{format} part of @var{fmt} is 766: used. 767: 768: @item sendkey keys 769: 770: Send @var{keys} to the emulator. Use @code{-} to press several keys 771: simultaneously. Example: 772: @example 773: sendkey ctrl-alt-f1 774: @end example 775: 776: This command is useful to send keys that your graphical user interface 777: intercepts at low level, such as @code{ctrl-alt-f1} in X Window. 778: 779: @item system_reset 780: 781: Reset the system. 782: 1.1.1.2 root 783: @item usb_add devname 784: 785: Plug the USB device devname to the QEMU virtual USB hub. @var{devname} 786: is either a virtual device name (for example @code{mouse}) or a host 787: USB device identifier. Host USB device identifiers have the following 788: syntax: @code{host:bus.addr} or @code{host:vendor_id:product_id}. 789: 790: @item usb_del devname 791: 792: Remove the USB device @var{devname} from the QEMU virtual USB 793: hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor 794: command @code{info usb} to see the devices you can remove. 795: 1.1 root 796: @end table 797: 798: @subsection Integer expressions 799: 800: The monitor understands integers expressions for every integer 801: argument. You can use register names to get the value of specifics 802: CPU registers by prefixing them with @emph{$}. 803: 804: @node disk_images 805: @section Disk Images 806: 807: Since version 0.6.1, QEMU supports many disk image formats, including 808: growable disk images (their size increase as non empty sectors are 809: written), compressed and encrypted disk images. 810: 1.1.1.3 ! root 811: @menu ! 812: * disk_images_quickstart:: Quick start for disk image creation ! 813: * disk_images_snapshot_mode:: Snapshot mode ! 814: * qemu_img_invocation:: qemu-img Invocation ! 815: * disk_images_fat_images:: Virtual FAT disk images ! 816: @end menu ! 817: ! 818: @node disk_images_quickstart 1.1 root 819: @subsection Quick start for disk image creation 820: 821: You can create a disk image with the command: 822: @example 823: qemu-img create myimage.img mysize 824: @end example 825: where @var{myimage.img} is the disk image filename and @var{mysize} is its 826: size in kilobytes. You can add an @code{M} suffix to give the size in 827: megabytes and a @code{G} suffix for gigabytes. 828: 1.1.1.3 ! root 829: See @ref{qemu_img_invocation} for more information. 1.1 root 830: 1.1.1.3 ! root 831: @node disk_images_snapshot_mode 1.1 root 832: @subsection Snapshot mode 833: 834: If you use the option @option{-snapshot}, all disk images are 835: considered as read only. When sectors in written, they are written in 836: a temporary file created in @file{/tmp}. You can however force the 837: write back to the raw disk images by using the @code{commit} monitor 838: command (or @key{C-a s} in the serial console). 839: 840: @node qemu_img_invocation 841: @subsection @code{qemu-img} Invocation 842: 843: @include qemu-img.texi 844: 1.1.1.3 ! root 845: @node disk_images_fat_images 1.1.1.2 root 846: @subsection Virtual FAT disk images 847: 848: QEMU can automatically create a virtual FAT disk image from a 849: directory tree. In order to use it, just type: 850: 851: @example 852: qemu linux.img -hdb fat:/my_directory 853: @end example 854: 855: Then you access access to all the files in the @file{/my_directory} 856: directory without having to copy them in a disk image or to export 857: them via SAMBA or NFS. The default access is @emph{read-only}. 1.1 root 858: 1.1.1.2 root 859: Floppies can be emulated with the @code{:floppy:} option: 1.1 root 860: 1.1.1.2 root 861: @example 862: qemu linux.img -fda fat:floppy:/my_directory 863: @end example 1.1 root 864: 1.1.1.2 root 865: A read/write support is available for testing (beta stage) with the 866: @code{:rw:} option: 867: 868: @example 869: qemu linux.img -fda fat:floppy:rw:/my_directory 870: @end example 871: 872: What you should @emph{never} do: 873: @itemize 874: @item use non-ASCII filenames ; 875: @item use "-snapshot" together with ":rw:" ; 876: @item expect it to work when loadvm'ing ; 877: @item write to the FAT directory on the host system while accessing it with the guest system. 878: @end itemize 879: 1.1.1.3 ! root 880: @node pcsys_network 1.1.1.2 root 881: @section Network emulation 882: 883: QEMU can simulate several networks cards (NE2000 boards on the PC 884: target) and can connect them to an arbitrary number of Virtual Local 885: Area Networks (VLANs). Host TAP devices can be connected to any QEMU 886: VLAN. VLAN can be connected between separate instances of QEMU to 887: simulate large networks. For simpler usage, a non priviledged user mode 888: network stack can replace the TAP device to have a basic network 889: connection. 890: 891: @subsection VLANs 892: 893: QEMU simulates several VLANs. A VLAN can be symbolised as a virtual 894: connection between several network devices. These devices can be for 895: example QEMU virtual Ethernet cards or virtual Host ethernet devices 896: (TAP devices). 897: 898: @subsection Using TAP network interfaces 899: 900: This is the standard way to connect QEMU to a real network. QEMU adds 901: a virtual network device on your host (called @code{tapN}), and you 902: can then configure it as if it was a real ethernet card. 1.1 root 903: 904: As an example, you can download the @file{linux-test-xxx.tar.gz} 905: archive and copy the script @file{qemu-ifup} in @file{/etc} and 906: configure properly @code{sudo} so that the command @code{ifconfig} 907: contained in @file{qemu-ifup} can be executed as root. You must verify 1.1.1.2 root 908: that your host kernel supports the TAP network interfaces: the 1.1 root 909: device @file{/dev/net/tun} must be present. 910: 911: See @ref{direct_linux_boot} to have an example of network use with a 1.1.1.2 root 912: Linux distribution and @ref{sec_invocation} to have examples of 913: command lines using the TAP network interfaces. 1.1 root 914: 915: @subsection Using the user mode network stack 916: 1.1.1.2 root 917: By using the option @option{-net user} (default configuration if no 918: @option{-net} option is specified), QEMU uses a completely user mode 919: network stack (you don't need root priviledge to use the virtual 920: network). The virtual network configuration is the following: 1.1 root 921: 922: @example 923: 1.1.1.2 root 924: QEMU VLAN <------> Firewall/DHCP server <-----> Internet 925: | (10.0.2.2) 1.1 root 926: | 927: ----> DNS server (10.0.2.3) 928: | 929: ----> SMB server (10.0.2.4) 930: @end example 931: 932: The QEMU VM behaves as if it was behind a firewall which blocks all 933: incoming connections. You can use a DHCP client to automatically 1.1.1.2 root 934: configure the network in the QEMU VM. The DHCP server assign addresses 935: to the hosts starting from 10.0.2.15. 1.1 root 936: 937: In order to check that the user mode network is working, you can ping 938: the address 10.0.2.2 and verify that you got an address in the range 939: 10.0.2.x from the QEMU virtual DHCP server. 940: 941: Note that @code{ping} is not supported reliably to the internet as it 942: would require root priviledges. It means you can only ping the local 943: router (10.0.2.2). 944: 945: When using the built-in TFTP server, the router is also the TFTP 946: server. 947: 948: When using the @option{-redir} option, TCP or UDP connections can be 949: redirected from the host to the guest. It allows for example to 950: redirect X11, telnet or SSH connections. 951: 1.1.1.2 root 952: @subsection Connecting VLANs between QEMU instances 953: 954: Using the @option{-net socket} option, it is possible to make VLANs 955: that span several QEMU instances. See @ref{sec_invocation} to have a 956: basic example. 957: 1.1 root 958: @node direct_linux_boot 959: @section Direct Linux Boot 960: 961: This section explains how to launch a Linux kernel inside QEMU without 962: having to make a full bootable image. It is very useful for fast Linux 963: kernel testing. The QEMU network configuration is also explained. 964: 965: @enumerate 966: @item 967: Download the archive @file{linux-test-xxx.tar.gz} containing a Linux 968: kernel and a disk image. 969: 970: @item Optional: If you want network support (for example to launch X11 examples), you 971: must copy the script @file{qemu-ifup} in @file{/etc} and configure 972: properly @code{sudo} so that the command @code{ifconfig} contained in 973: @file{qemu-ifup} can be executed as root. You must verify that your host 974: kernel supports the TUN/TAP network interfaces: the device 975: @file{/dev/net/tun} must be present. 976: 977: When network is enabled, there is a virtual network connection between 978: the host kernel and the emulated kernel. The emulated kernel is seen 979: from the host kernel at IP address 172.20.0.2 and the host kernel is 980: seen from the emulated kernel at IP address 172.20.0.1. 981: 982: @item Launch @code{qemu.sh}. You should have the following output: 983: 1.1.1.3 ! root 984: @smallexample 1.1 root 985: > ./qemu.sh 986: Connected to host network interface: tun0 1.1.1.3 ! root 987: Linux version 2.4.21 (bellard@@voyager.localdomain) (gcc version 3.2.2 20030222 @/(Red Hat @/Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003 1.1 root 988: BIOS-provided physical RAM map: 989: BIOS-e801: 0000000000000000 - 000000000009f000 (usable) 990: BIOS-e801: 0000000000100000 - 0000000002000000 (usable) 991: 32MB LOWMEM available. 992: On node 0 totalpages: 8192 993: zone(0): 4096 pages. 994: zone(1): 4096 pages. 995: zone(2): 0 pages. 1.1.1.3 ! root 996: Kernel command line: root=/dev/hda sb=0x220,5,1,5 ide2=noprobe ide3=noprobe ide4=noprobe @/ide5=noprobe console=ttyS0 1.1 root 997: ide_setup: ide2=noprobe 998: ide_setup: ide3=noprobe 999: ide_setup: ide4=noprobe 1000: ide_setup: ide5=noprobe 1001: Initializing CPU#0 1002: Detected 2399.621 MHz processor. 1003: Console: colour EGA 80x25 1004: Calibrating delay loop... 4744.80 BogoMIPS 1.1.1.3 ! root 1005: Memory: 28872k/32768k available (1210k kernel code, 3508k reserved, 266k data, 64k init, @/0k highmem) 1.1 root 1006: Dentry cache hash table entries: 4096 (order: 3, 32768 bytes) 1007: Inode cache hash table entries: 2048 (order: 2, 16384 bytes) 1008: Mount cache hash table entries: 512 (order: 0, 4096 bytes) 1009: Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes) 1010: Page-cache hash table entries: 8192 (order: 3, 32768 bytes) 1011: CPU: Intel Pentium Pro stepping 03 1012: Checking 'hlt' instruction... OK. 1013: POSIX conformance testing by UNIFIX 1014: Linux NET4.0 for Linux 2.4 1015: Based upon Swansea University Computer Society NET3.039 1016: Initializing RT netlink socket 1017: apm: BIOS not found. 1018: Starting kswapd 1019: Journalled Block Device driver loaded 1020: Detected PS/2 Mouse Port. 1021: pty: 256 Unix98 ptys configured 1022: Serial driver version 5.05c (2001-07-08) with no serial options enabled 1023: ttyS00 at 0x03f8 (irq = 4) is a 16450 1.1.1.3 ! root 1024: ne.c:v1.10 9/23/94 Donald Becker (becker@@scyld.com) 1.1 root 1025: Last modified Nov 1, 2000 by Paul Gortmaker 1026: NE*000 ethercard probe at 0x300: 52 54 00 12 34 56 1027: eth0: NE2000 found at 0x300, using IRQ 9. 1028: RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize 1029: Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4 1030: ide: Assuming 50MHz system bus speed for PIO modes; override with idebus=xx 1031: hda: QEMU HARDDISK, ATA DISK drive 1032: ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 1033: hda: attached ide-disk driver. 1034: hda: 20480 sectors (10 MB) w/256KiB Cache, CHS=20/16/63 1035: Partition check: 1036: hda: 1037: Soundblaster audio driver Copyright (C) by Hannu Savolainen 1993-1996 1038: NET4: Linux TCP/IP 1.0 for NET4.0 1039: IP Protocols: ICMP, UDP, TCP, IGMP 1040: IP: routing cache hash table of 512 buckets, 4Kbytes 1041: TCP: Hash tables configured (established 2048 bind 4096) 1042: NET4: Unix domain sockets 1.0/SMP for Linux NET4.0. 1043: EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended 1044: VFS: Mounted root (ext2 filesystem). 1045: Freeing unused kernel memory: 64k freed 1046: 1.1.1.3 ! root 1047: Linux version 2.4.21 (bellard@@voyager.localdomain) (gcc version 3.2.2 20030222 @/(Red Hat @/Linux 3.2.2-5)) #5 Tue Nov 11 18:18:53 CET 2003 1.1 root 1048: 1049: QEMU Linux test distribution (based on Redhat 9) 1050: 1051: Type 'exit' to halt the system 1052: 1053: sh-2.05b# 1.1.1.3 ! root 1054: @end smallexample 1.1 root 1055: 1056: @item 1057: Then you can play with the kernel inside the virtual serial console. You 1058: can launch @code{ls} for example. Type @key{Ctrl-a h} to have an help 1059: about the keys you can type inside the virtual serial console. In 1060: particular, use @key{Ctrl-a x} to exit QEMU and use @key{Ctrl-a b} as 1061: the Magic SysRq key. 1062: 1063: @item 1064: If the network is enabled, launch the script @file{/etc/linuxrc} in the 1065: emulator (don't forget the leading dot): 1066: @example 1067: . /etc/linuxrc 1068: @end example 1069: 1070: Then enable X11 connections on your PC from the emulated Linux: 1071: @example 1072: xhost +172.20.0.2 1073: @end example 1074: 1075: You can now launch @file{xterm} or @file{xlogo} and verify that you have 1076: a real Virtual Linux system ! 1077: 1078: @end enumerate 1079: 1080: NOTES: 1081: @enumerate 1082: @item 1083: A 2.5.74 kernel is also included in the archive. Just 1084: replace the bzImage in qemu.sh to try it. 1085: 1086: @item 1087: In order to exit cleanly from qemu, you can do a @emph{shutdown} inside 1088: qemu. qemu will automatically exit when the Linux shutdown is done. 1089: 1090: @item 1091: You can boot slightly faster by disabling the probe of non present IDE 1092: interfaces. To do so, add the following options on the kernel command 1093: line: 1094: @example 1095: ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe 1096: @end example 1097: 1098: @item 1099: The example disk image is a modified version of the one made by Kevin 1100: Lawton for the plex86 Project (@url{www.plex86.org}). 1101: 1102: @end enumerate 1103: 1.1.1.3 ! root 1104: @node pcsys_usb 1.1.1.2 root 1105: @section USB emulation 1106: 1107: QEMU emulates a PCI UHCI USB controller and a 8 port USB hub connected 1108: to it. You can virtually plug to the hub virtual USB devices or real 1109: host USB devices (experimental, works only on Linux hosts). 1110: 1111: @subsection Using virtual USB devices 1112: 1113: A virtual USB mouse device is available for testing in QEMU. 1114: 1115: You can try it with the following monitor commands: 1116: 1117: @example 1118: # add the mouse device 1119: (qemu) usb_add mouse 1120: 1121: # show the virtual USB devices plugged on the QEMU Virtual USB hub 1122: (qemu) info usb 1123: Device 0.3, speed 12 Mb/s 1124: 1125: # after some time you can try to remove the mouse 1126: (qemu) usb_del 0.3 1127: @end example 1128: 1129: The option @option{-usbdevice} is similar to the monitor command 1130: @code{usb_add}. 1131: 1132: @subsection Using host USB devices on a Linux host 1133: 1134: WARNING: this is an experimental feature. QEMU will slow down when 1135: using it. USB devices requiring real time streaming (i.e. USB Video 1136: Cameras) are not supported yet. 1137: 1138: @enumerate 1139: @item If you use an early Linux 2.4 kernel, verify that no Linux driver 1140: is actually using the USB device. A simple way to do that is simply to 1141: disable the corresponding kernel module by renaming it from @file{mydriver.o} 1142: to @file{mydriver.o.disabled}. 1143: 1144: @item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that: 1145: @example 1146: ls /proc/bus/usb 1147: 001 devices drivers 1148: @end example 1149: 1150: @item Since only root can access to the USB devices directly, you can either launch QEMU as root or change the permissions of the USB devices you want to use. For testing, the following suffices: 1151: @example 1152: chown -R myuid /proc/bus/usb 1153: @end example 1154: 1155: @item Launch QEMU and do in the monitor: 1156: @example 1157: info usbhost 1158: Device 1.2, speed 480 Mb/s 1159: Class 00: USB device 1234:5678, USB DISK 1160: @end example 1161: You should see the list of the devices you can use (Never try to use 1162: hubs, it won't work). 1163: 1164: @item Add the device in QEMU by using: 1165: @example 1166: usb_add host:1234:5678 1167: @end example 1168: 1169: Normally the guest OS should report that a new USB device is 1170: plugged. You can use the option @option{-usbdevice} to do the same. 1171: 1172: @item Now you can try to use the host USB device in QEMU. 1173: 1174: @end enumerate 1175: 1176: When relaunching QEMU, you may have to unplug and plug again the USB 1177: device to make it work again (this is a bug). 1178: 1.1 root 1179: @node gdb_usage 1180: @section GDB usage 1181: 1182: QEMU has a primitive support to work with gdb, so that you can do 1183: 'Ctrl-C' while the virtual machine is running and inspect its state. 1184: 1185: In order to use gdb, launch qemu with the '-s' option. It will wait for a 1186: gdb connection: 1187: @example 1.1.1.3 ! root 1188: > qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \ ! 1189: -append "root=/dev/hda" 1.1 root 1190: Connected to host network interface: tun0 1191: Waiting gdb connection on port 1234 1192: @end example 1193: 1194: Then launch gdb on the 'vmlinux' executable: 1195: @example 1196: > gdb vmlinux 1197: @end example 1198: 1199: In gdb, connect to QEMU: 1200: @example 1201: (gdb) target remote localhost:1234 1202: @end example 1203: 1204: Then you can use gdb normally. For example, type 'c' to launch the kernel: 1205: @example 1206: (gdb) c 1207: @end example 1208: 1209: Here are some useful tips in order to use gdb on system code: 1210: 1211: @enumerate 1212: @item 1213: Use @code{info reg} to display all the CPU registers. 1214: @item 1215: Use @code{x/10i $eip} to display the code at the PC position. 1216: @item 1217: Use @code{set architecture i8086} to dump 16 bit code. Then use 1218: @code{x/10i $cs*16+*eip} to dump the code at the PC position. 1219: @end enumerate 1220: 1.1.1.3 ! root 1221: @node pcsys_os_specific 1.1 root 1222: @section Target OS specific information 1223: 1224: @subsection Linux 1225: 1226: To have access to SVGA graphic modes under X11, use the @code{vesa} or 1227: the @code{cirrus} X11 driver. For optimal performances, use 16 bit 1228: color depth in the guest and the host OS. 1229: 1230: When using a 2.6 guest Linux kernel, you should add the option 1231: @code{clock=pit} on the kernel command line because the 2.6 Linux 1232: kernels make very strict real time clock checks by default that QEMU 1233: cannot simulate exactly. 1234: 1235: When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is 1236: not activated because QEMU is slower with this patch. The QEMU 1237: Accelerator Module is also much slower in this case. Earlier Fedora 1238: Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporte this 1239: patch by default. Newer kernels don't have it. 1240: 1241: @subsection Windows 1242: 1243: If you have a slow host, using Windows 95 is better as it gives the 1244: best speed. Windows 2000 is also a good choice. 1245: 1246: @subsubsection SVGA graphic modes support 1247: 1248: QEMU emulates a Cirrus Logic GD5446 Video 1249: card. All Windows versions starting from Windows 95 should recognize 1250: and use this graphic card. For optimal performances, use 16 bit color 1251: depth in the guest and the host OS. 1252: 1253: @subsubsection CPU usage reduction 1254: 1255: Windows 9x does not correctly use the CPU HLT 1256: instruction. The result is that it takes host CPU cycles even when 1257: idle. You can install the utility from 1258: @url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this 1259: problem. Note that no such tool is needed for NT, 2000 or XP. 1260: 1261: @subsubsection Windows 2000 disk full problem 1262: 1263: Windows 2000 has a bug which gives a disk full problem during its 1264: installation. When installing it, use the @option{-win2k-hack} QEMU 1265: option to enable a specific workaround. After Windows 2000 is 1266: installed, you no longer need this option (this option slows down the 1267: IDE transfers). 1268: 1269: @subsubsection Windows 2000 shutdown 1270: 1271: Windows 2000 cannot automatically shutdown in QEMU although Windows 98 1272: can. It comes from the fact that Windows 2000 does not automatically 1273: use the APM driver provided by the BIOS. 1274: 1275: In order to correct that, do the following (thanks to Struan 1276: Bartlett): go to the Control Panel => Add/Remove Hardware & Next => 1277: Add/Troubleshoot a device => Add a new device & Next => No, select the 1278: hardware from a list & Next => NT Apm/Legacy Support & Next => Next 1279: (again) a few times. Now the driver is installed and Windows 2000 now 1280: correctly instructs QEMU to shutdown at the appropriate moment. 1281: 1282: @subsubsection Share a directory between Unix and Windows 1283: 1284: See @ref{sec_invocation} about the help of the option @option{-smb}. 1285: 1286: @subsubsection Windows XP security problems 1287: 1288: Some releases of Windows XP install correctly but give a security 1289: error when booting: 1290: @example 1291: A problem is preventing Windows from accurately checking the 1292: license for this computer. Error code: 0x800703e6. 1293: @end example 1294: The only known workaround is to boot in Safe mode 1295: without networking support. 1296: 1297: Future QEMU releases are likely to correct this bug. 1298: 1299: @subsection MS-DOS and FreeDOS 1300: 1301: @subsubsection CPU usage reduction 1302: 1303: DOS does not correctly use the CPU HLT instruction. The result is that 1304: it takes host CPU cycles even when idle. You can install the utility 1305: from @url{http://www.vmware.com/software/dosidle210.zip} to solve this 1306: problem. 1307: 1.1.1.3 ! root 1308: @node QEMU System emulator for non PC targets 1.1.1.2 root 1309: @chapter QEMU System emulator for non PC targets 1310: 1311: QEMU is a generic emulator and it emulates many non PC 1312: machines. Most of the options are similar to the PC emulator. The 1313: differences are mentionned in the following sections. 1314: 1.1.1.3 ! root 1315: @menu ! 1316: * QEMU PowerPC System emulator:: ! 1317: * Sparc32 System emulator invocation:: ! 1318: * Sparc64 System emulator invocation:: ! 1319: * MIPS System emulator invocation:: ! 1320: * ARM System emulator invocation:: ! 1321: @end menu ! 1322: ! 1323: @node QEMU PowerPC System emulator 1.1.1.2 root 1324: @section QEMU PowerPC System emulator 1.1 root 1325: 1326: Use the executable @file{qemu-system-ppc} to simulate a complete PREP 1327: or PowerMac PowerPC system. 1328: 1329: QEMU emulates the following PowerMac peripherals: 1330: 1331: @itemize @minus 1332: @item 1333: UniNorth PCI Bridge 1334: @item 1335: PCI VGA compatible card with VESA Bochs Extensions 1336: @item 1337: 2 PMAC IDE interfaces with hard disk and CD-ROM support 1338: @item 1339: NE2000 PCI adapters 1340: @item 1341: Non Volatile RAM 1342: @item 1343: VIA-CUDA with ADB keyboard and mouse. 1344: @end itemize 1345: 1346: QEMU emulates the following PREP peripherals: 1347: 1348: @itemize @minus 1349: @item 1350: PCI Bridge 1351: @item 1352: PCI VGA compatible card with VESA Bochs Extensions 1353: @item 1354: 2 IDE interfaces with hard disk and CD-ROM support 1355: @item 1356: Floppy disk 1357: @item 1358: NE2000 network adapters 1359: @item 1360: Serial port 1361: @item 1362: PREP Non Volatile RAM 1363: @item 1364: PC compatible keyboard and mouse. 1365: @end itemize 1366: 1367: QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at 1.1.1.2 root 1368: @url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}. 1.1 root 1369: 1370: @c man begin OPTIONS 1371: 1372: The following options are specific to the PowerPC emulation: 1373: 1374: @table @option 1375: 1376: @item -g WxH[xDEPTH] 1377: 1378: Set the initial VGA graphic mode. The default is 800x600x15. 1379: 1380: @end table 1381: 1382: @c man end 1383: 1384: 1385: More information is available at 1.1.1.2 root 1386: @url{http://perso.magic.fr/l_indien/qemu-ppc/}. 1.1 root 1387: 1.1.1.3 ! root 1388: @node Sparc32 System emulator invocation 1.1.1.2 root 1389: @section Sparc32 System emulator invocation 1.1 root 1390: 1391: Use the executable @file{qemu-system-sparc} to simulate a JavaStation 1392: (sun4m architecture). The emulation is somewhat complete. 1393: 1394: QEMU emulates the following sun4m peripherals: 1395: 1396: @itemize @minus 1397: @item 1398: IOMMU 1399: @item 1400: TCX Frame buffer 1401: @item 1402: Lance (Am7990) Ethernet 1403: @item 1404: Non Volatile RAM M48T08 1405: @item 1406: Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard 1407: and power/reset logic 1408: @item 1409: ESP SCSI controller with hard disk and CD-ROM support 1410: @item 1411: Floppy drive 1412: @end itemize 1413: 1414: The number of peripherals is fixed in the architecture. 1415: 1416: QEMU uses the Proll, a PROM replacement available at 1.1.1.3 ! root 1417: @url{http://people.redhat.com/@/zaitcev/linux/}. The required 1.1 root 1418: QEMU-specific patches are included with the sources. 1419: 1420: A sample Linux 2.6 series kernel and ram disk image are available on 1421: the QEMU web site. Please note that currently neither Linux 2.4 1422: series, NetBSD, nor OpenBSD kernels work. 1423: 1424: @c man begin OPTIONS 1425: 1426: The following options are specific to the Sparc emulation: 1427: 1428: @table @option 1429: 1430: @item -g WxH 1431: 1432: Set the initial TCX graphic mode. The default is 1024x768. 1433: 1434: @end table 1435: 1436: @c man end 1437: 1.1.1.3 ! root 1438: @node Sparc64 System emulator invocation 1.1.1.2 root 1439: @section Sparc64 System emulator invocation 1.1 root 1440: 1441: Use the executable @file{qemu-system-sparc64} to simulate a Sun4u machine. 1442: The emulator is not usable for anything yet. 1443: 1444: QEMU emulates the following sun4u peripherals: 1445: 1446: @itemize @minus 1447: @item 1448: UltraSparc IIi APB PCI Bridge 1449: @item 1450: PCI VGA compatible card with VESA Bochs Extensions 1451: @item 1452: Non Volatile RAM M48T59 1453: @item 1454: PC-compatible serial ports 1455: @end itemize 1456: 1.1.1.3 ! root 1457: @node MIPS System emulator invocation 1.1.1.2 root 1458: @section MIPS System emulator invocation 1.1 root 1459: 1460: Use the executable @file{qemu-system-mips} to simulate a MIPS machine. 1.1.1.2 root 1461: The emulator is able to boot a Linux kernel and to run a Linux Debian 1462: installation from NFS. The following devices are emulated: 1463: 1464: @itemize @minus 1465: @item 1466: MIPS R4K CPU 1467: @item 1468: PC style serial port 1469: @item 1470: NE2000 network card 1471: @end itemize 1472: 1473: More information is available in the QEMU mailing-list archive. 1474: 1.1.1.3 ! root 1475: @node ARM System emulator invocation 1.1.1.2 root 1476: @section ARM System emulator invocation 1477: 1478: Use the executable @file{qemu-system-arm} to simulate a ARM 1479: machine. The ARM Integrator/CP board is emulated with the following 1480: devices: 1481: 1482: @itemize @minus 1483: @item 1.1.1.3 ! root 1484: ARM926E or ARM1026E CPU 1.1.1.2 root 1485: @item 1486: Two PL011 UARTs 1487: @item 1488: SMC 91c111 Ethernet adapter 1489: @end itemize 1490: 1491: A Linux 2.6 test image is available on the QEMU web site. More 1492: information is available in the QEMU mailing-list archive. 1.1 root 1493: 1.1.1.3 ! root 1494: @node QEMU Linux User space emulator 1.1.1.2 root 1495: @chapter QEMU Linux User space emulator 1.1 root 1496: 1.1.1.3 ! root 1497: @menu ! 1498: * Quick Start:: ! 1499: * Wine launch:: ! 1500: * Command line options:: ! 1501: @end menu ! 1502: ! 1503: @node Quick Start 1.1 root 1504: @section Quick Start 1505: 1506: In order to launch a Linux process, QEMU needs the process executable 1507: itself and all the target (x86) dynamic libraries used by it. 1508: 1509: @itemize 1510: 1511: @item On x86, you can just try to launch any process by using the native 1512: libraries: 1513: 1514: @example 1515: qemu-i386 -L / /bin/ls 1516: @end example 1517: 1518: @code{-L /} tells that the x86 dynamic linker must be searched with a 1519: @file{/} prefix. 1520: 1521: @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): 1522: 1523: @example 1524: qemu-i386 -L / qemu-i386 -L / /bin/ls 1525: @end example 1526: 1527: @item On non x86 CPUs, you need first to download at least an x86 glibc 1528: (@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that 1529: @code{LD_LIBRARY_PATH} is not set: 1530: 1531: @example 1532: unset LD_LIBRARY_PATH 1533: @end example 1534: 1535: Then you can launch the precompiled @file{ls} x86 executable: 1536: 1537: @example 1538: qemu-i386 tests/i386/ls 1539: @end example 1540: You can look at @file{qemu-binfmt-conf.sh} so that 1541: QEMU is automatically launched by the Linux kernel when you try to 1542: launch x86 executables. It requires the @code{binfmt_misc} module in the 1543: Linux kernel. 1544: 1545: @item The x86 version of QEMU is also included. You can try weird things such as: 1546: @example 1.1.1.3 ! root 1547: qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \ ! 1548: /usr/local/qemu-i386/bin/ls-i386 1.1 root 1549: @end example 1550: 1551: @end itemize 1552: 1.1.1.3 ! root 1553: @node Wine launch 1.1 root 1554: @section Wine launch 1555: 1556: @itemize 1557: 1558: @item Ensure that you have a working QEMU with the x86 glibc 1559: distribution (see previous section). In order to verify it, you must be 1560: able to do: 1561: 1562: @example 1563: qemu-i386 /usr/local/qemu-i386/bin/ls-i386 1564: @end example 1565: 1566: @item Download the binary x86 Wine install 1567: (@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page). 1568: 1569: @item Configure Wine on your account. Look at the provided script 1.1.1.3 ! root 1570: @file{/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous 1.1 root 1571: @code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}. 1572: 1573: @item Then you can try the example @file{putty.exe}: 1574: 1575: @example 1.1.1.3 ! root 1576: qemu-i386 /usr/local/qemu-i386/wine/bin/wine \ ! 1577: /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe 1.1 root 1578: @end example 1579: 1580: @end itemize 1581: 1.1.1.3 ! root 1582: @node Command line options 1.1 root 1583: @section Command line options 1584: 1585: @example 1586: usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...] 1587: @end example 1588: 1589: @table @option 1590: @item -h 1591: Print the help 1592: @item -L path 1593: Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386) 1594: @item -s size 1595: Set the x86 stack size in bytes (default=524288) 1596: @end table 1597: 1598: Debug options: 1599: 1600: @table @option 1601: @item -d 1602: Activate log (logfile=/tmp/qemu.log) 1603: @item -p pagesize 1604: Act as if the host page size was 'pagesize' bytes 1605: @end table 1606: 1607: @node compilation 1608: @chapter Compilation from the sources 1609: 1.1.1.3 ! root 1610: @menu ! 1611: * Linux/Unix:: ! 1612: * Windows:: ! 1613: * Cross compilation for Windows with Linux:: ! 1614: * Mac OS X:: ! 1615: @end menu ! 1616: ! 1617: @node Linux/Unix 1.1 root 1618: @section Linux/Unix 1619: 1620: @subsection Compilation 1621: 1622: First you must decompress the sources: 1623: @example 1624: cd /tmp 1625: tar zxvf qemu-x.y.z.tar.gz 1626: cd qemu-x.y.z 1627: @end example 1628: 1629: Then you configure QEMU and build it (usually no options are needed): 1630: @example 1631: ./configure 1632: make 1633: @end example 1634: 1635: Then type as root user: 1636: @example 1637: make install 1638: @end example 1639: to install QEMU in @file{/usr/local}. 1640: 1641: @subsection Tested tool versions 1642: 1643: In order to compile QEMU succesfully, it is very important that you 1644: have the right tools. The most important one is gcc. I cannot guaranty 1645: that QEMU works if you do not use a tested gcc version. Look at 1646: 'configure' and 'Makefile' if you want to make a different gcc 1647: version work. 1648: 1649: @example 1650: host gcc binutils glibc linux distribution 1651: ---------------------------------------------------------------------- 1652: x86 3.2 2.13.2 2.1.3 2.4.18 1653: 2.96 2.11.93.0.2 2.2.5 2.4.18 Red Hat 7.3 1654: 3.2.2 2.13.90.0.18 2.3.2 2.4.20 Red Hat 9 1655: 1656: PowerPC 3.3 [4] 2.13.90.0.18 2.3.1 2.4.20briq 1657: 3.2 1658: 1659: Alpha 3.3 [1] 2.14.90.0.4 2.2.5 2.2.20 [2] Debian 3.0 1660: 1661: Sparc32 2.95.4 2.12.90.0.1 2.2.5 2.4.18 Debian 3.0 1662: 1663: ARM 2.95.4 2.12.90.0.1 2.2.5 2.4.9 [3] Debian 3.0 1664: 1665: [1] On Alpha, QEMU needs the gcc 'visibility' attribute only available 1666: for gcc version >= 3.3. 1667: [2] Linux >= 2.4.20 is necessary for precise exception support 1668: (untested). 1669: [3] 2.4.9-ac10-rmk2-np1-cerf2 1670: 1671: [4] gcc 2.95.x generates invalid code when using too many register 1672: variables. You must use gcc 3.x on PowerPC. 1673: @end example 1674: 1.1.1.3 ! root 1675: @node Windows 1.1 root 1676: @section Windows 1677: 1678: @itemize 1679: @item Install the current versions of MSYS and MinGW from 1680: @url{http://www.mingw.org/}. You can find detailed installation 1681: instructions in the download section and the FAQ. 1682: 1683: @item Download 1684: the MinGW development library of SDL 1.2.x 1.1.1.3 ! root 1685: (@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from 1.1 root 1686: @url{http://www.libsdl.org}. Unpack it in a temporary place, and 1687: unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool 1688: directory. Edit the @file{sdl-config} script so that it gives the 1689: correct SDL directory when invoked. 1690: 1691: @item Extract the current version of QEMU. 1692: 1693: @item Start the MSYS shell (file @file{msys.bat}). 1694: 1695: @item Change to the QEMU directory. Launch @file{./configure} and 1696: @file{make}. If you have problems using SDL, verify that 1697: @file{sdl-config} can be launched from the MSYS command line. 1698: 1699: @item You can install QEMU in @file{Program Files/Qemu} by typing 1700: @file{make install}. Don't forget to copy @file{SDL.dll} in 1701: @file{Program Files/Qemu}. 1702: 1703: @end itemize 1704: 1.1.1.3 ! root 1705: @node Cross compilation for Windows with Linux 1.1 root 1706: @section Cross compilation for Windows with Linux 1707: 1708: @itemize 1709: @item 1710: Install the MinGW cross compilation tools available at 1711: @url{http://www.mingw.org/}. 1712: 1713: @item 1714: Install the Win32 version of SDL (@url{http://www.libsdl.org}) by 1715: unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment 1716: variable so that @file{i386-mingw32msvc-sdl-config} can be launched by 1717: the QEMU configuration script. 1718: 1719: @item 1720: Configure QEMU for Windows cross compilation: 1721: @example 1722: ./configure --enable-mingw32 1723: @end example 1724: If necessary, you can change the cross-prefix according to the prefix 1725: choosen for the MinGW tools with --cross-prefix. You can also use 1726: --prefix to set the Win32 install path. 1727: 1728: @item You can install QEMU in the installation directory by typing 1729: @file{make install}. Don't forget to copy @file{SDL.dll} in the 1730: installation directory. 1731: 1732: @end itemize 1733: 1734: Note: Currently, Wine does not seem able to launch 1735: QEMU for Win32. 1736: 1.1.1.3 ! root 1737: @node Mac OS X 1.1 root 1738: @section Mac OS X 1739: 1740: The Mac OS X patches are not fully merged in QEMU, so you should look 1741: at the QEMU mailing list archive to have all the necessary 1742: information. 1743: 1.1.1.3 ! root 1744: @node Index ! 1745: @chapter Index ! 1746: @printindex cp ! 1747: ! 1748: @bye
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.