Unable to resolve Vista boot loader issue with EasyBCD

#1
I hope someone here can help me.

Problem = I cannot boot into Windows XP from Vista boot loader.

My harddive configuration:

disk(0)partition(1) = Windows XP Professional 32-bit
disk(1)partition(1) = Windows Vista Ultimate 64-bit

In other words, each operating system is installed on a separate harddrive.
Furthermore, disk(0)partition(1) is the "boot" drive, or the "system" drive.

Before the problem occurred, using Windows Vista, I moved 66.1 GBs of files from Windows XP (disk 0) to Windows Vista (disk 1). When I restarted the computer and selected "Earlier Version of Windows" from the Vista boot loader menu, Windows XP didn't load, instead I got a blank screen (no mouse cursor).

Since then I've rebooted the computer with the Windows XP Installation DVD and ran fixmbr and fixboot C: from the recovery console. When I exited recovery console and the computer restarted, Windows XP loaded without issue.

Next, I rebooted the computer with the Windows Vista Ultimate Installation DVD, and ran repair>start up. I rebooted the computer where the Vista boot loader appeared with both an entry for "Earlier Versions of Windows" and "Windows Vista." When I selected Windows Vista, I booted into Vista without issue. However, selecting "Earlier Versions of Windows" did not boot me into Windows XP.

Since I was able to boot into both Windows XP and Windows Vista, I believe I can rule out both corrupt files or missing files as the cause of the problem. In other words, if the Windows XP file system were corrupt, or system file(s) were missing, I wouldn't have been able to load the operating system. For example, in response to the Microsoft KB article ID: 320397 = http://support.microsoft.com/kb/320397

What about boot.ini, NETDETECT.COM, and ntldr? Well, using windows explorer I can verify they are present on the root directory of disk(0)partition(1). Second, I don't believe I could boot into Windows XP with either a corrupt or missing NTDETECT.COM and ntldr. As for boot.ini file that is located in the root directory of disk(0)partition(1), the settings appear correct:

[boot loader]
timeout=20
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP on D:\" /fastdetect

The information above was generated by EasyBCD, as the original boot.ini had ##lines warning to use BCDedit.exe to modify Vista boot parameters. Unfortunately, this is not the default boot.ini parameters. I'm not sure why EXECUTE= has been removed from the boot.ini file, nor am I clear on why this is configurable only for Vista under Advanced Options.

However, both "default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS" and
"multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=" are correct, as the harddrive flagged "system" is disk(0)partition(1). In other words, the harddrive installed in sata port 0 is the harddrive the BIOS looks to boot from.

Now, if all three files (boot.ini, NETDETECT.COM, and ntldr) are present on the system harddisk in the root directory, and the information in the boot.ini is correct, then the Vista Boot Manager must be the cause of the problem (so I'm assuming).

Using EasyBCD (tried both version 1.7.2 and version 2.0 build 63), I attempted to reinstall the Vista boot loader, as well as, reset the BCD
store. I have tried this from within Vista as well as Windows XP.

I also tried uninstalling the Vista Bootloader, but the program failed to do so since upon rebooting nothing changed.

Below are the BCD settings after using EasyBCD 2.0 to reinstall Vista boot loader and reset BCD store.

Windows Boot Manager
--------------------
identifier {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device unknown
description Windows Boot Manager
locale en-US
inherit {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
default {e8709fb6-fa5f-11db-be4d-e219ece5282e}
displayorder {ea461a96-5072-11de-96eb-001d7d02c58c}
{e8709fb6-fa5f-11db-be4d-e219ece5282e}
toolsdisplayorder {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout 10

Real-mode Boot Sector
---------------------
identifier {ea461a96-5072-11de-96eb-001d7d02c58c}
device partition=D:
path \NTLDR
description Windows XP Professional

Windows Boot Loader
-------------------
identifier {e8709fb6-fa5f-11db-be4d-e219ece5282e}
device partition=C:
path \Windows\system32\winload.exe
description Windows Vista Ultimate
locale en-US
inherit {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
osdevice partition=C:
systemroot \Windows
resumeobject {e8709fb7-fa5f-11db-be4d-e219ece5282e}
nx OptIn
pae Default
sos No
debug No

The most important thing to observe is device = unkown under Windows Boot Manager.

Before taking action with EasyBCD, device = D:\ in the original detailed view settings.

I suspect there are two Vista Boot Managers. One boot manager is installed on disk(0) and another on disk(1).

I also have a third harddrive that I install Ubuntu on. Since I used both Windows XP and Vista to reconfigure the boot sector and mbr, grub was wiped out. Since I use Ubuntu for simple tasks, its quick and easy to reinstall. So I did just that. When grub loaded, it listed the Vista loader twice. Under /boot/grub/menu.lst the first Vista loader entry looked familiar, but the second had these two lines:

map (hd0),(hd1)
map (hd1),(hd0)

Of course, neither Vista loader entry in the grub menu allowed me to boot to xp, and if I selected the first Vista loader it immediately booted to Vista without showing the Vita boot loader menu.

I'm curious to know how the option to reinstall Vista boot loader works in EasyBCD. Unfortunaely, the program gives no feedback concerning the operation. There is simply a button called Write MBR. The important question is: "Which MBR?" If I am running EasyBCD in Vista, does "Write MBR" mean the Vista boot loader will be installed on the drive Vista is installed on? How does EasyBCD know which hardrive to write to? If
it writes to disk(1)partition(1) (the disk with Vista), then it will not work, since disk(0), not disk(1) is the "system" harddrive.

I need to know how to remove (if possible) all instances of the Vista boot manager, and reinstall the boot manager to disk(0). I then need to know how to properly configure the BCD store, using BCDedit.exe, since the changes made by EasyBCD don't seem to work. However, if it can be fixed using EasyBCD, then I need to know what I did wrong, or what I need to do to get it right. In every attempt using EasyBCD, the Vista option in the Vista boot loader would load Vista, but the entry for Windows XP (device = "partition=D": and path = "\NTLDR") would fail to load Windows XP, giving me nothing but a blank screen.

Any assistance will be appreciated ~Mike
 
#2
Hello Mike, welcome to NST.
Use [thread=642]EasyBCD 2.0 Beta, Build 63[/thread] to delete the old XP entry in the BCD, and create a new one. Accept the offer to let it recreate BOOT.INI and place a copy of NTLDR and NTDETECT.COM where it needs to be (i.e. the "active" "system" partition). And then do not make any further mods!
Just reboot, and you should now have a working dual-boot of XP and Vista.
BTW, I must admit that I did not read through your whole long post, but what I suggested should solve your XP problem.
If it doesn't, then be sure to post back with an update.

Jake
 

Terry60

Knows where his towel is.
Staff member
#3
Mike, when you repaired the Vista boot from the DVD, was the XP disk still connected ?
Vista will install (or repair) its boot files on the "system" partition even if that's not Vista. (your original set up)
If you repair Vista with only the Vista disk visible, it will look for the "active" flag on that disk and install all the boot files there, so that you'll end up with 2 BCDs which can be very confusing because Vista keeps the BCD in an "always open" status, and you might be doing things to one when you think you're doing them to the other.
Can you use the paperclip icon in "go advanced" (under the quick reply box) to attach a screenshot of your disk management.

btw what was it you moved from XP to Vista that caused this ? Did you copy the BCD ?
 
#4
Mike, when you repaired the Vista boot from the DVD, was the XP disk still connected ?
Yes.

Vista will install (or repair) its boot files on the "system" partition even if that's not Vista. (your original set up)
Right. I understand. It appears Vista installs a file called bootmgr and creates two additional files called boot.BAK and BOOTSECT.BAK.

If you repair Vista with only the Vista disk visible, it will look for the "active" flag on that disk and install all the boot files there, so that you'll end up with 2 BCDs which can be very confusing because Vista keeps the BCD in an "always open" status, and you might be doing things to one when you think you're doing them to the other.
Perhaps this is the case. However, there appears no way to discover whether Vista identifies more than one harddrive when making the repair. When it scans for operating systems, it shows Vista on drive D and that's correct. It doesn't show Windows XP on drive C and I'm assuming that is so because it cannot repair operating systems earlier than Vista.

Should it show Windows XP on drive C? I should mention I load the sata AHCI driver, even though it discovers Vista without it. In either case, it only shows Vista on D.

Can you use the paperclip icon in "go advanced" (under the quick reply box) to attach a screenshot of your disk management.
I did as you asked. I'm writing this reply from Windows XP, so the screenshot is from the Windows XP disk management tool, but as you can see it still indicates that disk 0 is the system partition. Besides being C drive, it is also the drive Windows XP is installed. As I stated in my first post, boot.ini, NETDETECT.COM and ntldr are present in the root directory (C:\) of this drive. There is also bootmgr file and the other two files -- boot.BAK and BOOTSECT.BAK. If I move those files to another folder and restart the computer, I boot straight into Windows XP. No Vista boot loader. The bootmgr file is also in the root directory of Vista, a.k.a. drive D: or disk 1, but the files boot.ini, NETDETECT.COM, and ntldr are not in the root directory of that drive. Of course, boot.ini, NETDETECT.COM, and ntldr shouldn't be in the root directory of this drive (disk 1), as it does not contain the system partition.

If Vista is using the bootmgr on disk 1, then this would explain why I cannot boot into Windows XP. However, as you can see from the screenshot, disk 0 is the system "drive." Perhaps, the problem is not that Vista is using the bootmgr on disk 1, but EasyBCD is accessing that bootmgr to make changes to. I don't know. I still need to find out why EasyBCD or BCDedit.exe, for that matter, shows "device = unknown" under the Vista Boot Manger.

btw what was it you moved from XP to Vista that caused this ? Did you copy the BCD ?
Most of the installation files for video games I have digitally purchased from places like Direct2Drive are stored on that drive. Since I'm buying a 2TB harddrive for backing up both drives, I figured I could make better use of disk space if I balanced the files between the two drives. So I selected about half the folders I had under C:\Game Files and moved them to D:\Game Files. Apparently, I either should have copied them, or moved them to D:\Game Files from Windows XP, rather than Windows Vista. Perhaps Vista didn't update the MFT correctly, I don't know. A disk check return no errors. So I don't know what the real cause is. That's why I mentioned that Microsoft KB article.
 

Attachments

#5
Hello.

I found a solution! Yet, I have one more question.

I would like to thank Jake and Terry for their offer of assistance.

I also have this forum to thank too. The notion to try the following simple steps was suggested to me after reading a number of threads.

As Terry pointed out, there might be two "active" instances of BCD. In the root directory of my Windows XP installation, there are three files that are not installed by Windows XP. Those files are boot.BAK, BOOTSECT.BAK, and bootmgr. In the root directory of my Vista install is the file bootmgr.

What if I deleted all those files?

Well, I could not delete bootmgr from the Vista install. However. I could rename it. I was able to delete the three files from the root directory of the Windows XP install.

After deleting these files, I ran EasyBCD 1.7.2 in Windows XP.

First, I used the option to uninstall the boot loader, then I restarted the computer. Without the files I deleted, the system booted back into Windows XP. I loaded EasyBCD 1.7.2 once again, and used the option to install the Vista boot loader.

Without restarting the computer, I first used the option to reset the BCD store, followed by the option to recreate any missing boot files. With that complete, I added a new entry for Windows XP and made a couple of other changes. At this point, I noticed the parameter for device under the Vista Boot Manager heading read "partition=C", instead of "unknown.'

I booted into Vista setup and ran the start-up repair. I noticed the log specified a corrupt or missing bootmgr. When the computer rebooted, the Vista boot loader menu appeared. I let it load the default entry and Vista loaded without issue. Before restarting the computer to test whether or not the Windows XP entry would work, I explored the root directory of both drives.

From what I saw, I knew immediately it was going to work. First off, I noticed the only bootmgr that was present in the Vista root directory was the one I renamed. When I next took a look in the root directory for the Windows XP install, I checked the date the bootmgr was created and, sure enough, it was created just a few minutes ago. That single fact told me Vista installed the bootmgr to the correct drive.

So, it came as no surprise, only much relief, when the system booted into Windows XP from the Vista boot loader menu.

Since I have another question, I will mention here that yesterday I had succeeded in fixing this issue, but when I reinstalled Ubuntu 9.4 on the third HDD, and grub was written to hd(0), I once again lost the ability to load Windows XP from the Vista boot loader menu. This is when I discovered the two Vista boot loader entries in the grub boot menu.

With that past event in mind, I'm now apprehensive about writing grub to hd(0), when I next install Ubuntu. If I use EasyBCD to add an entry for Ubuntu, what issues might I face if I either reinstall Ubuntu or install a newer version?

At this point, I'm seriously thinking of researching a way to install grub to a floppy disk that will only boot Ubuntu. I believe there's an Ubuntu how-to' on how to accomplish this. Regardless, if anyone knows a simple, yet surefire way to do this, please share it with me. A link to a web page that accomplishes the same would be just as helpful.

Thanks ~Mike
 
#6
I believe your original problem was having the XP BCD entry pointing at the wrong partition (i.e. D: instead of C: ), and so that is why after resetting the BCD store, and readding the XP entry, you were able to boot into XP. I don't think the extra steps were necessary, and believe it would have worked by simply deleting, and creating again (or using Change Settings) the XP entry...:wink:
But anyway, what's done is done, and you should be happy that it works now.
Concerning your latest question, the next time you install Ubuntu, just use the "Advanced" option during the installation setup, and type in a location like /dev/sda3 (first hard drive in the BIOS boot sequence, 3rd partition in the MBR partition table of that hard drive). That will install Grub to the bootsector of that partition, instead of to the MBR, and so your Vista bootloader will remain intact. :smile:

Once you do that, then it will be a simple matter of using [thread=642]EasyBCD 2.0 Beta[/thread] to add a Linux entry to your Vista boot menu. If it will be on the same HDD as the hard drive that contains the primary bootloader )i.e drive 0), then no need to check the "Grub is not installed..." box. But if its on a different HDD than drive 0, then you will need to check that box.

Cheers.

Jake