Virtualization on Mac

Click me, I'm deliciousWe’ve got some new machines in for the Wikimedia staff, and among them a shiny Core 2 Duo iMac has found its way to my desk as my in-office development workstation. Yum!

Doing web development, I need to have access to a number of operating systems for testing purposes: Linux servers, Windows clients, Windows servers, Linux clients, Mac clients, and the occasional other oddity.

In theory, at least, an Intel-based Mac should be the ideal environment to run this: test the Mac clients on the main OS, and everything else running in virtualization at full speed. The new Core 2 Duo boxes are further capable of running both i386 and x86_64 guest OSs, for full coverage.

With this in mind I’ve fiddled around for a while with the main desktop-level virtualization packages on the Mac to get a feel for what’s available… unfortunately the field isn’t very thick.

Basically there’s Parallels and the beta of VMware Fusion. There’s also some QEMU-based packages, but last I tried that was very unsatisfactory, both slow and unstable.


The good:

  • A real shipping product!
  • Relatively inexpensive
  • Good Windows integration (drivers, keyboard and mouse handling, filesystem integration)

The bad:

  • No 64-bit guest support — 32-bit only
  • Guests can only use one CPU core
  • No guest tools support for Linux; GUI desktops are slow and awkward to use
  • No snapshots
  • Snapshotting is the ability to save the state of the virtual machine, run it further, then return to the saved state. You can use this to roll back installation of experimental software, for instance. *Very* useful when developing and testing software, for obvious reasons.

    Since this has been part of VMware Workstation for some time, I had hoped to find it also in…

    VMware Fusion

    The good:

    • Based on the mature VMware engine
    • Portability of VMs to and from VMware Workstation and Player on other platforms
    • 64-bit guest support
    • Dual-processor guest support
    • Guest tools & drivers for Linux and some other Unix clients as well as Windows
    • Limited support for snapshots

    The bad:

    • Still in beta; there’s no shipping product and you can expect problems.
    • Last I checked, networking was horribly broken, but that may be better on beta 2 (need to try it more)
    • As of beta 2 only allows a single snapshot per VM

    That single snapshot limitation is *horrible* from my perspective; it’s totally arbitrary and wrecks much of the usefulness of it.

    An example of one of my prime uses for snapshots on VMware Workstation was maintaining a single copy of Windows XP in both IE 6 and IE 7 states; I could switch back and forth between them at will, while still using the snapshotting for more local changes. That’s something I couldn’t do with only a single snapshot available — I’d have to install two separate copies, which would imply a second license. And then I’d still be stuck with only a single snapshot for all my debugging uses!

    The quick fix

    For now I’ve wiped the disk and installed Ubuntu Linux, so I can run VMware Workstation for Linux. I’ve got the full range of snapshotting features available, and can still use my laptop for Mac client testing and all the other happy shiny Mac OS X goodness.

    Of course there were some installation issues… ;)

    iMac vs Ubuntu

    • Distorted screen at native resolution with VESA video driver (proprietary ATI driver works once fiddled with a bit)
    • Installation fails on setup of GRUB bootloader with a Boot Camp dual-boot configuration; you have to wipe the disk and install a DOS partition map
    • Sound doesn’t work
    • Doesn’t seem to wake from Suspend
    • … and probably others ;)

    Hopefully Parallels will catch up or they’ll get proper snapshotting into Fusion and I can someday reinstall Tiger (or perhaps Leopard by then), but in the mean time it looks pretty rockin’ on my desk and VMware actually works!