I recently upgraded my computer and installed Windows 8 on an SSD. Now I have my old boot HDD with Windows 7 installed on it and I want to connect it to my new computer to pretty much use it as a data store now instead of the boot HDD. However whenever I connect it, Windows 8 attempts a boot and tries to start the repair utility. If I leave the old HDD unconnected, windows 8 boots fine.

The Windows 7 HDD has multiple partitions and was set up to dual boot with linux. It uses the old MBR format and was used with a motherboard with regular BIOS. The new system uses GPT tables with a UEFI motherboard.

The Windows 7 HDD is not the boot disk listed in the mobo and is in a SATA slot after the SSD.

I suspect there is some issue with the disk being detected as bootable.

Is there a way I can maintain the partition table but make it not bootable?

Or is it perhaps another problem entirely?


So I tried a number of things to get this working properly. I believe that the problem has to do with the Windows Boot Manager trying for whatever reason to boot off the Win7 HDD whenever it is plugged in. I figured that out after I cleared the MBR on the Win7 and it still tried to boot off it.

Interestingly it failed pretty much the same way with and without the MBR. Maybe because it's looking for a GPT partition and getting an MBR?

So now that I've narrowed it down to the Windows Boot Manager (with help from terdon) I was able to pull this boot information:

Microsoft Windows [Version 6.2.9200]
(c) 2012 Microsoft Corporation. All rights reserved.


Windows Boot Manager
identifier              {bootmgr}
device                  partition=\Device\HarddiskVolume4
path                    \EFI\Microsoft\Boot\bootmgfw.efi
description             Windows Boot Manager
locale                  en-US
inherit                 {globalsettings}
default                 {current}
resumeobject            {1b65e2bf-23e8-11e3-b714-d8efdcc6606f}
displayorder            {current}
toolsdisplayorder       {memdiag}
timeout                 30

Windows Boot Loader
identifier              {current}
device                  partition=C:
path                    \Windows\system32\winload.efi
description             Windows 8
locale                  en-US
inherit                 {bootloadersettings}
recoverysequence        {1b65e2c1-23e8-11e3-b714-d8efdcc6606f}
recoveryenabled         Yes
isolatedcontext         Yes
allowedinmemorysettings 0x15000075
osdevice                partition=C:
systemroot              \Windows
resumeobject            {1b65e2bf-23e8-11e3-b714-d8efdcc6606f}
nx                      OptIn
bootmenupolicy          Standard
bootlog                 Yes
sos                     Yes

Looking at the boot loader, it seems its looking for partition "C:". Which is of course the same drive letter as the old Win7 HDD. So maybe its getting the wrong "C:" drive? So how do I go about changing that? I tried changing the drive letters on the partitions through the hard disk manager but to no effect.

On the bright side I was able to bring up the drive in Win8 by enabling hotswapping on my SATA port through the motherboard. And the drive is completely readable (partition tables intact).

  • Is it set up as a master? Have you chosen the SSD in the BIOS? – terdon Sep 22 '13 at 18:55
  • @terdon Yea the SSD is set as the boot device. I am not sure if the Win7 HDD is set up as master. There are no jumpers in the back. IIRC thats how it was done back in the day for setting master and slave. If thats what you mean. – jmathew Sep 22 '13 at 18:58
  • @terdon Actually I double checked and the boot device is listed as 'UEFI Hard drive: Windows Boot Manager' not the SSD. So maybe my problem is with the windows boot manager. Makes sense considering it tries to 'repair'. – jmathew Sep 22 '13 at 19:01
  • Ah, there you go, does it work if set to SSD? You could also consider adding win8 to the windows boot manager and booting that way. – terdon Sep 22 '13 at 19:12
  • @terdon There seems to be no option to pick a specific HDD, just the win8 boot manager. Win8 boots fine as long as the win7 disk isn't in. – jmathew Sep 22 '13 at 19:16

Problem solved! Technically.

By converting the disk from MBR to GPT I was able to get the system to boot with both drives in. As mentioned before I managed access to the HDD (the Win7 one) by turning on hotplugging support on my motherboard and plugging the SATA cable in after boot. Though I could've just as easily gone over to an MBR machine, plugged it in, set the BIOS boot priority to not include the HDD and dealt with it in the other machine.

That said, once it was connected I backed up all my data to another drive. Then I opened up the Windows 8 disk management tool deleted all the partitions. I had some trouble here as it refused to delete the one logical partition with the error "There is not enough space on the disk to delete" (or something to that effect). So I opened up an admin command line and did the following with diskpart:

list disk
select disk 3      // The win7 HDD
detail disk        // Really make sure I'm on the right disk
list partition
select partition 0 // The only one left was the logical partition
delete partition

Now with the final partition deleted the Windows 8 disk manager would allow me to right click on the drive and hit "Convert to GPT".

In the process of converting to GPT something on the drive got erased that the Windows 8 boot manager considered a "bootable" flag. And now the system boots with both drives.

However I did have to remove my data. Which was something I was trying to avoid. In hindsight there were a number of ways to do the conversion without any data loss. See the gdisk method. Or just google it.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.