Using QEMU for operating system virtualization

Fortunately, it’s not the only game in town. Different ways of tackling virtualization have led to a number of different software packages including VMware, Xen, VirtualPC, and Usermode Linux. Another virtualization program is called QEMU and it’s a lot like VMware in concept.

The first step is to grab QEMU from the project Web site. You can download the source or binaries for different platforms. Once the software is installed, you can install your first virtual operating system. The next step is to create a disk image:

<code>
$ qemu-img create linux.img 2G
</code>

This creates a 2-GB image file that will be used for the virtual hard drive. You can use different formats for the image file; you can even use the VMware vmdk image format. The default (raw) format is the best for Linux guest operating systems as it will only take up as much space as required.

Next, grab an ISO image of your favorite Linux distribution, or the CD-ROM it came on. In this case, the ISO image used is the Mandriva Linux 2006 DVD install image. The next step is to start QEMU and tell it to use the image and to boot from it, and at the same time, let it know that our newly created image file is the primary hard drive for this virtual machine:

<code>
$ qemu -boot d -cdrom ~/Mandriva-Linux-Powerpack-2006-DVD.i586.iso -hda linux.img
</code>

This tells QEMU to boot first off the CD-ROM (-boot d), that the CD-ROM device is an ISO image (-cdrom; or use -cdrom /dev/cdrom if you are using a real CD), and that the /dev/hda device to the virtual machine is the file linux.img.

Proceed with the install as usual; when the installation is done and you have to reboot, change the command line to something like:

<code>
$ qemu -boot c -cdrom /dev/cdrom -hda linux.img -user-net -m 256
></code>

This tells QEMU to boot off of the hard drive and to use /dev/cdrom as the CD-ROM device; it allows networking and assigns 256 MB of RAM to the virtual machine.

QEMU isn’t as fast or as feature-rich as VMware, but it’s still quite capable. It has support for 64-bit hosts and guests–something that VMware is just now introducing in recent betas, but which require very recent 64-bit host CPUs. If you’re looking for a cheap way to virtualize an operating system or two for testing purposes, QEMU may be a great alternative to an expensive and proprietary solution.