Letting Hyper-V get some sleep

I blogged a few months ago about how activating Hyper-V on a laptop that is running Windows Server 2008 will disable all hibernation and sleep functionality.  It seems that most people had not known this because I got quite a few comments on the post about it.  The comments varied from simple complaints to the usual boring rants where the author used a dollar sign instead of the letter S when they wrote the word Microsoft.

I still stand by what I said about the reasoning for the decision to disable this functionality as it makes good sense, and frankly hibernation/sleep is something that I can live without because Hyper-V is so good.  Basically, the functionality is disabled for 2 reasons:

  1. The percentage of people who run Windows Server 2008 on a laptop compared to those that run it on 'server' hardware is tiny.
  2. Nearly everyone who will be using Hyper-V will be using it on hardware that will never need to be put into hibernation/sleep (when was the last time you wanted to put one of the servers to sleep in your data centre?).

So, to make the best product possible the Hyper-V team devoted their time to getting a great product shipped that had the right features, was stable and reliable; without trying to cater for every possible scenario by cramming in features that a very small percentage of people would use.  What we have today is hypervisor technology that is small, fast and rock solid; those facts to most people are more important that anything else.

However, it seems that some people still think that the above reasons are not valid, and that hibernation/sleep should be available.  Well there is a way to get that functionality back without having to uninstall Hyper-V, however it is almost certainly not a supported method by Microsoft so you are on your own.

During system boot the file hvboot.sys loads, and it is this file that disables the hibernation/sleep functionality on laptops.  So, by changing the following registry keys you can enable/disable the loading of this file.  By doing this you'll get back the hibernation/sleep functionality, but at the cost of losing Hyper-V.  Also, to make the change requires a system reboot which can be a pain.

Gain hibernation/sleep - lose Hyper-V:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\hvboot]

"Start"=dword:00000003

Lose hibernation/sleep - gain Hyper-V:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\hvboot]

"Start"=dword:00000000

Having Windows Server 2008 with Hyper-V on a laptop is a great combination, I myself have it on my company laptop.  Perhaps the solution offered here can help out those people that have been previously frustrated with Hyper-V because of the lose of hibernation/sleep.