From Hyper-V back (?) to Virtual PC

For over a year I have been using Server 2008, 64 bits, as OS for my laptop. The main reason for this platform was Hyper-V. Almost every other project I’ve been working on needs another virtual server.  And each location I am working has a different network. With Hyper-V both switching servers and switching networks works fast and good. The downside of using Hyper –V is that it knocks out all possibilities of hibernating or putting my laptop to sleep. Server 2008 R2 boots a lot faster, but still. Another downside is that to use Hyper-V you have to run the 64 bit versions, R2 only comes 64 bits. Visual studio is a 32 bit app, runs OK on 64 bits but it is still not the most stable piece of software I know.

Due to circumstances I had to use my laptop more and more in typical mobile situations. Also the way my colleague presses the power button, is back where he was, does his thing, closes the lid and just walks away made me a little jealous. Perhaps I should move on to Windows 7 and try Virtual PC 2009. I had played with that combination and it looked promising.

To see if this was a good idea I set up some some tests

  1. Is it possible to migrate the hyper-V virtual machines to Windows 7 virtual PC ?
  2. Can you switch networks in a virtual machine without the need of a reboot ?
  3. How does a running virtual machine survive a sleeping machine ?
  4. How does a running virtual machine survive hibernation ?

All version of hyper-V and virtual PC share the same virtual hard disk (vhd) format. They differ on the integration features, some piece of host specific software installed on the virtual machine to facilitate all communication with virtual machine. Both Hyper-V and Virtual PC have “Install integration features” as menu option.

As a test candidate I took a virtual machine with quite a history. It started its life in Virtual PC 200x as a Windows server 2003 machine with several monsters of sql 8 databases, sql reporting services and some COM custom app. Over the years it had been upgraded tot server 2008 and been living under several versions of Virtual server and Hyper –V. Not something to rebuild from scratch, just getting that version of reporting service to work is a piece of science on itself. In short: a typical real world machine. Under the several host OS-es it had seen several completely different versions of integration services. These were pretty screwed up. Every attempt to install the newest integration services resulted in messages complaining about previous versions. But the machine still worked.

Migrating

The official recipe to migrate a virtual machine is to uninstall integration services, move the machine and reinstall the integration services of the new host. But you will not find integration services under the installed programs. All attempts to uninstall form the command prompt (/Uninstall) only resulted in the same messages about previous versions.

What worked is changing the HAL (Hardware Abstraction Layer) of the virtual machine:

  • Start MSconfig
  • Boot Tab
  • Advanced Options
  • Check the “detect HAL” box

After that I just shut down the machine, copied the hard disk and created a new virtual machine in W7 Virtual PC using the copied vhd file as hard disk.

The machine booted and complained about requiring new drivers. It also required renewed activation. I installed the W7 Virtual PC integration services and allowed the renewed activation (which is never a problem with MSDN OS licenses). And after that the machine just worked fine. All integration was smooth, all software had perfectly survived the migration.

Switching networks

I can be short on this. This works just as smooth as in Hyper-V

AA1

Changing the adapter in the settings is instantaneously reflected in the status of the virtual machines adapter. The good thing is that everything works just as well with an adapter with a dynamic IP address as with one with a static address.

Sleep and Hibernate

The difference between sleep and hibernate is that in sleep mode the RAM of the PC is still powered, so actually the machine is still alive. In hibernate mode all RAM is saved to and restored from disk.

In Hyper-V the virtual machines are running on the machine level. In virtual PC you start a virtual machine as a logged in user. When logging off the virtual machines are shut down (or hibernated). Instead of logging of I tried both sleep and hibernate with the virtual machine still running. Again all news is good. All functionality completely survives both scenarios. Virtual PC is not ignorant of my actions. When hibernating it will (automatically) disable the integration services. When awakening it restores them.

To conclude

The only hurdle I had to take was the HAL setting when migrating the machine. All the rest just worked. So I repaved my laptop with Windows 7 and virtual PC 2009. (Just skip the virtual XP step unless you need a virtual XP machine). I was quite satisfied with Server 2008 (except the required full boot) but do like Windows 7 even better. VS worked well and now even works better. But that could be the result of a fresh install (there is no upgrade possible from 2008 to 7).

And now I can also close the lid of my laptop and leave the building.

This entry was posted in Uncategorized. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Gavin

    This article was very helpful while I moved a 32-bit Windows 2008 VM from Hyper-V to Virtual PC – no problems.

    However, if you have Windows Server 2003 as the guest OS, you’re going to need VMware Converter + VMware Player.  Sounds like it would be the same for 64-bit guest OSs.  Virtual PC badly needs updating or replacing.

  • http://codebetter.com/members/pvanooijen/default.aspx pvanooijen

    Oh yes. Today I had the first crash on a virtual machine.
    After installing updates W7 had forced a reboot while a VPC was running. Resulting in a crash comparable to pulling the power cord. It’s like running a server without an UPS.

    Bad in a production scenario but nothing unusual in a development enviroment.

    Again VPC is good enough for my needs. No better.

  • http://tipsinterview.com Jack

    Hyper-V has lots of improvement, and it is has more advantage than V-PC

  • http://codebetter.com/members/pvanooijen/default.aspx pvanooijen

    @Maciej: From time to time VS (2008) froze and sometimes just died. It could be R# or the Visual SVN plugin or, most likely, the server explorere which cannot contact a sql server. Does that as well on my 32 bit W7 desfktop.

    @Don. As a host Hyper V is superior to virtual PC. Absolutely. My point is that VPC is good enough for my scenario. But moving back would not be a great pain. Just requires more patience :)

  • http://www.donxml.com Don Demsak

    My biggest issue with Windows Virtual PC is the lack of support for 64 bit Guest OSes. With things like Sharepoint 2010 and TFS 2010 requiring 64 bit OSes, and the fact that most machines are 64 bit (even laptops), it is really a pain for developers Virtual PC doesn’t support the OS version most machines use now, and even more people will use over the next year. Playing with Betas has become a pain now. So, I’m stuck using Boot to VHD, if I want to use a 64 bit guest OS. That or switch to VMWare.

  • http://maciejlis.com Maciej Lis

    “Visual studio is a 32 bit app, runs OK on 64 bits but it is still not the most stable piece of software I know.” I couldnt agree with that. I am using for a long long time VS that way, and i get no problems with it.