Wednesday, July 24, 2013

Windows 8.1 Can’t Import VMs Exported from earlier OSs.

Like many, I’ve been experimenting with Windows 8.1. It’s a nice improvement in many ways to Windows 8, but there are still some bugs. Unfortunately, as I have discovered, MS is no longer planning to ship this OS when it’s ready. Instead, they plan ship it when they ship it – warts an all. This post documents another example of that.

Like a lot of Microsoft Certified trainers, I have a huge library of training course related sets of Hyper-V VMs. These are issued by Microsoft Learning (MSL) and are an important part of the classroom experience. Some of these sets are huge (over 20 VMs with a few courses with even more). The VMs are delivered in an ‘exported’ state – the user (the MCT or training centre) just unpacks them, moves the files to the right place then imports the VM into Hyper-V.

In playing with Windows 8.1 Preview, I discovered something pretty nasty with this new OS: you can not import an existing Windows 8/Server 2012 (or earlier) VM that was exported from an earlier OS. This is a nasty bug for many, particularly MCTs and CPLSs (Microsoft’s partners for learning).

The basic issue is that you cannot import an old (exported) VM into 8.1/2012R2. The reason is that there is no support for it – even after this weakness was discovered. The "technical" reason for this is that the MOC VM export files (exp files) use the Hyper-V WMI v1 namespace. In Win8.1 and Win2012 R2, the Hyper-V WMI v1 namespace is no longer present, only the Hyper-V WMI v2 namespace - and the product does not contain a conversion option. Thus you can not import VMs.

The work around is to create all new VMs and use the existing VHDx(s). That sounds ok in principal, but there is a significant legal problem here: namely Microsoft partners are contractually prohibited from ‘fixing’ any of the VMs shipped by Microsoft Learning. Of course, folks can and do do this all time to fix the bugs which MSL cannot and do not fix. But it’s against the CPLS contract. This means that every Hyper-V VM shipped by MSL today can not be run under Windows 8.1, and Server 2012 R2.

I filed a bug on this. You can see it at: https://connect.microsoft.com/WindowsServer/feedback/details/794215/windows-8-1-can-not-import-older-hyper-v-vms#tabs although not everyone has access to this part of connect. The answer posted by Microsoft was “it would not be possible to make this change in the product. Our only option right now is to reach the MS learning teams and explain the situation and escalate it in their levels to get this content re-issued. The teams here are backing me for escalation with MS learning.”

So the Sinofksy approach of ignoring the reported bugs and shipping on time no matter what seems to live on. This is really gong to bite a lot of CPLSs – and I can honestly imagine a law suit here. It’ll also make a total mockery out of MSL’s “you can’t change shipped VMs no matter what’ stance.

All things considered, I’d prefer Windows 8.1 and Server 2012 R2 to ship when it’s ready and to ship a set of features that contain good upwards compatibility. Sadly, that is not what MS will ship. This summer is really turning out to show Microsoft in a bad light. First, scrapping TechNet subscriptions and now making my life as a trainer just that much more difficult.

4 comments:

Guido van Brakel said...

Great post. Indeed an annoying change. But your feedback item seems to be gone from connect.

Guido van Brakel said...

Good find! Indeed an annoying change, maybe has something to do with the Generation 2 VM's? But your feedback item seems to be gone from Microsoft Connect.

Unknown said...

Don't bother Sir , this is annoying I admit but the only work around so far is to boot from a Windows 8/2012 VM and to import the VM's from there just to be able to have all the configurations .. booting from the VHD will be a pain in the neck ..

Regards :)

Majid Yaseen said...

Thanks Thomas
I have been banging my head against a wall trying to figure out why it won't work