Seamless virtual machines, the best thing since sliced bread.

by Jack Email

I've been experimenting with virtual machines (VMs) recently and am convinced that this is the way forward for computing in general. System or hardware virtual machines are essentially instances of an operating system which share an underlying physical computer platform. The layer separating the virtual machine from the physical machine is the virtual machine monitor (VMM). Put bluntly, I'm running one 'computer' on top of another.

"But why," you ask?

It's simple, really. Our computing needs rapidly expand past the ability of just one operating system to provide. If you own a Mac, you may want to run some software that is only available for Windows. If you run Windows, you might want to run something a little more secure when you do your online banking. If you run Linux then there may be times you want to load a game that just will never run without real DirectX.

Granted, if you stick to just basics, there is absolutely no need to extend your computing beyond the abilities of any one of those operating systems. Mac, Windows, and Linux all provide excellent web, email, music, image manipulation, and office suite programs. If that is all you need to do, stick with the system you've got and look no further. But if you want more, it is easily within your grasp.

Follow up:


To run a virtual machine, or host another operating system on your computer, you need that 'layer' that separates whatever it is you feel like running from your physical machine. This isn't like dual-booting with Mac's BootCamp, or setting up a GRUB bootloader on Linux. It is, however, very similar to the way that Windows7 runs "Windows XP-mode", if you're familiar with that.

Let's face it, dual booting is a massive pain. Dual booting is a good way to get around operating system limitations only if you don't mind wasting your time every time you need to switch between systems. Try switching back and forth between Linux and Windows a couple times a day and you will quickly tire of watching paint dry during boot ups and shut downs. Enter the VMM.

There are quite a number of VMM software packages but for the scope of this, I will be talking only about VirtualBox by Sun Microsystems. First, VirtualBox is open source software, and free to download and use. Second, it is available for Windows, Mac, Solaris, and Linux. VirtualBox's website provides details on installation and setup pretty well, and I'll be posting a separate addendum later with some hints for those interested.



There's a few things that need to be considered first, before you set up a virtual machine on a host. VirtualBox, as well as other VMMs do not handle 3D acceleration very well yet. The VMM is providing a visible hardware layer to the client operating system, it does not provide for full discovery or access. Your screaming fast Radeon 5970GTX isn't going to be fully utilized by a Windows virtual machine running on Mac or Linux. Your game controller probably isn't going to work, and in fact mouse support is just standard, meaning 3 button + scroll. 21 button mice will not provide additional functionality inside the client VM. This means that for a fully functional host-client system, you may want to run Windows or OS X as the VM host to obtain full functionality on 3D and multimedia tasks. If gaming or multimedia are not a concern, feel free to configure your host and VM clients any way possible.

For my own purposes, I installed VirtualBox on separate Windows7 and Mac OS X hosts. I then installed Ubuntu Linux on both machines, as well as Windows XP on the Mac. Installation of a client operating system requires that you have available either a physical disk or a disk image from which to boot and install. You go through each system's installation procedure like normal, except it all happens in a little window on your screen. Once you've got your new operating system up and running in a window, you'll want to install 'guest additions' to enable some more advanced features, including seamless mode. Each host-client pair requires a different procedure, so be sure to check the user manual to do it properly.

Once VirtualBox is running with guest additions installed, you have the ability to extend the client operating system window from just a window to a seamless mode. Running seamless takes a little while to get used to, because it overlays portions of the client operating system onto the host. The effect is nothing short of spectacular. Here are two screens of OSX running a WinXP client and Windows7 running a Ubuntu client. Host and client windows are freely accessible and movable, blurring the distinction between what window is running in which system. The menu bars are stacked, giving you free access to either by just clicking. If you don't think about the fact you are simultaneously running two different and completely separate systems it appears totally... seamless.

In the first screenshot, you can see the OSX menu at the bottom of the screen with the Windows XP task bar just above it. I didn't take the time to tweak the configuration of either one to make them stack a little more aesthetically. The Mac Finder window is sitting just above the WinXP start menu, both active and accessible. In the second shot, Ubuntu is running as a virtual client on Windows 7. The Ubuntu menu bar is at the top, the Windows7 menu bar at the bottom. Just above the Windows7 bar is the bottom toolbar from Ubuntu . Firefox and Evolution email are running in Linux windows just below World of Warcraft running natively in Windows.

It's the seamless integration that shines as a feature of VirtualBox. Being able to open a Firefox window running in Linux or browse email from my cousin with his frequent unsafe attachments - all safely sandboxed from the underlying host operating system is extremely convenient. Being able to do all that while doing image manipulations, writing this post, while playing a game in Windows is, cliché as it is: priceless.

I stated right at the beginning that virtualization is a clear path for computing in general. Why? Because once the virtualization layer itself becomes the root (or host) operating system, virtualization can proceed to a process level seamlessly. Once you have subjugated the operating system to merely a framework within which to run a client program/window, it becomes mostly irrelevant. As the operators of a productivity tool (the computer), it is what applications we wish to run that matter to us, not the host of those programs. The brand of our program dock or menu bar at the bottom becomes trivial.

I envision we'll soon see VMMs as a true host environment within the next several years, probably based on Linux (because it's open source and free). The challenge is being able to explicitly expose the physical hardware to each virtual client so that the host isn't imposing unnecessary limitations. The client layers would then operate together in a completely integrated yet compartmented fashion. You launch Microsoft Word from your toolbar, and it runs in a Windows window. Adobe Photoshop could launch in a OSX window, while you browse the internet in a Linux window. Each program is isolated from the others, preventing rogue processes from causing harm to other applications, user data, or the underlying host layer. If one program crashes, it does so with no impact on the rest of the system.

Since each virtual machine is stored as a 'file' on the host, backup and restore of entire virtual machines is simple and painless. VM's also will be portable between hosts, as easy as plugging in a flash drive. There would be no need to worry about syncronization between your computer at work and the one at home, because they are the same machine, carried on a USB stick.

There are definitely challenges to be overcome, not the least of which is our current mindset of 'operating system' as 'computer'. Go ahead, turn off seamless mode on VirtualBox and look at WindowsXP running in a window. It feels comfortable to us. You know where your programs are; you know Windows Explorer is there doing its thing, just like GarageBand or iPhoto are doing what they're supposed to do. It's a little scary to take away the borders and let it all run together. But doing just that will let us move beyond the limitations imposed upon us by brands and corporations.

Now that's real freedom in the computer world.




Further reading, relevant links:

VirtualBox x86 and AMD64/Intel64 virtualization product for enterprise as well as home use
http://www.virtualbox.org/

Ubuntu Linux
http://www.ubuntu.com/

Windows 7
http://www.microsoft.com/windows/windows-7/

The world's most advanced operating system: finely tuned.
http://www.apple.com/macosx/

Make A Virtual Machine Your Safe Internet-Browsing Sandbox
http://www.devx.com/vmspecialreport/Article/30377

2 comments

Comment from: kral oyun [Visitor] · http://www.oyunkral.gen.tr
***--
nice article. thank you for sharing.
01/06/10 @ 16:47
Comment from: Lucy [Visitor]
I recently came across your blog and have been reading along. I thought I would leave my first comment. I don't know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.

Lucy

02/15/10 @ 03:58

Leave a comment


Your email address will not be revealed on this site.

Your URL will be displayed.
(Line breaks become <br />)
(Name, email & website)
(Allow users to contact you through a message form (your email will not be revealed.)
What color is green?
antispam test