Vista suspend works, but hibernation does not

S

sfordin

Guest
#1
Please pardon me if this has been answered elsewhere, but I have looked pretty carefully for a solution in these forums and on the Web, but have not had any success...

I have EasyBCD installed under Vista Home Premium SP2 running on a Toshiba A205 laptop with 4GB RAM and over 20GB free space in the Vista partition. I dual boot this machine between Vista and Ubuntu 9.10, with Vista installed on the primary boot partition and Ubuntu loading through the Grub 1.97 (Grub 2 beta) bootloader on a separate primary partition on the same physical hard drive. In Linux terms, my Vista (boot) partition is /dev/sda2 (sda1 is the Toshiba factory recovery partition), and Ubuntu and Grub are on /dev/sda3.

I'm able to dual-boot just fine using EasyBCD to run the show from the Vista side. Specifically, the EasyBCD bootloader gives me a choice between Vista and Ubuntu. If I choose Vista, Vista starts normally, and I never see Grub. If I choose Ubuntu, EasyBCD passes off to Grub, which in turn gives me a choice between Ubuntu and Vista, although I never choose Vista from here, and Ubuntu starts normally. Note in this context that I am not using EasyBCD's NeoGrub, but instead simply created a normal Linux boot entry in EasyBCD, and this entry points to the Grub bootloader on the /dev/sda3 partition.

Ubuntu starts, hibernates, and sleeps just fine. The problem is that Vista hibernation does not work at all. Vista sleep is fine, normal Vista startup is fine, and while Vista hibernation appears to shut things down correctly, when I attempt to wake up the machine after hibernation, I get a message saying "Windows was not shut down correctly," and I am given the option to boot normally or in safe mode. In any case, the hibernate state is lost, and it's a full system restart rather than a wake up.

I've tried doing a powercfg -H off, followed by a reboot, to remove hiberfil.sys, and then powercfg -H on, followed by a reboot to recreate the file, but no joy. Same problem.

Any recommendations on how to fix this problem? Thanks in advance for any assistance.

Scott
 

JustinW

Super Moderator
Staff member
#2
You up to date on Windows updates? There were some issues with hibernation and probably still are. Perhaps if you are not SP2 well fix your problem.
 
S

sfordin

Guest
#3
Thanks for the suggestion, but...

...I am up to date on all the Vista updates. I'll look again, to see if there are any "non-essential" updates I'm missing, but I really don't think there are.

Thanks again for replying in any case,

Scott
 

JustinW

Super Moderator
Staff member
#4
Scott, wish I had a better answer for you but sometimes its just that an install is corrupted. Best way to resolve the problem is to do a clean install.
 
#5
I'm able to dual-boot just fine using EasyBCD to run the show from the Vista side. Specifically, the EasyBCD bootloader gives me a choice between Vista and Ubuntu. If I choose Vista, Vista starts normally, and I never see Grub. If I choose Ubuntu, EasyBCD passes off to Grub, which in turn gives me a choice between Ubuntu and Vista, although I never choose Vista from here, and Ubuntu starts normally. Note in this context that I am not using EasyBCD's NeoGrub, but instead simply created a normal Linux boot entry in EasyBCD, and this entry points to the Grub bootloader on the /dev/sda3 partition.
EasybCD is NOT the bootloader. It is only a tool for modifying the Vista/7 BCD, with some additional features, but it is not in use when your computer boots. The bootloader belongs to Vista.
Ubuntu starts, hibernates, and sleeps just fine. The problem is that Vista hibernation does not work at all. Vista sleep is fine, normal Vista startup is fine, and while Vista hibernation appears to shut things down correctly, when I attempt to wake up the machine after hibernation, I get a message saying "Windows was not shut down correctly," and I am given the option to boot normally or in safe mode. In any case, the hibernate state is lost, and it's a full system restart rather than a wake up.

I've tried doing a powercfg -H off, followed by a reboot, to remove hiberfil.sys, and then powercfg -H on, followed by a reboot to recreate the file, but no joy. Same problem.

Any recommendations on how to fix this problem? Thanks in advance for any assistance.

Scott
You could use the recovery facility to restore to factory condition, but it would be wise to backup Ubuntu's partition first using a 3rd party imaging program, and of course backup all your user files to somewhere else (such as an external HDD). Then, after the reinstall, restore the Ubuntu partition image.
 
S

sfordin

Guest
#6
SOLVED: Vista suspend works, but hibernation does not

Well, it took a bunch of banging around, removing and reinstalling EasyBCD, and mucking around in bcdedit. As it turns out, the solution was most easily found using EasyBCD.

I think the problem stemmed from mucking with NeoGrub and/or "Grub isn't installed to the bootloader" option when creating the Linux entry. In any case, the solution appears to be first removing the Linux entry, then using the "Recreate missing/deleted boot files" and "Reset BCD storage" on the EasyBCD diagnostics page. I then rebooted into Vista, went back to EasyBCD, and recreated the Linux entry, leaving the "Grub isn't installed..." option unchecked. I also changed the DEP/NoExecute setting under Advanced options to OptOut. Not sure if that helped, but that's what I did.

So now, the behavior is as it should be:

  1. When booting from scratch, I am given the choice to boot into Vista or Linux. If I choose Vista, Vista starts normally. If I choose Linux, the Grub bootloader is invoked, and Linux starts fine from there.
  2. If I hibernate Vista, I am brought right back to Vista upon wakeup, bypassing the Vista boot menu. This is the correct and desirable behavior, IMHO. I know others have mentioned a desire to be given a choice to resume into an operating system other than the one from which hibernation was invoked, but this is a Bad Idea as it creates a big risk for data corruption.
  3. After hibernating in Linux, the Vista boot menu is displayed but I resist the urge to choose Vista here (see above), and instead choose Linux, which in turn invokes Grub, which in turn resumes the Linux session normally. It all works well, and the only thing I can wish for here is that the Vista boot menu wouldn't be displayed when I'm resuming Linux (gotta remember where I've been), but this is not an EasyBCD issue and is not a big problem in any case.

Thanks again to all for the suggestions for resolving this issue. I hope the solution I found is useful to someone else.

Cheers,

Scott
 

JustinW

Super Moderator
Staff member
#7
Excellent Scott, interesting to find out a bad BCD store can be to blame just as much as any other software problem that causes hibernation issues.