The Best Virtualization Program You've Never Heard Of

VMWare has been around forever, Xen benefited from a lot of hype, but don't miss this solid, open source performer from Sun.

VMWare and Xen are the top dogs of the virtualization
world, but they are not your only choices. Another worthy contender is
VirtualBox, which has been called "the best virtualization program you've never
heard of." At the least it's one of the easiest to use. We're going to compare
the three, and then install and run VirtualBox.

VMWare has been around for a long time, and the workstation edition is an
old favorite for cross-platform developers. The enterprise editions do more
than let you turn a single server into a server farm; they also do resource and
storage allocation, and some fancy network management tricks. It's not just a
hypervisor;
it's a Solution. VMWare lets you use either Linux or Windows as the host
operating system, except for the ESX and ESXi editions. These are Type 1
hypervisors, which means they run between the bare metal and the guest
operating systems, which can be pretty much whatever you want. Hypervisors that
require a host operating system, like VMWare Workstation and Server, are Type 2
hypervisors. VMWare supports both Linux and Windows as host operating
systems.

Xen is probably the most-hyped virtualizer, though the hype didn't last
long: You have to go back a couple of years to get the full benefit. It is a
Type 1 hypervisor, with a twist - it requires the guest operating systems to
have modified kernels so they know
that they are running in a virtualized environment. Xen calls this
paravirtualization. Xen 3.0 can run unmodified guests, including Windows, if
the system CPU supports x86 virtualization. These days a lot of CPUs have this;
on Intel it's called Intel VT (virtualization technology), and AMD calls it
AMD-V (you guess what the V stands for.) Linux will tell you if yours has
it:

$ egrep '(vmx|svm)' /proc/cpuinfo

vmx is Intel, and svm is AMD.

"Unmodified guests" has some limitations. You might be able to able to get
any random guest OS running after a fashion, but the reality is the virtualizer
needs various optimizations for the different operating systems, so a limited
number are well-supported.

VMWare is closed-source, though they have the free-beer Server and Desktop
editions. Xen is now owned by Citrix, and has both a free open-source edition
and paid commercial versions. The open-source edition is community-supported
and has fewer features than the paid versions.

VirtualBox

VirtualBox was developed by innoTek, which was purchased by Sun in February
2008. Originally VirtualBox was closed-source; then in 2007 it was released
under GPL2. Now there are two editions, VirtualBox and VirtualBox OSE
(open-source edition). OSE is missing a few features found in the full version,
the most notable one being USB support. This is explained thusly:

"It is functionally equivalent to the full VirtualBox package, except for a
few features that primarily target enterprise customers."

Doesn't everyone need USB? If you don't mind using a closed-source binary,
you may use the full
version free of cost for personal use or evaluation. OSE is included in
some distributions, such as Debian and OpenSUSE. The download page has binary packages
and instructions.

VirtualBox is a Type 2 hypervisor, so it needs a host operating system,
which can be Linux, Mac OS X, Open Solaris, or Windows, both 32-bit and 64-bit.
This table shows
supported guest operating systems. If you want to run OS/2 or DOS, you don't
even need supported hardware-VirtualBox takes care of it.

Creating a Virtual Machine

After installation, add yourself to the vboxusers group, then log out
and log back in. You should find a program launcher in your System menu, or
enter the virtualbox command in a terminal. Up pops a nice graphical
control panel with a single option activated, New. Go ahead- click it. You get
a wizard that walks you through creating a new virtual machine. Keep in mind
that memory allocation is additive- each running virtual machine needs its own
allocation of RAM, so you're dividing up whatever you have. For example, if you
install four guest OSes that each require 500 MB RAM, and you only have a
gigabyte, then you can only run your host system plus one virtual machine at a
time.

You'll have to create a new virtual hard disk. You can either create a
dynamic disk or fixed-size. The dynamic virtual hard disk uses the minimum disk
space necessary, and expands as needed to a maximum limit. A fixed-size virtual
hard disk is always the same size. You get a bit faster performance with a
fixed-size virtual image. This will be created in your home directory, unless
you specify a different location.

Installing a Guest OS

Well that was fun and easy, but all you have is an empty VM. Now it's time
to install a guest OS. You'll need complete installation media, because a
network installation isn't going to work.

First make sure VirtualBox has correctly recognized your CD/DVD drive. Mine
didn't; the kernel name is /dev/hdd, but VirtualBox insisted that it is
/dev/cdrom. Well it taint so. You can find the correct kernel name for
your drive with dmesg:

The fix is to edit the configuration file for your new virtual machine,
which on my system is
/home/carla/.VirtualBox/Machines/debian1/debian1.xml. Look for this
section:

<DVDDrive passthrough="true">
<HostDrive src="/dev/hdd"/>
</DVDDrive>

Just change the HostDrive src line to the correct value.

Stick your installation CD/DVD in the drive, start up VirtualBox, and then
start your new VM, which you do by clicking the Start button. If you click the
Settings button for your new VM it may complain about not being able to detect
the CD/DVDROM. Ignore it; it doesn't know what it's talking about.

First you'll get a message telling you how the VM auto-captures the keyboard
and mouse, and how to uncapture them if necessary. Make that go away, and then
you'll see an InnoTek logo. You can hit F12 to select the boot device, but it
should boot your installation disk automatically. From here it's an ordinary
installation. When you're finished, hitting the Start button will boot your new
VM.

In part 2 we'll learn how to make snapshots, manage our VMs, and use Guest
Additions for better performance. You can get a head start with the Virtual Box user
manual, and be sure to check the FAQ for various issues regarding
using Linux as the host OS.