When I bought my first Mac in 2011 I also bought a copy of Parallels. Like the better-known VMware Fusion, Parallels lets you run Linux or Windows virtual machines (VMs) as “guests” of the Mac’s OS X. I’d long used VMware on PCs to run Linux VMs as guests of Windows, and at work used both VMware’s enterprise products and Oracle’s VirtualBox.
My intention was to use a Windows VM for my very occasional uses of Word and Excel, for playing games, and for working from home via my employer’s Virtual Private Network (VPN) client. I also wanted to be able to run Linux VMs for fiddling about.
It proved to be an expensive plan. Between the cost of Parallels, a copy of Windows 7, and a copy of Microsoft Office, the cost approached $200. As the years went on it got more expensive. Parallels doesn’t believe in free upgrades. Every time a new version of OS X comes out they expect you to cough up about $50 for the program you’d originally purchased for around $80.
Parallels did the job – sort of – Windows ran acceptably and Linux rather better. But it really wasn’t suited for Windows gaming. For that I would have been better off running Windows under Apple’s Boot Camp, but that would have been less flexible and, obviously, required rebooting the Mac to switch operating systems.
Although Parallels VMs ran well enough, the Windows VMs in particular seemed to adversely affect the performance of OS X programs. In addition, booting a Parallels Windows VM was painfully slow. I suspect this is at least partially the fault of the OS X file system, which is by far the least elegant, most poorly performing component of an otherwise-excellent operating system. But given how much things improved when I switched to VirtualBox I also think the Parallels implementation of virtual disks and/or their virtual I/O hardware is at fault.
Meanwhile as the years passed VirtualBox got better and better. I set up an Xubuntu VM with VirtualBox and tried using a Linux VPN client and the excellent Remmina remote desktop client to access my Windows desktop at work. This proved to have far less impact on my system than the Windows VM running in Parallels.
The other advantages of VirtualBox were it’s more pleasing, workmanlike GUI, it’s cost (free), frequent updates, and, I have to admit, the fact that it was once part of a respected former employer of mine, the late, lamented Sun Microsystems.
Only one question remained before I could drag the Parallels app into my iMac’s trash: could I move my Parallels Windows VM to VirtualBox?
It’s another mark against Parallels that it doesn’t support the Open Virtualization Format (OVF). OVF is a standard that lets you easily export and import a package consisting of a VM’s virtual hardware description and disk image(s) from and to VirtualBox, VMware, and other virtualization platforms. So moving my Windows VM from Parallels was more work than it would have been to, say, move a VM from VMware to VirtualBox. Of course I could have just created a new VM in VirtualBox and installed Windows from scratch, but not only is that tedious and annoying, but I didn’t know if Microsoft’s licensing would allow me to install Windows on a new VM even though I only intended to run a single instance of the operating system.
The first step was to carefully note the Parallels’ VM configuration (number of virtual CPUs, memory, etc.). This is so I could manually create the “same” machine in VirtualBox. I particularly made sure to note the MAC address of the old VM’s virtual network adapter. The MAC address is apparently one of the things Microsoft’s licensing uses to identify a PC.
(Note that for the following steps the information on a blog post on the “Punch Card” blog proved invaluable. And I recommend reading it before attempting your own VM conversion.)
Then I copied the old VM’s disk image. Parallels disk image files end (at least sometimes – this might vary) in the extension
.hds. In order for the VirtualBox VM to recognize the disk image, it had to be renamed to a file with the extension
.hdd. My Parallels disk image was a “sparse” image, so I had to convert it to a “plain” image. I located the Parallels disk image tool buried deep the the Applications folder, and did the conversion:
prl_disk_tool convert --plain --hdd my_parallels_disk_image.hdd
Converting the file from sparse to plain doubled the size of the file, since now empty space on the virtual disk was occupying empty space on my real disk whereas before the empty space was just not there at all (this sounds almost like an discussionn from classical philosophy, but it’s how sparse disk images conserve real disk space). Naturally I wanted the savings of a sparse image, so, even though VirtualBox can read an
.hdd file, I proceeded to convert it to a sparse Virtual Disk Image (VDI) file, which is the VirtualBox native file image format:
VBoxManage clonehd my_parallels_disk_image.hdd my_vitualbox_disk_image.vdi --format VDI --variant Standard
Next I created my VM in VirtualBox without a disk image, moved the the converted disk image into the new VM’s directory, and modified the VM’s settings to connect the newly-moved disk image to the new VM’s virtual disk controller.
I’d like to say it all worked the first time: the Windows VM booted, and I happily dragged Parallels into the trash. But I had neglected something…
The old Parallels VM had used an Intel virtual network adapter: Intel hardware emulated in software. When I set up the new VirtualBox VM I specified a “paravitualized network adapter” (
virtio-net), which is more efficient because instead of emulating hardware it relies more on the host system’s networking system. Even though I had given the new adapter the same MAC address as the old one, Windows decided that this was one change too many and told me that my installation was “out of tolerance” as judged by its licensing system. In addition, the network adapter wasn’t even visible to the Windows VM, leaving me with a Windows machine that couldn’t connect the the Internet.
I shut down the VM and changed the virtual network card’s type to match that of the old VM. When I rebooted everything came up just fine. In fact the VirtualBox Windows VM booted faster than the Parallels VM and seemed to have less impact on the host (OS X) performance.
I still wanted the benefits of a paravitualized adapter, so I hunted up open source Windows drivers. I was able to install them on the new Windows VM without any complaints from Windows.
My rarely used Windows VM is running just fine, Parallels is gone from my Mac, and when El Captan arrives I won’t have to shell out another $50.