19

I know this question has been asked before but I've tried all the usual fixes and nothing works.

Basically the hard drive had two partitions with Vista and Windows 7. I've deleted the Vista partition to make more room and expanded the Windows 7 partition to fill the drive (using GParted).

I've tried:

  1. Running Startup Repair - it doesn't find any problems.
  2. Setting partition to Active - worked.
  3. bootsect /nt60 c: - worked.
  4. BootRec /FixMbr - worked.
  5. BootRec /FixBoot - worked.
  6. BootRec /ScanOs - I get the message "Total identified Windows installations: 0"
  7. BootRec /RebuildBcd - I get the message "Total identified Windows installations: 0"

BcdEdit shows a Windows Boot Manager and a Windows Boot Loader, both on C: partition.

[Update]

  1. Rename BCD and rerun BootRec /RebuildBcd - worked.
  2. Copy bootmgr from DVD - blocked because the file's already there.

[Update 2]

I found an article here that mentioned some other commands.

  1. C:\chkdsk /f /r - worked.
  2. sfc /scannow /offbootdir=c:\ /offwindir=c:\windows - worked (see here).

What else can I try?

parsley72
  • 1,034
  • 5
  • 17
  • 36

8 Answers8

7

I fixed it by:

  1. Back up the partition to an external drive (using GParted).
  2. Delete the partition.
  3. Reinstall Windows 7 on the (now empty) drive.
  4. Copy the contents of the partition over the fresh install of Windows (using System Rescue CD).

Windows now boots correctly and looks exactly the same as before.

parsley72
  • 1,034
  • 5
  • 17
  • 36
  • 2
    Interesting. This seems to indicate that faced with an empty disk, Windows installation does extra initializations that are not done for repair. My advice of clearing out the BCD store might have had the same effect or might not, maybe not. It is because of such unknowns that if the usual solutions don't work, one should reformat the disk and start afresh (as I also advised). You were real lucky to have been able to keep your Windows partition, which probably worked only because you have already done Startup Repair on it, which has fixed up the registry but not all of the boot-sector(s) files. – harrymc Nov 23 '11 at 09:44
  • As mentioned above, I tried the bcdedit export, rename and rebuild and it didn't work. – parsley72 Nov 23 '11 at 18:45
  • Can you be more specific about the steps you took to fix this? I am in the same situation with Windows 7, and I can't figure out what you mean by "Copy the contents of the partition over the fresh install of Windows (using System Rescue CD). Thanks! – Martin Del Vecchio Nov 29 '12 at 03:43
  • Pretty simple - just copy the backup of the partition on top of the new partition. There was nothing wrong with the partition itself but the bootloader wasn't finding it, so this forces the bootloader to look in the right place. – parsley72 Nov 30 '12 at 02:31
  • You say you copied the partition "using System Rescue CD". How, precisely, did you do that? Did you start a command prompt, then use the "xcopy" command, or a different command? Is there an option somewhere on the System Rescue CD for copying partitions? Thanks! – Martin Del Vecchio Nov 30 '12 at 02:38
  • 1
    This is crazy overkill and I was almost tempted to do it because I had the same problem on Windows 8. The one solution that worked for me, though, was to use `bcdboot` in the recovery console, as described also in [this question](http://superuser.com/questions/460762/how-can-i-repair-the-windows-8-efi-bootloader). – Stefan Seidel Jan 31 '13 at 11:54
  • This solution worked perfectly for me. I used dd on a linux liveusb to copy the partition. The error message was "Disk Read Error", probably due to some part of the kernel or boot data missing. None of the boot repair stuff worked. – gravitation Apr 14 '13 at 12:53
  • 2
    Well, sadly another *reinstall-from-scratch* fix...:( I guess a **repair install** is enough. – phoeagon Apr 22 '13 at 02:24
6

I guess that you had Vista on the disk as partition 1 and then Windows 7 as partition 2, then deleted Vista, meaning that Windows 7 is now on partition 1.

Unfortunately, Windows identifies its partitions by their numbers, so that all partition references in the Windows 7 registry are now incorrect and unusable.

I believe that you will have to reinstall Windows 7. A simple Repair Installation should be enough, and will only refresh Windows and not disturb the installed applications.

Or, for the sneaky solution, you could create some small empty space on the disk before the Windows 7 partition and format it as NTFS, in effect recreating a surrogate dummy partition 1 that will restore the Windows 7 partition to its number 2 position on the disk. You might still need to do again Startup Repair.

[EDIT]

You could force Windows to recreate the BCD store partition by booting from the DVD into the Command Prompt option of Repair and entering :

bcdedit /export C:\BCD_Backup
ren c:\boot\bcd bcd.old
bootrec /rebuildbcd

In case of a permissions problem, use the command attrib bcd -s -h -r before the rename. Reboot, and if it doesn't work then do Startup Repair again.

Another desperate solution is to assume that bootmgr got corrupted and boot as above and do :

ren c:\bootmgr deletemelatter
bootrec /rebuildbcd
bootrec /fixboot

If nothing works, just reformat the entire disk and install from scratch. Not every problem can be analyzed or has a solution.

harrymc
  • 455,459
  • 31
  • 526
  • 924
  • Can you fix the link? I think I've already tried this but I want to check what you're suggesting. – parsley72 Nov 20 '11 at 22:24
  • Done - link repaired. – harrymc Nov 21 '11 at 06:44
  • I tried this the other day but I selected the option to install a new version of Windows 7 and it told me I didn't have enough room. I understand what you're saying about partition references, but why is the Windows 7 registry required to load BootMgr? Surely BootMgr is required to boot Windows 7 so the registry can be loaded, not the other way round? – parsley72 Nov 21 '11 at 06:58
  • Values from the registry are read by BootMgr during the boot, so the registry is essential for launching Windows. I rather wonder why you didn't have enough space. Repair Installation might not give you the same error, but remark that running Windows without enough free space on the system disk is dangerous. If a new Windows installation is a possibility, then you might just as well format the disk and reinstall. – harrymc Nov 21 '11 at 08:16
  • But the problem here is that it's not finding the BootMgr Surely nothing will be reading the registry before the BootMgr? – parsley72 Nov 22 '11 at 00:20
  • I have added some desperate measures above. BTW : Is the BIOS boot order correct ? – harrymc Nov 22 '11 at 08:15
  • The MBR on the disk should point to the boot manager, you've fixed the MBR so i would assume the problem is within boot manager - harrys steps above rebuild/recreate it. Personally i'd go through a repair installation and use the opportunity to have a new Windows reinstall with SP's and fresh updates, but thats just me :) – HaydnWVN Nov 22 '11 at 11:04
  • As mentioned above, I already tried the bcdedit fix. – parsley72 Nov 23 '11 at 02:49
  • @parsley72: I suggested trying it **after** clearing up the BCD store. – harrymc Nov 23 '11 at 08:46
  • 1
    *"all partition references in the Windows 7 registry are now incorrect and unusable"*... *which* references are you referring to, exactly? There's only *one* place in the registry I know of that keeps partition references (`HKLM\SYSTEM\MountedDevices`), and that's fixable by hand -- and I'm pretty sure it keeps track of partitions by starting sector, not by number... – user541686 Oct 29 '12 at 15:40
  • @Mehrdad: Sorry, this was some time ago, so I don't remember exactly where. But after partition editing I had to fix a registry reference similar to `multi(X)disk(Y)rdisk(Z)partition(W)` in order for Windows to boot (I found this format just now on google, but am not sure this is exactly what I had fixed). – harrymc Oct 29 '12 at 16:36
  • @harrymc not after windows xp – Milind R Feb 24 '14 at 18:57
5

Please make sure that the Windows 7 Recovery partition is set as the active!!

I was having trouble because the active partition was set to C:\

  • I wish I could give you a million up votes. Your answer rescued my PhD. I was already thinking of formatting. God bless you. I tried everything on Bing, Google and nearly all search sites. This really saved me. Thank you so so much. – afaolek Jun 21 '14 at 18:44
  • 1
    @afaolek Do you make backups now? – Frank Kusters Feb 17 '15 at 06:20
  • @afaolek Also be aware you can get files off a drive even if you can't boot from it, just by plugging it into a working computer. – Clonkex Mar 29 '20 at 03:54
  • 1
    @clonkex Quite some time since I made this comment. I have more computer knowledge and experience since this happened to me. Going through the comment now, I realize autocomplete changed HD (hard disk) to PhD. – afaolek Apr 20 '20 at 12:20
  • @afaolek LOL I thought you just meant you had important doctorate files on your HDD xD – Clonkex Apr 20 '20 at 23:47
3

This is just a clarifying comment on Narkevich's remark (I wanted just to add a comment but seemed to be barred from doing so

The reason you didn't need the /s x: option is that by default, bcd boot changes the bcd on the volume which is currently active. That's almost always what you want. If one specifies /s and a drive letter, then either 1. The drive letter is the active volume, and the command would do the same thing without /s x: as with it ;or 2. The drive letter is different from the current active volume. In this case what actually happens at boot time could only affected if either the bcd on the active disk is corrupt, and or 2. At some later time you change which disk is marked active to the one named after /s.

Cheers

Scott Petrack
  • 329
  • 3
  • 2
  • Answers are reserved for solutions to the question. Insufficient rep to comment doesn't turn this into a solution. Non-answers attract downvotes, which will delay your reaching the rep to comment. It might make more sense to save this until you can post it as a comment. – fixer1234 Aug 07 '16 at 18:29
3

Had the same issue and the below fixed it for me, assuming that you already know and started the rescue disk in Command Promt, I used the tool bcdboot.exe to recreate BCD:

bcdboot c:\Windows /l en-gb /s x:

Where x is the drive that has the System label.

Eduard Florinescu
  • 2,946
  • 7
  • 34
  • 45
1

Windows boot loader identifies partitions by offset in sectors + 4-byte disk signature in MBR. So when you moved your system partition with GParted, two odd things happened:

1) Disk offset of Win7 system partition changed, all references stored in BCD and SYSTEM registry hives are now broken.

2) Win7 system partition now has the same ID as WinVista system partition used to have, so two references now collide: bootloader with old settings tries to boot Win7 as Vista, but fails.

Basically you need to remove BCD registry hive and rebuild it from scratch, and also fix reference to disk C: in Win7's MountedDevices in SYSTEM registry hive.

Using Emergency Boot CD you can delete BCD in the "File Manager", then recreate BCD from scratch and fix MountedDevices in "Mount & Boot Center".

Mikhail Kupchik
  • 2,501
  • 15
  • 22
1

Try the fixes listed here: bootmgr is missing fixes

There are a whole number of various fixes. Solution #2 worked for me. Hope this helps others.

1

I want to improve the solution parsley72 gave:

Instead of copying the partition, install windows, then copy back:

You can boot to CD (either System Rescue Disk or windows set up disk) - I use the SRD to fix mine - then, select the Fix your windows option. It does the magic!

I think the reason is that you already have everything on C: (the restored OS, the MBR, etc.), the only thing left is for Windows to find the boot information (something only Windows software can do).

Logical huh?

Jan Doggen
  • 4,108
  • 10
  • 36
  • 51
minh
  • 11
  • 1