Linux virtualization alternatives

Updated: 2005-08-30
Created: 2005-08-30

This page is about virtualization, but it focuses on virtualization under the Linux kernel and only on some of the existing virtualization technologies, in particular free software ones.

What is virtualization

Virtualization is the ability to present a resource with a different interface from the one it natively has, usually the difference being one or both of:

If the virtual interface is simpler to use the virtualization is not transparent; if it is merely multiplexed than it is not transparent. Transparency here is the property that the virtualized resource behaves in substantially the same way as the non virtualized interface.

Virtualization is one of the basic techniques of programming; E. Dijkstra wrote that the regarded programming as writing layers of virtual machines. The virtualization we shall discuss here is where basic system resources are virtualized.

Virtualization software

Depending on what is being virtualized and whether the virtualization is transparent or not there are different types of virtualization, and here are some.:

The Linux kernel
The Linux kernel itself is a virtualization system, where the CPU is virtualized into multiplexed virtual processors and the disc drives are virtualized into simpler to use file systems.
The virtualized interface resembles something between a multiprocessor and a cluster with conent addressable permanent storage.
The chroot system call
This system call virtualizes the Linux filesystem interface, by multiplexing its name space.
The Linux VServer
First for those who still haven't heard of the vserver project: It allows you to run linux inside linux: Any distributions inside any distributions. Each virtual server has its own packages, its own services, its own users and is confined to using some IP numbers only and some area(s) of the file system. You can think of them as virtual machines.
This virtualizes several but not all aspects of the Linux interfaces. It is oriented towards creating virtual web hosts more than fully fledged virtual Linux interfaces.
QEMU and QVM86
QEMU is a generic and open source processor emulator which achieves a good emulation speed by using dynamic translation.
QEMU has two operating modes:
  • Full system emulation. In this mode, QEMU emulates a full system (for example a PC), including a processor and various peripherials. It can be used to launch different Operating Systems without rebooting the PC or to debug system code.
  • User mode emulation (Linux host only). In this mode, QEMU can launch Linux processes compiled for one CPU on another CPU.
DOSemu
DOSEMU stands for DOS Emulation, and allows you to run DOS and many DOS programs, including many DPMI applications such as DOOM and Windows 3.1, under Linux.
DOSBOX
DOSBox also emulates CPU:286/386 realmode/protected mode, Directory FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a SoundBlaster/Gravis Ultra Sound card for excellent sound compatibility with older games...
FAUMachine
FAUmachine is a virtual machine, similar in many respects to VMWare™, QEMU or Virtual PC™.
What distinguishes FAUmachine from these other virtual machines, are the following features:
  • The FAUmachine virtual machine runs as a normal user process (no root privileges or kernel modules needed) on top of (currently) Linux on i386 hardware. The port of FAUmachine to OpenBSD and Windows is in progress.
  • Fault injection capability for experimentation in FAUmachine.
  • Experiment Controller for automating experiments and tests. We also ship example scripts for the Experiment Controller that allow the automatic installation of some Linux distributions using the distribution's cdrom.
The FAUmachine virtual machine can currently run in one of three different modes, each with it's advantages and disadvantages:
the traditional mode
Using an adapted bootloader and running a slightly modified Linux kernel.
using the FAUmachine JIT (Just-In-Time-Compiler)
This allows you to run normal, absolutely unmodified Linux systems, at the cost of some performance. This mode can also execute DOS, but with some limitations (no virtual x86 mode for example).
using the QEMU CPU
This mode basically uses the virtual CPU from Fabrice Bellard's excellent QEMU simulator, which can execute almost anything a real x86 CPU can execute too.
UML
Xen
CoLinux
WINE and Cedega

Resources