Qemu

From Computer History Wiki
Revision as of 22:43, 26 July 2009 by Neozeed (talk | contribs)
Jump to: navigation, search

Qemu is a machine emulator & system virtualizer.

Windows NT 4.0 starting up under Qemu

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.10.5.

As of 0.10.5 the following machine emulators are available:


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:

See Also