VirtualBox and Fusion: Virtualization on OS X July 20, 2012
I do most of my development on an OS X box. I do it mainly because I like the hardware and because apps like Mou are available on OS X.
But OS X has limitations for stuff like PostgreSQL and Nginx (stuff that's at the core of Telegram.) So I need to run a Linux machine as well as an OS X machine.
For a while, I was dual-booting my OS X box, but that's a pain.
VirtualBox is less than optimal for GUI front-ends. Switching between the GUI window and OS X was tedious. It also seemed that graphics performance was not as good in VirtualBox.
Running Ubuntu server, however was much better in VirtualBox once I got stuff configured correctly.
Basically, I had to add a second network interface that was host-only, then I could SSH into my VirtualBox server.
Also, configuring a shared directory was more difficult in VirtualBox.
However, VirtualBox is very fast and stable in server mode and has been performing very well as a server running and developing Telegram. Even better, because I'm running a shared drive, I can use IntelliJ to edit the files on the Mac, but they are running in the virtual machine.
Fusion is easy to set up, but has a bunch of issues that pushed me to look into VirtualBox:
- It doesn't play well with gfxCardStatus. There's a polite message informing you that your VMs will crash if gfxCardStatus switches the graphics chip. Yep… that happens.
- Fusion crashes running Ubuntu server, even with gfxCardStatus removed. Basically, every couple of hours, the VM would consume all the cores it was allocated and I had to hard-kill it and restart it. Not optimal.
On the other hand, Fusion is great for GUI operating systems.
I had a bunch of Windows XP and Vista VMs laying around from a few years ago when I was writing Beginning Scala. I opened these VMs in Fusion and voila, I had running Windows machines including ones with IE 6. This is very, very sweet.
Which do I choose?
I am using both VirtualBox for Ubuntu server and Fusion for my Windows VMs. It's nice to have both on the machine. I also trust that VMWare will keep backward compatibility with old VMs which means I can keep old machines floating around and use them when I need them.