As a software consultant, I see a variety of client requirements regarding software development environments. As recently as a two years ago, a new client project often translated into obtaining new hardware to host a dedicated OS for the desired software development environment.

With newer chipsets now implementing support for virtualization, the age of physical machines is in decline and the age of virtual machines rises towards prominent use.

From my investigation of and experimentation with various Virtual Machine (VM) distributions, my opinions and preferences follow:

  • I prefer using either 32-bit or 64-bit Linux host Operating Systems (OSes)
  • I think that Oracle’s Virtual Box (VB) builds smaller virtual disks than does VMWare Player
  • It appears that VB is more memory efficient and guest OSes run faster in VB than with VMWare Player
  • I am more comfortable with the VBoxManage utility than the equivalent VMWare utility
  • VB is free!  With VMWare, improved capabilities and performance require purchasing another VMWare product

As you can see, the above points express a strong preference for Oracle’s Virtual Box distribution.

There are a number of pre-built virtual disks that can be used as the basis for VM guest OSes and it is a simple and easy task to build your own virtual disk for Linux or for Microsoft OSes.

While I wish all software development could be accomplished using Linux alone, the reality is that many embedded development environments require one or another Microsoft OS.  Fortunately, since I have a set of DVDs from an old Microsoft MSDN subscription, I am able to create Windows XP guest OSes to host the various embedded developer tools as well as Ubuntu guest OSes for similar purposes.

Even though Microsoft licensing permits me to build a guest OS from an OEM version of any of its OSes, I must run only one copy exclusively on the machine upon which it was originally installed.  Unfortunately, the ever vigilant “Genuine Microsoft” utility eventually decides the guest OEM OS is “not genuine” and prompts for reactivation.  Of course, reactivation requires a 25 character UUID that is not provided with the OEM OS.

Since there is a UUID associated with the MSDN subscription, reactivation is not an issue, but remember- I can only use an MSDN OS for development purposes.  Not that I want to, but if I find I really need another Microsoft OS for development purposes, I could purchase an OS only MSDN subscription (at time of publication around $700).  Alternatively, I could purchase a Microsoft OS in a full retail box for less than the OS MSDN subscription, but Microsoft licensing limits my use of a retail box to a single instance of a guest OS.  This instance of the guest OS can be migrated from one host OS and hardware to another as needed.  In addition to software development tools, I can run any compatible software I like inside a guest VM created from a retail box OS.

Of course such complexities and considerations exist with Microsoft OSes only, not with Linux guest OSes.  Unfortunately, until such time as all development and application software run on a native Linux distribution, I must play by the appropriate licensing rules.

If you find this information helpful, please let me know…and if you have interesting insights to share about VMs for software development, please do!