Virtualization for Desktop / Laptop / Workstation
Well, by this time, you probably already known that in my book VirtualBox is the clear winner for desktop virtualization solution. However, I’d like to walk you through my assessment of the other solutions and how I got into VirtualBox.
Desktop virtualization has different requirements than server. On desktop, you may not need a “hardened” or as stable solution as for server. On desktop, the requirements are more towards ease of use and support for Windows OS either as guest OS or host OS. Typically on a desktop, you’d probably run only 1 virtual machine, rarely 2. So here’s my lists of candidates and some reasoning why I choose it / not choose it.
As mentioned before, PearPC is a nice one to run Mac OS X on a regular PC hardware by emulating PowerPC architecture. However, because Mac has switched to Intel processor, I don’t see the need to use this anymore. It’s true that the Intel version of Mac OS X won’t run on non-Apple hardware, but there are some cracks out there that you can download and have Mac OS X runs on your regular PC hardware without the need of virtualization. However, I’m not into it and I think I’d rather have any Linux distribution, make it look like Mac OS X and work on Linux. Besides, Mac OS X is actually a Unix-based OS.
I would pass on Bochs as there are other solutions that’s faster and better. And since I’m not on PowerPC platform, there’s really no need for me to run Bochs. If I were to work on creating an OS or developing OS, I’d probably use Bochs as my virtualization platform of choice. It’s more for academic rather than daily use.
Any of Microsoft’s virtualization solutions
Microsoft has their own virtualization solutions (VIrtualPC line that they acquire from Connectix) and VirtualServer 2005. Being Microsoft product, they are geared towards running Windows family guest OS. Just because of that fact, I’m not even considering it. It’s true that you can install Linux and other OS that can run on x86 hardware. However, I feel that for the trouble that I need to do to get it working, there are other solutions that better fit me. VirtualServer 2005 is free and even though I haven’t tested it personally, it requires Windows Server family OS which automatically rules it out as my choice of desktop virtualization.
VMWare Workstation & VMWare Fusion
At work, they gave me a MacBook Pro. For running Windows XP, they were about to purchase a license of VMWare Fusion for me. Initially I declined thinking that I’ll save my company some $$$ and go with VirtualBox instead. However, their Windows XP version is only for 64-bit computer. At that time VirtualBox doesn’t support 64 bit guests. So I decided to use VMWare Fusion on my MacBook Pro.
For Fusion, I like their unity feature (which I don’t believe VirtualBox has) where you can have a window on guest OS runs as if it’s an application on your MacOS X. Or in other words, you VMWare Fusion makes it seamless to run Mac OS X and Windows. At work, I always connect my laptop to an external monitor. Initially I had Fusion running and have the unity feature turned on and have Mac OS X doc on my laptop screen and Windows Start bar on my external monitor and I was happily utilizing both worlds seamlessly.
After a while, I got tired of it. I think the unity feature of Fusion needs to be improved. It’s rather slow, in my experience working in unity mode. So I ended up having Windows on full screen on space 2 on Mac OS X and work on Mac OS X on space 1. Now if I don’t use unity feature, then I think the one advantage of VMWare Fusion is nullified and I can simply have VirtualBox as a drop-in replacement, especially now that VirtualBox has support for 64-bit guest on Mac OS X according to their change log release on Dec 2008.
Xen & KVM
Because the CPU on the laptop supports virtualization, I had 2 choices of virtualization solution on my HP laptop: KVM and Xen. I know Xen is geared towards server. However, there is a nice GUI front end from RedHat that can manage both Xen and KVM virtual machines easily. This will work if your desktop’s main OS is Linux and you want Windows as secondary guest.
What I initially want is to have my original Windows installation from the manufacturer and setup a dual boot system with Linux. That way, if I need to use maximum resources while running Windows (for example running games), I can simply boot to Windows. However, when I need to work and do my programming stuff, I can boot on Linux. However, I’d also like an option of booting Windows while in Linux in case I need to use some software that’s available on Windows only; for me that means mostly TextPad. I know there’s Wine and other Windows emulator, but since the CPU is capable of virtualization, I thought why run Windows in virtualized environment while in Linux. I’m going to document it on my Ubuntu + Virtualization + Windows on HP TX1499US Laptop article.
I have to confess that I’m not that familiar with KVM. However, a little bit poking around the documentation and a few simple experimentation, I don’t think that it is capable in running an existing Windows installed on its own hard drive partition. So I have to toss KVM away, again.
I know Xen, however, is capable of booting existing installation of Windows, which serves my goal precisely. So then I restore my laptop’s Windows installation using HP’s recovery disk, then installed Ubuntu 8.10 on it (I have to resize partition since HP recovery program doesn’t allow me to allocate partitions), then start adding Xen from Ubuntu package. However, things doesn’t run as smoothly as I’d like it to be. It turned out that Ubuntu 8.10 doesn’t have packages ready for Ubuntu to become Dom0 (Host OS). They do have packages for Ubuntu as DomU (Guest OS). Alas … my only option is to complile Xen from scratch now or change to Ubuntu 8.05 or other distributions. I wasn’t willing to do either, so I had to discard Xen. Going on to the next virtualization solution.
So here we go again … I don’t know what’s with VirtualBox, but to me, this is a clear winner. It is supported on many OSes that I use (Linux, Windows, Mac OS X), it has nice guest additions, and it’s free. Moreover, I think it’s pretty fast as well. As I mentioned in the beginning of this article, I was able to run 3 instances of it and run pretty heavy computation on all 3 of them and having decent performance. However, VirtualBox can’t boot existing Windows installation. That sucks. So going to my original goal, I’ll have to choose one of the 3 possibilities below:
- Keep flexibility of dual booting & ability to boot existing Windows installation using Xen however choose another distro other than Ubuntu 8.10
- Keep flexibility of dual booting & ability to boot existing Windows installation using Xen however compile Xen from scratch
- Sacrifice the flexibility of dual booting & ability to boot existing Windows installation. We’ll use either KVM or VirtualBox in that case
Well, at this point, I’m very familiar with VirtualBox. So naturally that’s what I’ll choose and use. KVM for some reasons, I guess because of having QEMU element of it, I’m not really interested. Again, not that QEMU is a bad solution. It’s just that I’m not tickled by it for some reasons (actually for no reasons).
There you have it … so in light of the things that I’ve gone through, what I’ll be using for my Ubuntu + Virtualization + Windows on HP TX1499US Laptop is Ubuntu 8.10 as the only OS on the laptop with VirtualBox installed. Since HP restore CD won’t boot on VirtualBox instance, I’m forced to borrow a Windows Vista DVD from my friend and install Windows Vista from within VirtualBox.
I hope this article helps you. As always, I welcome comments / questions / critics that will help me and other readers understand better.