Restored Windows 7 Image Won't Boot

UrBackup server is hosted on a Truenas server.

I had a power failure which did serious damage to a Win7 machine.
Some programs would not start and others that did start had lost all customization.
It was a 2TB WD spinner with 1KB MBR, 100MB System_Reserved partition and the remaining 2TB Win7 partition.
I ran a reboot chkdsk /f and it found and repaired many bad sectors.
Now Win7 would no longer boot.
I used DiskGenius, Bad Track Verification until it found no errors.
At this point the two partitions on the drive were blank, unformatted.
I used DiskGenius to remove the two partitions leaving a blank 2TB drive.
I started UrBackup Restore CD v2.0.32 and it found the UrBackup server.
I restored a Win 7 image from June 29, 2024 which was made prior to the destructive power failure.
Both partitions were restored, System_Reserved and Win7.

Rebooting that Win7 drive displays the following error message.
gptzfsboot no zfs pools located, can’t boot

The target system is MBR, Win7, NTFS and it has nothing to do with GPT nor the ZFS file system.
The source system hosting the UrBackup server is GPT partition with ZFS file system.

Apparently I will need help restoring my Win7 system from UrBackup server hosted on Truenas.

I have done:
Boot Win7 DVD
Can’t repair!
This version of system recovery options is not compatible with the version of windows you are trying to repair. Try using a recovery disk that is compatible with this version of windows.

Can’t Install and Retain Files
Must reboot into windows and then run install.
Reboot into windows is pooched.

Zero out the MBR.
Boot Live Linux.
sudo dd if=/dev/zero of=/dev/ bs=446 count=1 seek=0
First 446 bytes of MBR are now zero.
Partition table still intact.

Boot Win7 DVD
Still can’t repair!
This version of system recovery options is not compatible with the version of windows you are trying to repair. Try using a recovery disk that is compatible with this version of windows.

Still can’t boot the hard drive!
gptzfsboot no zfs pools located, can’t boot

DiskGenius: Format System_Reserved as FAT32
Boot the hard drive!
Still can’t boot!
gptzfsboot no zfs pools located, can’t boot

Boot Win7 DVD
Still can’t repair!
This version of system recovery options is not compatible with the version of windows you are trying to repair. Try using a recovery disk that is compatible with this version of windows.

Delete System_Reserved partition.
Now there is no MBR, just 446 zeros followed by 64 bytes of partition table followed by the 55AA signature at bytes 510 and 511.
Still can’t repair!
This version of system recovery options is not compatible with the version of windows you are trying to repair. Try using a recovery disk that is compatible with this version of windows.

Boot the hard drive!
Still can’t boot!
gptzfsboot no zfs pools located, can’t boot

Where in the world is “gptzfsboot no zfs pools located, can’t boot” stored.
With an MBR full of zeros, there should be NO boot.
Either a black screen or “Can’t find NTLDR”.
Definitely not “gptzfsboot no zfs pools located, can’t boot”

Advanced thanks to those that may help.

I have discovered the issue.
Win7 was originally installed as “legacy” MBR (2 partitions) not UEFI (3 partitions) so the BIOS Compatibility Support Module (CSM) was ON.

The next CSM selections are “UEFI and Legacy”, “UEFI Only” or “Disabled” for each type of hardware installed in the system like Drive, USB, Network and Optical Disk.
My Drive setting was set to “UEFI and Legacy”.
BIOS was the first thing I examined before starting the original restore effort.
I saw the “UEFI and Legacy” setting and assumed incorrectly, that it worked as set in the past so, I did not change it.
I did not realize that setting’s effect on UrBackup restore.

As long as there was a working legacy MBR hard drive in the system, BIOS would boot it.
As soon as that drive was gone, the “UEFI and Legacy” setting caused BIOS to try to boot UEFI drives.

The fourth drive in my system is a 512GB SSD that was once the boot drive (UEFI) in my first Truenas system some five years ago.
It had been re-partitioned and used as a data drive in my Win7 system.
I learned back then that a Truenas user can make no use of a Truenas boot drive and most of the 512GB space would never be usable.
Back then a 512GB SSD cost something like $150 so I pulled it and replaced it with a $39 32GB SSD.

So, apparently the CSM setting of “UEFI and Legacy” confused UrBackup restore, causing the restored, 2 partition, MBR based Win7, to be unbootable.
Given that, BIOS would then try to boot the 512GB SSD which still had the Truenas code stored in its boot record eliciting the “gptzfsboot no zfs pools located, can’t boot” failure message.

So now I know, where in the world the “gptzfsboot no zfs pools located, can’t boot” message was stored.
The boot record of the fourth drive in the system.

How I figured all this out!
I cleaned the Win7 boot drive and installed Win7 from a Win7 installation DVD.
Upon examination I found three partitions (UEFI) not two as expected for an MBR installation.
At that point it all became clear.
I changed the BIOS CSM setting to “Legacy Only” and redid the UrBackup restore.
Success! My Win7 is back.

If the UrBackup server had not been hosted on a Truenas server, I probably would not have went down that “gptzfsboot" rabbit hole as I did.
I incorrectly assumed that the “gptzfsboot" boot failure message was coming from the newly restored Win7 because I incorrectly assumed that there were no other bootable drives in the system.

The take away!
No amount of repurposing, re-partitioning and formatting will change the first 512 byte boot record of a drive.
Now I’m going to check for and zero the 0x55AA boot signature at bytes 510 and 511 on all of my data drives that should not be bootable.
I want to avoid falling down a similar boot drive failure rabbit hole in the future.

All for now

1 Like
  1. If you are working under Linux, this is the command to clear it:

dd if=/dev/zero of=/dev/sda bs=512 count=1

Where /dev/sda is your device.

  1. If you have access to Windows/MSDOS tools:

fdisk /mbr

or

fixmbr [device_name]

This will clear it to windows default. The fixmbr command is only available when you are using the Recovery Console

1 Like

I understand but, “dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=0” will clear the 64 bytes used for the partition table.
I wanted to keep the partitions on the drive while making it unbootable.
Pre-knowing. I did " “dd if=/dev/zero of=/dev/sda bs=446 count=1 seek=0” to zero all of the code and messages up to the start of the partition table at 0x1BE.
Post-knowing, I use the free hex editor HxD to zero only the 0x55AA boot signature starting at 0x1FE.
With a boot signature of 0x0000, no BIOS will attempt to boot the drive by loading and executing the first 446 bytes regardless of who’s boot code and messages may remain there.

All for now

1 Like