[FIXED] EasyBCD 2.0.1 writes boot.ini to wrong partition

joevt

Distinguished Member
The drive letters you see in EasyBCD are not used for booting.

For booting, the Vista/Windows 7 BOOTMGR uses UIDs in the BCD file and Windows NT/XP NTLDR and EasyLDR# use ArcPaths in the Boot.ini or ebcd.00#.

The drive letters in the entries in the View Settings window are just to tell the user where the files used to boot that entry are located. They are usually on the same disk as the BCD which is not usually the disk that the files will boot.

You should not add XP entries to a BCD that is on a different disk than the BCD you booted from. Search previous posts above in this thread for a note: "Adding a Windows XP entry to a BCD on a different disk will probably use incorrect Arc paths in the .ini."

If you're still having problems, post the output of the "BootGrabber /tlist" command while booted into XP on both your SSD and HD (explain what OS is on each drive letter). Also copy and paste the XP entries in the View Settings window. And finally the contents of your boot.ini and ebcd.00# files for completeness.

The output from "bootgrabber /bootcfg" could also be useful. This will modify the boot.ini file but that's ok because your BCD should be setup to use easyldr which uses the ebcd.00# files.
 

mqudsi

Mostly Harmless
Staff member
EasyBCD checks to make sure that a \WINDOWS folder exists on the selected disk, and that the version of ntoskrnl.exe is less than 6.
 

macycat

Member
The drive letters you see in EasyBCD are not used for booting.

For booting, the Vista/Windows 7 BOOTMGR uses UIDs in the BCD file and Windows NT/XP NTLDR and EasyLDR# use ArcPaths in the Boot.ini or ebcd.00#.

The drive letters in the entries in the View Settings window are just to tell the user where the files used to boot that entry are located. They are usually on the same disk as the BCD which is not usually the disk that the files will boot.

You should not add XP entries to a BCD that is on a different disk than the BCD you booted from. Search previous posts above in this thread for a note: "Adding a Windows XP entry to a BCD on a different disk will probably use incorrect Arc paths in the .ini."

If you're still having problems, post the output of the "BootGrabber /tlist" command while booted into XP on both your SSD and HD (explain what OS is on each drive letter). Also copy and paste the XP entries in the View Settings window. And finally the contents of your boot.ini and ebcd.00# files for completeness.

The output from "bootgrabber /bootcfg" could also be useful. This will modify the boot.ini file but that's ok because your BCD should be setup to use easyldr which uses the ebcd.00# files.

EasyBCD checks to make sure that a \WINDOWS folder exists on the selected disk, and that the version of ntoskrnl.exe is less than 6.

That addresses most of my questions. If I can only get EasyBCD to create the ebcd.00# files without getting the "no valid XP install found" error, then I can manually edit them with the correct Arc paths, if necessary.

Thanks.
 

joevt

Distinguished Member
Did EasyBCD create the \NST\easyldr# files? You'll need those too. They are identical to the \NST\ntldr file except with boot.ini replaced with ebcd.00#.

If you execute the two bootgrabber commands and post the output here then we might see a clue. Also verify that you can see the \WINDOWS\System32\ntoskrnl.exe files in each XP partition and that they have the correct version (something like 5.1.####.####).
 

macycat

Member
Did EasyBCD create the \NST\easyldr# files? You'll need those too. They are identical to the \NST\ntldr file except with boot.ini replaced with ebcd.00#.

If you execute the two bootgrabber commands and post the output here then we might see a clue. Also verify that you can see the \WINDOWS\System32\ntoskrnl.exe files in each XP partition and that they have the correct version (something like 5.1.####.####).


I re-read the XP support tutorial, and I think I understand how things should work, but I still can't create the ebcd.00# files. I do have the \WINDOWS directory with the \WINDOWS\System32\ntoskrnl.exe file, version 5.1.2600.5857. Not sure what is wrong.

Here is the bootgrabber /tlist output from my SSD XP install:
(I will post the output from my HD XP install upon re-boot into that install.)

C:\Program Files\NeoSmart Technologies\EasyBCD\bin>BootGrabber /tlist

BootGrabber utility.
Copyright NeoSmart Technologies 2009-2010 <http://neosmart.net/>

Unable to get volume information for \\?\Volume{dcfa305e-a905-11df-b750-806d6172
696f}\
Unable to get volume information for \\?\Volume{dcfa305f-a905-11df-b750-806d6172
696f}\
Unable to get volume information for \\?\Volume{b4ee84c4-6f7c-11df-8cee-806d6172
696f}\
D0,2,2,0,60022480896,1
P1,C:\,7,20971520512,14683189248,Yes,multi(0)disk(0)rdisk(0)partition(1),Yes,NTF
S
P2,D:\,7,28562161664,14832046080,Yes,multi(0)disk(0)rdisk(1)partition(2),No,NTFS

D1,5,4,2,1000204886016,1
P1,F:\,7,53477376000,37940465664,Yes,multi(0)disk(0)rdisk(1)partition(1),Yes,NTF
S
P2,G:\,7,41943040512,31971233792,Yes,multi(0)disk(0)rdisk(1)partition(2),No,NTFS

P0,,15,894780310528,0,Yes,,No,
P3,,131,9999220736,9999220736,Yes,multi(0)disk(0)rdisk(1)partition(5),No,
P4,H:\,7,894294818816,744990371840,No,multi(0)disk(0)rdisk(1)partition(4),No,NTF
S
P0,,5,484442624,0,No,,No,
P5,,130,484442112,484442112,No,multi(0)disk(0)rdisk(1)partition(5),No,

C:\Program Files\NeoSmart Technologies\EasyBCD\bin>

Addendum:

I re-read the XP support tutorial, and I think I understand how things should work, but I still can't create the ebcd.00# files. I do have the \WINDOWS directory with the \WINDOWS\System32\ntoskrnl.exe file, version 5.1.2600.5857. Not sure what is wrong.

Here is the bootgrabber /tlist output from my SSD XP install:
(I will post the output from my HD XP install upon re-boot into that install.)

Ok, here is the deal. I had an unallocated partition after Disk0 Partition 2. Once I formatted it and assigned it a letter, everything seemed to work.

Here is the bootgrabber /tlist output from my SSD XP install with the partition formatted and assigned with letter T:

Thanks for your help, and I hope this helps out.




C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /tlist

BootGrabber utility.
Copyright NeoSmart Technologies 2009-2010 <http://neosmart.net/>

Unable to get volume information for \\?\Volume{dcfa305e-a905-11df-b750-806d6172
696f}\
Unable to get volume information for \\?\Volume{dcfa305f-a905-11df-b750-806d6172
696f}\
Unable to get volume information for \\?\Volume{b4ee84c4-6f7c-11df-8cee-806d6172
696f}\
D0,3,3,0,60022480896,0
P1,C:\,7,20971520512,14680993792,Yes,multi(0)disk(0)rdisk(0)partition(1),Yes,NTF
S
P2,D:\,7,28562161664,14837362688,Yes,multi(0)disk(0)rdisk(1)partition(2),No,NTFS

P3,T:\,7,10484089344,10426888192,Yes,multi(0)disk(0)rdisk(0)partition(3),No,NTFS

D1,5,4,2,1000204886016,1
P1,F:\,7,53477376000,37986824192,Yes,multi(0)disk(0)rdisk(1)partition(1),Yes,NTF
S
P2,G:\,7,41943040512,31972761600,Yes,multi(0)disk(0)rdisk(1)partition(2),No,NTFS

P0,,15,894780310528,0,Yes,,No,
P3,,131,9999220736,9999220736,Yes,multi(0)disk(0)rdisk(1)partition(5),No,
P4,H:\,7,894294818816,744990371840,No,multi(0)disk(0)rdisk(1)partition(4),No,NTF
S
P0,,5,484442624,0,No,,No,
P5,,130,484442112,484442112,No,multi(0)disk(0)rdisk(1)partition(5),No,
 
Last edited:

mqudsi

Mostly Harmless
Staff member
Hmmmmm. I'll have to re-test that vigorously, but I see no reason why an unformatted space after your XP partition would prevent detection of your Windows install.

So now you have a working XP-XP-7 dual-boot without a second menu?
 

joevt

Distinguished Member
You're output for the 2nd drive looks strange because it contains logical partitions which I haven't seen before. I've cleaned it up and rearranged it to make it more readable. I'm not sure why Bootgrabber ordered the partitions the way it did - for example, the first P0 and P3 of the 2nd drive are primary partitions but they are listed with the logical partitions.
Code:
D# (Device index, partition count, primary count, logical count, size, ?I don't know?)

P# (Partition index, mount point, mbr partition type, size, free space, primary, arc path, active, file system)

D0,2,2,0,60022480896,1
P1,C:\,7,20971520512,#,Yes,multi(0)disk(0)rdisk(0)partition(1),Yes,NTFS    (XP boot)
P2,D:\,7,28562161664,#,Yes,multi(0)disk(0)rdisk(1)partition(2),No,NTFS     (Win7)

D1,5,4,2,1000204886016,1
P1,F:\,7,53477376000,#,Yes,multi(0)disk(0)rdisk(1)partition(1),Yes,NTFS    (XP boot)
P2,G:\,7,41943040512,#,Yes,multi(0)disk(0)rdisk(1)partition(2),No,NTFS     (Win7)
P3,,131,9999220736,#,Yes,multi(0)disk(0)rdisk(1)partition(5),No,           (Linux)
P0,,15,894780310528,0,Yes,,No,                                             (extended partition)
[
    P4,H:\,7,894294818816,#,No,multi(0)disk(0)rdisk(1)partition(4),No,NTFS
    P0,,5,484442624,0,No,,No,
    [
        P5,,130,484442112,#,No,multi(0)disk(0)rdisk(1)partition(5),No,
    ]
]

partition types:
0x05 = 5   DOS 3.3+ Extended Partition
0x07 = 7   NTFS
0x0F = 15  WIN95: Extended partition, LBA-mapped
0x83 = 131 Linux native partition
0x82 = 130 Linux swap

I thought P3 is always the extended partition but your 2nd disk has P0 as the extended partition. The 1st extended partition uses type 15 but the 2nd extended partition uses type 5. I thought they would all use the same type. I guess I was wrong. None of that seems to matter since your computer boots and works ok.

The strangest thing is that your P3 has the same arc path as P5. This doesn't matter since both are not Windows XP. But if you want, maybe you can run WinObj and look at the arc paths in the ArcName directory and follow the symlinks to the volume device. e.g. multi(0)disk(0)rdisk(1)partition(1) -> \Device\Harddisk\Partition1 -> \Device\HarddiskVolume1. Then goto GLOBAL??, sort by symlink, and find the volume device symlink in GLOBAL?? to find the drive letter and partition info. e.g. symlink \Device\HarddiskVolume1 is used by "C:", "Volume{uuid}", and "STORAGE#Volume#Signature....Offset...Length...{another uuid}".


I'm glad you got it working. The only changes in your new output is the last field displayed for the 1st drive and the new partition:
Code:
D0,3,3,0,60022480896,0 <- what does 0 or 1 mean? It would help if /list wasn't missing fields that /tlist dumps.
P3,T:\,7,10484089344,#,Yes,multi(0)disk(0)rdisk(0)partition(3),No,NTFS
I don't know why these changes would affect EasyBCD.

btw:
You can copy and paste output to NotePad, clean it up, save it, and add more from other reboots before posting here. You can also make the cmd window wider so the text lines don't wrap. You can surround the output with [code] and [/code] to preserve spacing (which doesn't matter here because this output has no spacing).
 

Terry60

Telephone Sanitizer (2nd Class)
Staff member
You appear to have corruption somewhere. (rdisk(1) on disk 0)
I have a similar problem I'm trying to solve where W7 sees my Vista as RAW instead of NTFS, where TestDisk and DiskPatch both claim the partition table is fine and can see my Vista as correctly labelled NTFS. In my case, bootgrabber also sees the "wrong" rdisk on the partition in question, and in my case Vista is completely unbootable, so you seem to be lucky if it actually works.
 

macycat

Member
Hmmmmm. I'll have to re-test that vigorously, but I see no reason why an unformatted space after your XP partition would prevent detection of your Windows install.

So now you have a working XP-XP-7 dual-boot without a second menu?

Actually, I have a 7(SSD)-XP(SSD)-7(HD)-XP(HD)-Linux(HD) install when booted from the SSD, and I have a 7(HD)-XP(HD)-7(SSD)-XP(SSD)-Linux(HD) install when booted from the HD. Both boot without a second menu for all installs (except, of course, for the Linux install).

FYI, my installs are physically located as follows:

Disk(0)Part(1) - XP (SSD), BCD and XP boot files
Disk(0)Part(2) - Win7(SSD)
Disk(1)Part(1) - XP(HD), BCD and XP bootfiles
Disk(1)Part(2) - Win7(HD)
Disk(1)Part(3) - Linux
Disk(1)Part(4) - Linux Swap (may be part of logical drive? This was the last added partition on Disk(1))
Disk(1)Part(5) - Data (logical drive)

Once I formatted the unallocated partition and assigned it the letter T, EasyBCD was able to find all XP installs without giving me the error "no valid XP install found".

Everything seems to work, but I now see the apparent incorrect entry that Terry60 pointed out. That entry was created before I formatted and assigned a letter to the unallocated partition, and I never deleted that entry ... it does work by booting into my Win7 SSD install.


Thanks again for all your help.
 
Last edited:

joevt

Distinguished Member
Oh, I didn't notice the rdisk(1) on disk 0. Good catch. I would check the ArcName directory using WinObj to test whether or not the problem is with EasyBCD or the NT Object Manager/registry. An incorrect arcpath should only be bad for a partition if the partition is Windows XP.
 

Terry60

Telephone Sanitizer (2nd Class)
Staff member
Nothing about my unbootable Vista (failed whilst not in use for weeks !) made any sense.
Windows just said it was RAW, whilst all the diagnostic and repair tools I could find (till tonight) said it was a perfectly servicable NTFS partition, with a good PT, good boot sector and good file table.
The only error visible was the ARC path, which shouldn't be relevant but showed something was obviously askew somewhere.

Good news is, tonight,
http://www.partition-tool.com/download.htm
run from XP, found the (partial) Vista partition and found 400,000 errors which it offered to fix with chkdsk, which native windows refuses to run against a RAW partition.
An hour later, W7 and XP can both see Vista again, so I've just got to fix the boot (fingers crossed)
 

macycat

Member
You're output for the 2nd drive looks strange because it contains logical partitions which I haven't seen before. I've cleaned it up and rearranged it to make it more readable. I'm not sure why Bootgrabber ordered the partitions the way it did - for example, the first P0 and P3 of the 2nd drive are primary partitions but they are listed with the logical partitions.
Code:
D# (Device index, partition count, primary count, logical count, size, ?I don't know?)

P# (Partition index, mount point, mbr partition type, size, free space, primary, arc path, active, file system)

D0,2,2,0,60022480896,1
P1,C:\,7,20971520512,#,Yes,multi(0)disk(0)rdisk(0)partition(1),Yes,NTFS    (XP boot)
P2,D:\,7,28562161664,#,Yes,multi(0)disk(0)rdisk(1)partition(2),No,NTFS     (Win7)

D1,5,4,2,1000204886016,1
P1,F:\,7,53477376000,#,Yes,multi(0)disk(0)rdisk(1)partition(1),Yes,NTFS    (XP boot)
P2,G:\,7,41943040512,#,Yes,multi(0)disk(0)rdisk(1)partition(2),No,NTFS     (Win7)
P3,,131,9999220736,#,Yes,multi(0)disk(0)rdisk(1)partition(5),No,           (Linux)
P0,,15,894780310528,0,Yes,,No,                                             (extended partition)
[
    P4,H:\,7,894294818816,#,No,multi(0)disk(0)rdisk(1)partition(4),No,NTFS
    P0,,5,484442624,0,No,,No,
    [
        P5,,130,484442112,#,No,multi(0)disk(0)rdisk(1)partition(5),No,
    ]
]

partition types:
0x05 = 5   DOS 3.3+ Extended Partition
0x07 = 7   NTFS
0x0F = 15  WIN95: Extended partition, LBA-mapped
0x83 = 131 Linux native partition
0x82 = 130 Linux swap
I thought P3 is always the extended partition but your 2nd disk has P0 as the extended partition. The 1st extended partition uses type 15 but the 2nd extended partition uses type 5. I thought they would all use the same type. I guess I was wrong. None of that seems to matter since your computer boots and works ok.

The strangest thing is that your P3 has the same arc path as P5. This doesn't matter since both are not Windows XP. But if you want, maybe you can run WinObj and look at the arc paths in the ArcName directory and follow the symlinks to the volume device. e.g. multi(0)disk(0)rdisk(1)partition(1) -> \Device\Harddisk\Partition1 -> \Device\HarddiskVolume1. Then goto GLOBAL??, sort by symlink, and find the volume device symlink in GLOBAL?? to find the drive letter and partition info. e.g. symlink \Device\HarddiskVolume1 is used by "C:", "Volume{uuid}", and "STORAGE#Volume#Signature....Offset...Length...{another uuid}".


I'm glad you got it working. The only changes in your new output is the last field displayed for the 1st drive and the new partition:
Code:
D0,3,3,0,60022480896,0 <- what does 0 or 1 mean? It would help if /list wasn't missing fields that /tlist dumps.
P3,T:\,7,10484089344,#,Yes,multi(0)disk(0)rdisk(0)partition(3),No,NTFS
I don't know why these changes would affect EasyBCD.

btw:
You can copy and paste output to NotePad, clean it up, save it, and add more from other reboots before posting here. You can also make the cmd window wider so the text lines don't wrap. You can surround the output with [code] and [/code] to preserve spacing (which doesn't matter here because this output has no spacing).

FYI -

I ran bootgrabber and got the same result. Here is the info from view settings:

There are a total of 6 entries listed in the bootloader.

Default: OCZ Microsoft Windows 7 Professional
Timeout: 3 seconds
EasyBCD Boot Device: C:\

Entry #1
Name: OCZ Microsoft Windows 7 Professional
BCD ID: {default}
Drive: D:\
Bootloader Path: \Windows\system32\winload.exe

Entry #2
Name: OCZ Microsoft Windows XP Home Edition
BCD ID: {22df88d2-ab5c-11df-a35b-00248c5e5992}
Drive: C:\
Bootloader Path: \NST\ntldr

Entry #3
Name: HD Microsoft Windows 7 Professional
BCD ID: {3dcf5c0c-ab5c-11df-a35b-00248c5e5992}
Drive: G:\
Bootloader Path: \Windows\system32\winload.exe

Entry #4
Name: HD Microsoft Windows XP Home Edition
BCD ID: {62e80fda-ac05-11df-83a1-00248c5e5992}
Drive: C:\
Bootloader Path: \NST\easyldr1

Entry #5
Name: HD Ubuntu
BCD ID: {40530694-ac17-11df-83a7-00248c5e5992}
Drive: C:\
Bootloader Path: \NST\AutoNeoGrub2.mbr

I also downloaded winobj.exe, followed the paths for all the arc paths, and obtained the expected results, i.e., D(0)P(1) = C:, D(0)P(2) = D:, D(0)P(1) = F:, and D(1)P(2) = G:

... not sure why bootgrabber is showing D: = D(1)P(2)???
 

joevt

Distinguished Member
macycat said:
Entry #2
Name: OCZ Microsoft Windows XP Home Edition
BCD ID: {22df88d2-ab5c-11df-a35b-00248c5e5992}
Drive: C:\
Bootloader Path: \NST\ntldr
You're using \NST\ntldr for your first XP entry which uses boot.ini which defaults to all your XP drives instead of just one. Don't you want to use easyldr for that one too like you did for the other XP entry?

macycat said:
I also downloaded winobj.exe, followed the paths for all the arc paths, and obtained the expected results, i.e., D(0)P(1) = C:, D(0)P(2) = D:, D(0)P(1) = F:, and D(1)P(2) = G:

... not sure why bootgrabber is showing D: = D(1)P(2)???
I guess bootgrabber is using a different source for the arc paths instead of the NT Object Manager.
 

joevt

Distinguished Member
Nope. Latest bootgrabber uses the object manager.

That means one of three things:
1) macycat isn't using the latest version (he said he was using 117)
2) he didn't follow the object manager ArcName symlinks properly and they are actually wrong (screen shots from macycat would prove this wrong)
3) bootgrabber is using the object manager differently than what I suggested to macycat.
 

mqudsi

Mostly Harmless
Staff member
I'm fairly certain it's number 3. Screenshots of the symlinks page in the object manager would be most helpful.
 

macycat

Member
You're using \NST\ntldr for your first XP entry which uses boot.ini which defaults to all your XP drives instead of just one. Don't you want to use easyldr for that one too like you did for the other XP entry?

I guess bootgrabber is using a different source for the arc paths instead of the NT Object Manager.

I modified boot.ini to keep just the OCZ XP install -
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="OCZ Windows XP Home Edition" /fastdetect

Attached are the requested screenshots ... just let me know if anything else is needed.


http://img835.imagehttp://img839.imageshack.us/i/screenshot1gl.jpg/shack.us/i/screenshot2wm.jpg/
 

Attachments

  • Screenshot1.JPG
    Screenshot1.JPG
    291.9 KB · Views: 8
  • Screenshot2.JPG
    Screenshot2.JPG
    76.1 KB · Views: 5
  • Screenshot3.JPG
    Screenshot3.JPG
    99.2 KB · Views: 2
  • Screenshot4.JPG
    Screenshot4.JPG
    347.7 KB · Views: 2
Last edited:

joevt

Distinguished Member
You erased the T: drive?

This is what I see from the screen shots:
Code:
  Harddisk0\Partition1 -> rdisk(0)partition(1), HarddiskVolume1 -> C:
* Harddisk0\Partition2 -> rdisk(0)partition(2), HarddiskVolume2 -> D:
  Harddisk1\Partition1 -> rdisk(1)partition(1), HarddiskVolume3 -> F:
  Harddisk1\Partition2 -> rdisk(1)partition(2), HarddiskVolume4 -> G:
* Harddisk1\Partition3 -> rdisk(1)partition(3), HarddiskVolume5
  Harddisk1\Partition4 -> rdisk(1)partition(4), HarddiskVolume6 -> H:
  Harddisk1\Partition5 -> rdisk(1)partition(5), HarddiskVolume7
The information looks correct. The items marked with * are what Bootgrabber got wrong.

Assuming that Bootgrabber gets the disk and partition numbers correct (looks like it does), then using the NT Object Manger, it is possible to get the arc path from \ArcName and the volume device from \Device\Harddisk#. Then using the volume device it is possible to get the drive letter for properly mounted drives from \GLOBAL??.
 
Top