Virtualization and Emulation Choices in Linux
I have a decent computer with a large hard drive. My initial intent was to boot multiple different operating systems (as can be seen by the 6+ EXT3
partitions). However the latest technology hype is the need for virtualization or emulation. In effect, this would allow loading one operating system inside another without any reboot.
I use the term “hype” because the consumer demand (i.e. non admins, non developers, people with real lives) is very low. My personal issue, as is shared by Linux users in general, is often the need to boot into windows for a single website or for developers testing a webpage. Additionally some users prefer to test a new Linux without having to lose their primary system. Not everyone has a convoluted partition scheme like I do.
So I did some hunting (well not much). Being the frugal fedora friendly fellow that I am, I wanted a general purpose low cost solution. The choices I have are VMware Server, Xen and QEMU.
VMware Server
VMware is a professional NON-open source software. It provides virtualization so that the client operating system running inside the server can see the resources of the host directly. This is good.
The good:
- Full virtualization
- Free download
- Provides prepackaged RPM’s
- Can run Windows inside Linux
The bad:
- Registration key requires full address, email, phone and other information
- Not open source, EULA, etc.
- Known to have problems with system updates
Xen
Xen is an fully open source package for unix-based operating systems. It provides virtualization with support from the kernel.
The good:
- Supported directly through Fedora
- Kernel support drastically improves performance
The bad:
- Requires separate kernel
- ACPI does not properly work in xen-enabled kernels. Hence no cpu frequency scaling or suspend. (very bad)
- Some drivers have problems running inside a Xen client operating system.
- Cannot run Windows on all hardware
QEMU
QEMU is an open source CPU emulator. Emulators have to re-interpret every instruction from the client operating system, hence significant speed loss. It supports various cpu’s including x86, x86-64, ARM, PPC, etc. It has a kernel accelerator module which helps performance.
The good:
- Supported directly through Fedora Extras
- Can run Windows inside Linux
- Can run 2 completely separate architectures together
The bad:
- Very very slow
- Kernel accelerator is proprietary with a restrictive license
Thoughts and Concerns
I have not yet tested VMware server because I personally think that the information collected is not worth it. I would rather pay a nominal fee ($10-20) for a key. I have tested WMWare Player (no registration required) which can load virtual machines created in the Server. I found it incredibly slow and some non-trivial setup steps.
I do not plan on bothering with Xen due to the loss in ACPI functionality. I don’t think I want my computer hardware limited just so I can load another operating system with less memory running slower which is already limited due to the virtualization. Some newer CPU’s from Intel and AMD have been reported to support features that will allow Windows to run in Linux in Xen. Of course, obviously will require new hardware. Additionally Xen still has quite a few bugs. Perhaps once it is running smoothly and the hardware becomes standard I will switch to that solution.
So far, I am using QEMU which seems to work well enough. I have tested Windows 98, NT4, 2000 and Fedora Core 3 all with adequate performance. I even once tested FC5-64bit inside of FC5-32bit (3 hour installation and 30 min boot is NOT worth the time) – (there is a Youtube video loading XP on the PlayStation 3 using QEMU). Even though QEMU can be horribly slow it does serve its purpose. I have seen IE6 in Windows 2000 emulated loading pages faster than Firefox 1.5 native in FC6!!!
I have a working solution currently. I am keep a watch on the emulation and virtualization technologies hitting the market. Not having to reboot to test something would be wonderful. My ultimate configuration would be a 64-bit host Linux with a virtualized Windows XP 32-bit and virtualized Linux 32-bit. … The time will come eventually.