I’d like to create a situation where a standard MS development stack is wholly contained within in a VM such that I can share (via USB enclosure) the identical development environment between main desktop, laptop and backup desktop (all win7 boxes).
Ideally I’d like to create the VM image from the existing install on my desktop – i’d like to avoid re-installing everything from scratch. To be honest, it seems unlikely that services so deeply ingrained in the OS can be lifted and transferred to create a stable working environment but a guy can dream.
So, if this _is a realistic expectation, what’s my first step? What’s the best VM app to look at? I don’t have to stay on the free-ware side of the street but this is a one-off installation and funds are out of personal, not corporate pocket.
First off, to convert a physical machine to virtual is a process known as P2V (Physical to Virtual).
VMWare also have a P2V utility called VMWare Converter which can do the P2V for you, for free. Although, you will both have to reactivate Windows and use a different licence key as it is not covered by the original EULA – If you have a MSDN or Technet licence, this is officially a development/test machine, so you can use up one of those keys just fine.
Alternatively, you can use XP Mode on Windows 7 (If you have a qualifying edition) through the Microsoft Virtual PC, this is a very good solution, however it lacks some of the mature features of the VMWare stack (64 bit for example) – and, I do not think they have a free P2V tool.
Regarding sharing, as long as the virtual machine is kept on the USB Drive, it should not be a problem – However, if you are doing anything I/O Intensive, this could be the weak link of performance. You are the only one who can make this decision. Personally, it may be a better solution to have the VM on each machine and use a shared folder on a USB drive / keep your projects there etc.
Hope this helps you – if you need help on any of the points I have written, please write a comment and I will be happy to help further.