Saturday, August 29, 2009

Hibernate problems with my Windows 7 RC

I went through a few reinstalls recently and finally found a strange situation with Windows RC’s Hibernate function. It just didn’t want to work.

When I clicked on the Sleep button in Start menu (I use „hybrid sleep” if available), nothing happened. I looked in the Event viewer if something strange can be seen, but found nothing. I turned off hybrid sleep and tried to hibernate the PC, but no change. Screen went to black for a second, then I got the logon screen again.

Let’s think a little, what is happening during going to sleep mode? The system writes the memory content to a file on the hard drive with some additional info (processor state, etc.) and temporarily modifies the boot loader to start from hibernation, instead of normal booting. The file is there in the root of drive „C:”. Let’s see the boot configuration.

grub01

Oops. Now what is this? Google has several answers to this in various tech forums, but none of them worked for me. I could create another data store, but I couldn’t use it.

I have a multiboot system with usually at least 3 operating systems through Ubuntu’s Grub.

My Ubuntu with the Grub is on the first hard drive and my Windows 7 is on the second hard drive. If I changed the order and booted directly from Windows Boot Loader, everything worked OK!

So let’s take a look at the Grub menu now.

grub03

Something’s missing, right? Yes, changing the hard drive order, with command ’map’.

Let’s see what it does. The GNU GRUB Manual says:

Command: map to_drive from_drive

Map the drive from_drive to the drive to_drive. This is necessary when you chain-load some operating systems, such as DOS, if such an OS resides at a non-first drive. Here is an example:

          grub> map (hd0) (hd1)
          grub> map (hd1) (hd0)
The example exchanges the order between the first hard disk and the second hard disk.

So we need this:

grub04


That looks just a little better now. Windows „likes to be” the first HD, so Grub needs to fake it. After reboot to Windows 7, the Hibernate function worked perfectly, and “bcdedit” showed this picture:

grub02

So this is a good example of how you can fix a Windows related problem from a Linux environment (because I edited Grub from Ubuntu Jaunty).

No comments:

Post a Comment