Qemu
From Computer History Wiki
Qemu is a machine emulator & system virtualizer.
Qemu can emulat numerious CPU's and machine types. Most are geared towards running Linux, the x86/x64 emulators are the most flexable, and most well used. The current version is 0.13.0 rc1.
As of 0.13.0 the following machine emulators are available:
- i386-softmmu IBM PC emulator
- x86_64-softmmu x64 IBM PC emulator
- arm-softmmu
- cris-softmmu
- m68k-softmmu
- microblaze-softmmu
- mips-softmmu
- mips64-softmmu
- mipsel-softmmu
- mips64el-softmmu
- ppc-softmmu
- ppcemb-softmmu
- ppc64-softmmu
- sh4-softmmu
- sh4eb-softmmu
- sparc-softmmu
- sparc64-softmmu
While not active, there is also the following in the tree:
- s390x-softmmu (it relies on KVM, and I haven't found the appropriate linux kernel for it yet.)
- Dec Alpha (really incomplete)
Running Qemu
Qemu is driven by command line arguments... The first thing that you typically do is setup a virtual hard disk with qemu-img. Once your disk is ready then you can configure each system emulator with various flags.
qemu-img
qemu-img version 0.9.0, Copyright (c) 2004-2007 Fabrice Bellard usage: qemu-img command [command options] QEMU disk image utility Command syntax: create [-e] [-b base_image] [-f fmt] filename [size] commit [-f fmt] filename convert [-c] [-e] [-f fmt] filename [-O output_fmt] output_filename info [-f fmt] filename Command parameters: 'filename' is a disk image filename 'base_image' is the read-only disk image which is used as base for a copy on write image; the copy on write image only stores the modified data 'fmt' is the disk image format. It is guessed automatically in most cases 'size' is the disk image size in kilobytes. Optional suffixes 'M' (megabyte) and 'G' (gigabyte) are supported 'output_filename' is the destination disk image filename 'output_fmt' is the destination format '-c' indicates that target image must be compressed (qcow format only) '-e' indicates that the target image must be encrypted (qcow format only) Supported format: qcow2 vvfat vpc bochs dmg cloop vmdk qcow host_device raw
Qemu
Please note that some of these flags change between versions
Qemu 0.10.5
QEMU PC emulator version 0.10.5, Copyright (c) 2003-2008 Fabrice Bellard usage: qemu [options] [disk_image] 'disk_image' is a raw hard image image for IDE hard disk 0 Standard options: -h or -help display this help and exit -M machine select emulated machine (-M ? for list) -cpu cpu select CPU (-cpu ? for list) -smp n set the number of CPUs to 'n' [default=1] -fda/-fdb file use 'file' as floppy disk 0/1 image -hda/-hdb file use 'file' as IDE hard disk 0/1 image -hdc/-hdd file use 'file' as IDE hard disk 2/3 image -cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master) -drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i] [,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off] [,cache=writethrough|writeback|none][,format=f][,serial=s] use 'file' as a drive image -mtdblock file use 'file' as on-board Flash memory image -sd file use 'file' as SecureDigital card image -pflash file use 'file' as a parallel flash image -boot [a|c|d|n] boot on floppy (a), hard disk (c), CD-ROM (d), or network (n) -snapshot write to temporary files instead of disk image files -m megs set virtual RAM size to megs MB [default=128] -audio-help print list of audio drivers and their options -soundhw c1,... enable audio support and only specified sound cards (comma separated list) use -soundhw ? to get the list of supported cards use -soundhw all to enable all of them -usb enable the USB driver (will be the default soon) -usbdevice name add the host or guest USB device 'name' -name string set the name of the guest -uuid %08x-%04x-%04x-%04x-%012x specify machine UUID Display options: -nographic disable graphical output and redirect serial I/Os to console -no-frame open SDL window without a frame and window decorations -alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt) -no-quit disable SDL window close capability -sdl enable SDL -portrait rotate graphical output 90 deg left (only PXA LCD) -vga [std|cirrus|vmware|none] select video card type -full-screen start in full screen -vnc display start a VNC server on display Network options: -net nic[,vlan=n][,macaddr=addr][,model=type][,name=str] create a new Network Interface Card and connect it to VLAN 'n' -net user[,vlan=n][,name=str][,hostname=host] connect the user mode network stack to VLAN 'n' and send hostname 'host' to DHCP clients -net tap[,vlan=n][,name=str],ifname=name connect the host TAP network interface to VLAN 'n' -net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port][,connect=host:port] connect the vlan 'n' to another VLAN using a socket connection -net socket[,vlan=n][,name=str][,fd=h][,mcast=maddr:port] connect the vlan 'n' to multicast maddr and port -net none use it alone to have zero network devices; if no -net option is provided, the default is '-net nic -net user' -tftp dir allow tftp access to files in dir [-net user] -bootp file advertise file in BOOTP replies -redir [tcp|udp]:host-port:[guest-host]:guest-port redirect TCP or UDP connections from host to guest [-net user] -bt hci,null dumb bluetooth HCI - doesn't respond to commands -bt hci,host[:id] use host's HCI with the given name -bt hci[,vlan=n] emulate a standard HCI in virtual scatternet 'n' -bt vhci[,vlan=n] add host computer to virtual scatternet 'n' using VHCI -bt device:dev[,vlan=n] emulate a bluetooth device 'dev' in scatternet 'n' Linux boot specific: -kernel bzImage use 'bzImage' as kernel image -append cmdline use 'cmdline' as kernel command line -initrd file use 'file' as initial ram disk Debug/Expert options: -serial dev redirect the serial port to char device 'dev' -parallel dev redirect the parallel port to char device 'dev' -monitor dev redirect the monitor to char device 'dev' -pidfile file write PID to 'file' -S freeze CPU at startup (use 'c' to start execution) -s wait gdb connection to port -p port set gdb connection port [default=1234] -d item1,... output log to /tmp/qemu.log (use -d ? for a list of log items) -hdachs c,h,s[,t] force hard disk 0 physical geometry and the optional BIOS translation (t=none or lba) (usually qemu can guess them) -L path set the directory for the BIOS, VGA BIOS and keymaps -bios file set the filename for the BIOS -kernel-kqemu enable KQEMU full virtualization (default is user mode only) -no-kqemu disable KQEMU kernel module usage -no-reboot exit instead of rebooting -no-shutdown stop before shutdown -loadvm [tag|id] start right away with a saved state (loadvm in monitor) -option-rom rom load a file, rom, into the option ROM space -clock force the use of the given methods for timer alarm. To see what timers are available use -clock ? -localtime set the real time clock to local time [default=utc] -startdate select initial date of the clock -icount [N|auto] enable virtual instruction counter with 2^N clock ticks per instruction -echr chr set terminal escape character instead of ctrl-a -virtioconsole c set virtio console -show-cursor show cursor -tb-size n set TB size -incoming p prepare for incoming migration, listen on port p During emulation, the following keys are useful: ctrl-alt-f toggle full screen ctrl-alt-n switch to virtual console 'n' ctrl-alt toggle mouse and keyboard grab When using -nographic, press 'ctrl-a h' to get some help.
i386
i386 target only: -win2k-hack use it when installing Windows 2000 to avoid a disk full bug -rtc-td-hack use it to fix time drift in Windows ACPI HAL -no-fd-bootchk disable boot signature checking for floppy disks -no-acpi disable ACPI -no-hpet disable HPET -acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,data=file1[:file2]...] ACPI table description
Qemu tutorials
So far we've setup the following tutorials suitable for Qemu:
- Installing Windows NT 3.1 on Qemu
- Installing Windows NT 3.5 on Qemu
- Installing Windows NT 3.51 on Qemu
- Installing Windows NT 4.0 on Qemu
- Installing Windows NT 4.0 on Qemu(MIPS)
- Installing NeXTSTEP on Qemu This also gives a guide on compiling Qemu.
See Also
- Qemu's main site - http://www.nongnu.org/qemu/index.html
- Win32 builds of Qemu including ready to run images http://www.h7.dion.ne.jp/~qemu-win/
- support forum on Qemu - http://qemu-forum.ipi.fi/