Howto: Rescue Windows 10 from a Hibernation Loop in 7 Steps

I had to rescue a Windows 10 laptop that somehow got stuck into a hibernation loop, where it would hibernate and instead of it resuming normally from disk, it would resume and then go back into hibernation mode. Windows 7 or 8.1 doesn’t suffer from this, so it’s a Windows 10 quirk.

The Windows 10 version the client’s laptop was Build 10240, so it’s not the “10.1 November 2015” update which is 10584 or something. Anyway, onto the fix. This may corrupt your NTFS partition, so check the disk partition for errors after you do this method!

  1. Grab a copy of SysRescueCD, which is a rescue environment based on one of my favourite distros, Gentoo. I used the 64bit version. It doesn’t really matter.
  2. Boot from the USB. This laptop was using UEFI and had Secure Boot enabled, so I had to boot into the BIOS and disable Secure Boot. Secure Boot is fine for the average user but for IT technicians like me who work in the field it’s a massive pain in the arse. If you do it right, the SysRescueCD boot menu will appear, either in 640×480 VGA mode or UEFI Framebuffer (using GRUB2 EFI).

    Choose your poison, I went with the “cache all in ram” since this laptop had 8GB of RAM.

  3. Once the distro boots, let it configure the keyboard and related things then drop you to a shell as root. Now you’ll need to find out where the Windows partition is. I’ll give you a hint; if your target computer uses UEFI, usually it’s /dev/sda3 since there’s a EFI System Partition and a Recovery Partition before the Windows partition. Otherwise you’ll either want /dev/sda2 if you have a “System Reserved” partition and you’re NOT using UEFI (ie. UEFI-CSM BIOS Emulation or a older laptop/desktop that doesn’t have UEFI firmware) or /dev/sda1 for some installations of Windows 7 and onwards.
  4. Attempt to mount the partition using the mount tool. For example:
    mkdir /mnt/winwoes
    mount /dev/sda3 /mnt/winwoes

    Where /dev/sda3 in this example is the Windows partition. The laptop I was working on had Windows on partition 3.

  5. It should fail and say “Metadata is present, will not mount without ‘ro’ parameter”. If you get this error, then that’s OK. We’re going in. Now, we’ll need to use ntfsfix to flush the caches. This resets the log file and also checks the NTFS headers and whatnot are OK. Run it like so:
    ntfsfix /dev/sda3

    You will get a “FAILED” as it attempts to mount it before hand. Ignore the error. You should get some disk I/O activity and lines followed by “OK”. Then, run it again to make sure it sticks. You should get all “OK” or “PASS”.

  6. The moment of truth.
    sync && reboot

    The sync is important in case the HDD hasn’t flushed the changes to disk, and the reboot command will reboot the machine once SysRescueCD gracefully packs up its things and leaves the building.

    Windows may complain if you’re using 7 or 8.1 about it needing a check disk, let it do so as this is kinda a brute force hack. In Windows 10, I just got a “System disk needs checking for errors” notification. Pop open (once you’re in) a Command Prompt and enter “chkdsk /scan” to get Windows to fix itself up if it finds any corruption or damage done.

  7. If all is well, you should no longer get a “Hibernating…” with a circle with dots going around in a circle. Go forth and do what you need to do on that machine, and make sure it shuts down correctly this time!