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

#1
I was testing out EasyBCD's new Windows XP feature. I used EasyBCD to edit the BCD on my Vista 64 partition and added two entries for the Windows XP partition on the same drive and another XP partition on another drive. I also added a third entry using the automatic mode. This properly created the following files on the Vista 64 partition:
\NST\ntldr - NTLDR for both Windows XP partitions. Uses Boot.ini.
\NST\easyldr1 - NTLDR for 1st Windows XP partition. Uses ebcd.001.
\NST\easyldr2 - NTLDR for 2nd Windows XP partition. Uses ebcd.001.
\Boot.ini - Boot.ini for both Windows XP partitions.
\ebcd.001 - Boot.ini for first Windows XP partition.
\ebcd.002 - Boot.ini for second Windows XP partition.

All three options booted as expected when I boot my Vista 64 partition. So far so good. I like this new feature.

Next, I booted into my Windows XP partition and edited the BCD on that partition and added the same 3 entries. This properly creates the following files on my Windows XP partition:
\NST\ntldr
\NST\easyldr1
\NST\easyldr2

However, the three other files
\Boot.ini
\ebcd.001
\ebcd.002
were added to my Vista 32 partition.

When I boot my Windows XP partition, using these 3 options in the boot menu fails because the files are not in the root directory of the Windows XP partition. Actually the 1st option works but it's using the Boot.ini file that already exists on the Windows XP partition instead of the one that EasyBCD put on my Vista 32 partition. I originally wanted to test if my existing Boot.ini file would get overwritten - not expecting for a new Boot.ini to be created on a different partition.

I believe this problem is related to the SystemPartition issue discussed at EasyBCD 2.0 b97 overwrites all MBRs even on disks with no MBR - Page 2 - The NeoSmart Forums which I haven't been able to remedy yet so I thought I would bring it up again in a separate thread in this new context.

EasyBCD is using the SystemPartition value as the location of the Boot.ini files even though the NTLDR code obviously does not use that to load the Boot.ini file. EasyBCD does not use the SystemPartition value as the location of the ANG# and NeoGrub files used by the other \NST files so I don't see a reason to use the SystemPartition value for NTLDR. It seems that SystemPartition is not used for any part of the boot process - because my Windows XP partition boots fine when all the files are on the Windows XP partition. In fact, when I use the Windows XP partition in Parallels Desktop (virtualization), SystemPartition is pointing at a zeroed out partition which causes EasyBCD to give an error "Valid NT Install Not Found!" (all mounted drives or selected drive) when I try to add a Windows XP entry.

In the thread I linked, Computer Guru said that "BootCamp isn't reporting the correct boot drive info to Windows". I don't see how this could be true if all my other Windows partitions (Vista 32, Vista 64, 2nd Windows XP) do not have this problem. Or if it is true, it doesn't affect booting.
 

mqudsi

Mostly Harmless
Staff member
#2
I don't use the SystemPartition value for NTLDR - I only use it for boot.ini and easybcd.xxx

I'm working on yet another change that will do away with the easybcd.xxx files entirely by hard-coding the (single) destination into easyldr. I hope to have something you can test soon.
 
#3
I don't use the SystemPartition value for NTLDR - I only use it for boot.ini and easybcd.xxx
I think that's what I said. My question was why?

I'm working on yet another change that will do away with the easybcd.xxx files entirely by hard-coding the (single) destination into easyldr. I hope to have something you can test soon.
That would be great for the single drive case but not for the automatic case (though there's little reason to use the automatic method now).

Another thing about Boot Camp and the Apple BIOS. Parallels Desktop doesn't use Boot Camp or Apple's BIOS to boot my Windows XP partition so that basically eliminates those as a cause. The SystemPartition must be set by some other means... When I boot the Mac into Windows XP, the SystemPartition is set to HarddiskVolume10 instead of HarddiskVolume11. When I boot the Windows XP in Parallels, SystemPartition is set to HarddiskVolume3 instead of HarddiskVolume4.
 

mqudsi

Mostly Harmless
Staff member
#4
I don't know - I can't really debug all of Windows for Microsoft.

I don't need to use SystemPartition for NTLDR because I call it manually from the BCD, along with the complete path. But NTLDR is pretty dumb and is hard-coded to read boot.ini from the boot partition. It has its own code that gets the boot partition from the BIOS directly. I don't have access to the BIOS (and cannot get access to the BIOS), so I have to trust what Windows tells me is the boot partition (via the SystemPartition registry key).
 
#5
You know the code in \NST\NeoGrub.mbr which loads \NeoGrub. Are you saying that the code in NTLDR for getting the Boot.ini is much different? The boot partition has to be the one with the active flag set in the MBR, doesn't it?

I can accept that there's no way from within Windows for you to know for sure where NTLDR is going to get it's Boot.ini file and that I'll have to figure how to fix my SystemPartition value myself.

The question then becomes: How do you setup a scenario where NTLDR reads Boot.ini from a different partition than the one containing NTLDR given the following information (available from Windows):
1) NTLDR is in \NST\
2) BOOTMGR and BCD is on the same partition
3) BOOTMGR will be be booted (which generally implies that the partition will be the partition with the active flag set in the MBR).
4) BOOTMGR will load \NST\NTLDR
 

mqudsi

Mostly Harmless
Staff member
#6
Hehe... regardless of whether you and I can accept it - that's the case :smile:

For sure there *is* a way, but it's nothing that I've come across yet. And, believe me, I've done a *lot* of research on this matter. I'm still looking into it, I haven't given up, but if you think it's easy, then you're in for a surprise.

I don't rely on the relative path between NTLDR and Boot.ini. Instead, NTLDR explicitly loads the active partition on the boot drive and does its thing.
 

mqudsi

Mostly Harmless
Staff member
#7
Joe - try the attached build. I'm 99% sure this new technique will fix the problem for you (if not this very build, that is). I took a leap of faith, and am not relying on anything MS provides. I'm pulling all the info straight from the device itself.

I don't know if this'll work for everyone else, I'll need to test that too!!!!
 

Attachments

#8
I tested EasyBCD 2.0.2 build 113 in Windows XP on drive C: editing the BCD on that drive. I'll check on my other partitions tomorrow.

Adding a Windows XP entry for drive C causes EasyBCD to create a file C:\NST\easyldr1, then the "Valid NT Install Not Found!" error message appears:
"EasyBCD failed to detect a valid version of Windows NT-2003 on the selected drive and was unable to continue. Please select a different disk and try again."
Dismissing the error message removes C:\NST\easyldr1.

I believe build 113 doesn't look at HKLM\System\Setup\SystemPartition because fixing it doesn't affect this error. It is also not looking at HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\BootDir which I fixed by changing it from D:\ to C:\. The changes to these values in the registry are only temporary. They get changed back to the incorrect values during startup.

It seems that "the info straight from the device itself" is wrong but I don't know if it's wrong in the same way as the registry entries because I don't know what the info is pointing to.

How do you setup a scenario where NTLDR reads Boot.ini from a different partition than the one containing NTLDR given the following information (available from Windows):
1) NTLDR is in \NST\
2) BOOTMGR and BCD is on the same partition
3) BOOTMGR will be be booted (which generally implies that the partition will be the partition with the active flag set in the MBR).
4) BOOTMGR will load \NST\NTLDR
The above question was meant to find a case where you need to look at SystemPartition to know where to put Boot.ini instead of just using the given information. It assumes (maybe incorrectly?) that you know where BOOTMGR and the BCD are located. I'm pretty sure you know where the BCD is (otherwise, how could EasyBCD edit it?). Is there a scenario where the BCD could be on a different partition than BOOTMGR, i.e. can BOOTMGR use a BCD that is not on the same partition?

Basically, I'm asking where in this chain of events a system partition change can occur:
MBR -> active partition boot blocks -> BOOTMGR -> BCD -> \NST\NTLDR -> Boot.ini

I know the BCD can point to an NTLDR on any partition but EasyBCD is responsible for creating \NST\ and has a reason (BOOTMGR, BCD, or both?) for it's location. But regardless of where NTLDR is or whether or not there's a reason for /NST/'s location, it might be possible that Boot.ini may need to be on the same partition as BOOTMGR/BCD. If Boot.ini must be on the system partition and BOOTMGR/BCD must also be on the system partition? then logically Boot.ini can be placed on the same partition as BOOTMGR/BCD without knowing what the system partition is.
 

mqudsi

Mostly Harmless
Staff member
#9
Good point - that's definitely possible. I also cannot find a situation where BOOTMGR and Boot.ini would be on different drives.

Can you please start EasyBCD | Useful Utils | Power Console
Code:
bootgrabber.exe /bootcfg  \ArcName\multi(0)disk(0)rdisk(0)partition(0)
And show me the output? Use build 113 please.
 
#10
I got the following:
Code:
C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber.exe /bootcfg  \ArcName\multi(0)disk(0)rdisk(0)partition(0)

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

 Drive 0, Partition 4: No Windows installation found.
No valid entries found, quitting.
The partition is correct (if we start counting from 1?) but I wonder what it can find if it can't find the Windows installation there...

Here's some output from dmdiag:
Code:
C:\Documents and Settings\Joe>dmdiag -v

---------- Computer Name and OS Version ----------

       Computer name: JOE-MACPRO
            NT build: 2600
            CPU Type: x86
      DMDIAG Version: 5.1.2600.0 shp

---------- Drive Letter Usage, Drive Type ----------

A: = \Device\Floppy0 [Removable]
C: = \Device\HarddiskVolume4 [Fixed]
D: = \Device\HarddiskVolume3 [Fixed]
E: = \Device\HarddiskVolume2 [Fixed]
F: = \Device\CdRom0 [CDRom]
G: = \Device\SCDEmu\SCDEmuCd0 [CDRom]

---------- Consolidated LDM Configuration Data ----------

ERROR: scan operation failed:
        A format error was found in the private region of the disk
ERROR: scan operation failed:
        A format error was found in the private region of the disk

---------- \Device\Harddisk0 ----------

\Device\Harddisk0\DP(1)0x200-0xc804e00+1 (Device)
\Device\Harddisk0\DP(2)0xc805000-0x13f3334000+2 (Device)
\Device\Harddisk0\DP(3)0x13ffb39000-0x140cccc000+3 (Device)
\Device\Harddisk0\DP(4)0x280c805000-0x227954c000+4 (Device)
\Device\Harddisk0\DR0            (Device)
\Device\Harddisk0\Partition0     (SymbolicLink) -> \Device\Harddisk0\DR0
\Device\Harddisk0\Partition1     (SymbolicLink) -> \Device\HarddiskVolume1
\Device\Harddisk0\Partition2     (SymbolicLink) -> \Device\HarddiskVolume2
\Device\Harddisk0\Partition3     (SymbolicLink) -> \Device\HarddiskVolume3
\Device\Harddisk0\Partition4     (SymbolicLink) -> \Device\HarddiskVolume4

---------- Partition Table Info Disk 0 ----------


          38,913 Cylinders
             255 Tracks/Cylinder
              63 Sectors/Track
             512 Bytes/Sector
              12 MediaType
     625,137,345 Sectors (total)
 320,070,320,640 Bytes (total)
     312,568,673 KB
         305,243 MB
           298.1 GB

               0 StartingOffset
 320,072,933,376 PartitionLength
               0 HiddenSectors
               0 PartitionNumber
               0 PartitionType
               0 BootIndicator
               0 RecognizedPartition
               0 RewritePartition

             MBR PartitionStyle
               4 PartitionCount
        12411240 Signature

        Starting        Partition     Hidden       Total  Partition    Partition       Boot Recognized    Rewrite
  Offset (bytes)   Length (bytes)    Sectors     Sectors     Number   Type (HEX)  Indicator  Partition  Partition

             512      209,735,168          1     409,639          0         0xEE          0          1          0
     209,735,680   85,684,600,832    409,640 167,352,736          1         0x07          0          1          0
  85,894,336,512   86,114,091,008 167,762,376 168,191,584          2         0x07          0          1          0
 172,008,427,520  148,064,485,376 335,953,960 289,188,448          3         0x07          1          1          0

 320,070,320,640 Bytes (625137345 sectors) Geometric size
 320,072,933,376 Bytes (625142448 sectors) True size (measured)
 320,072,933,376 Bytes (625142448 sectors) Reported size (Partition0)
               0 Bytes (       0 sectors) missing/wasted
Here's output from diskpart:
Code:
C:\Documents and Settings\Joe>diskpart

Microsoft DiskPart version 5.1.3565

Copyright (C) 1999-2003 Microsoft Corporation.
On computer: JOE-MACPRO

DISKPART> list volume

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     F                       CD-ROM          0 B
  Volume 1     E                       Partition     80 GB  Healthy
  Volume 2     D                       Partition     80 GB  Healthy
  Volume 3     C   Windows XP   NTFS   Partition    138 GB  Healthy    Boot

DISKPART> list disk

  Disk ###  Status      Size     Free     Dyn  Gpt
  --------  ----------  -------  -------  ---  ---
  Disk 0    Online       298 GB      0 B

DISKPART> select disk 0

Disk 0 is now the selected disk.

DISKPART> list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
  Partition 1    Unknown            200 MB    512 B
  Partition 2    Primary             80 GB   200 MB
  Partition 3    Primary             80 GB    80 GB
  Partition 4    Primary            138 GB   160 GB
Here's my C drive (some files removed):
Code:
C:\Documents and Settings\Joe>dir /a C:\
 Volume in drive C is Windows XP
 Volume Serial Number is D860-C50E

 Directory of C:\

14/07/2010  08:20 PM    <DIR>          $RECYCLE.BIN
14/07/2010  09:26 PM           235,313 ANG0
14/07/2010  09:27 PM           235,311 ANG1
17/07/2010  12:55 PM           235,883 ANG10
14/07/2010  09:27 PM           235,311 ANG2
14/07/2010  09:28 PM           235,311 ANG3
14/07/2010  09:31 PM           235,883 ANG4
14/07/2010  09:33 PM           235,367 ANG5
14/07/2010  09:33 PM           235,300 ANG6
14/07/2010  09:33 PM           235,325 ANG7
14/07/2010  09:33 PM           235,319 ANG8
14/07/2010  09:36 PM           235,423 ANG9
11/08/2008  12:54 PM                 0 AUTOEXEC.BAT
20/11/2009  12:11 AM                50 BCUIUpdate.log
13/08/2008  03:40 AM    <DIR>          Boot
27/06/2010  08:13 PM               259 boot.ini
20/01/2008  07:49 PM           333,203 bootmgr
10/06/2010  12:45 AM    <DIR>          cmdcons
14/04/2008  05:00 AM           260,288 cmldr
11/08/2008  12:54 PM                 0 CONFIG.SYS
01/06/2010  10:48 AM    <DIR>          Documents and Settings
17/12/2009  05:50 PM    <DIR>          INetPub
09/07/2007  12:23 PM                 0 IO.SYS
05/01/2002  05:48 AM           974,848 mfc70.dll
05/01/2002  05:36 AM           964,608 mfc70u.dll
09/07/2007  12:23 PM                 0 MSDOS.SYS
28/06/2010  12:44 AM    <DIR>          MSOCache
05/01/2002  04:38 AM            54,784 msvci70.dll
05/01/2002  04:40 AM           487,424 msvcp70.dll
05/01/2002  04:37 AM           344,064 msvcr70.dll
14/07/2010  09:29 PM           235,478 NeoGrub
19/07/2010  02:29 AM    <DIR>          NST
20/06/2010  09:24 PM            47,772 NTDETECT.COM
20/06/2010  09:24 PM           297,072 ntldr
19/07/2010  12:29 PM     2,145,386,496 pagefile.sys
20/06/2010  07:52 PM    <DIR>          Program Files
14/07/2010  09:14 PM    <DIR>          RECYCLER
01/06/2010  01:16 AM    <DIR>          WinDDK
17/07/2010  01:02 PM    <DIR>          WINDOWS

Addendum:

The previous output was from booting the partition in Parallels Desktop.

Here's the output when the Mac is booted into the partition:
Code:
C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber.exe /bootcfg  \ArcName\multi(0)disk(0)rdisk(0)partition(0)

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

 Drive 0, Partition 2: No Windows installation found.
 Drive 0, Partition 3: No Windows installation found.
 Drive 1, Partition 2: No Windows installation found.
 Drive 1, Partition 3: No Windows installation found.
 Drive 1, Partition 4: No Windows installation found.
 Drive 2, Partition 2: No Windows installation found.
 Drive 3, Partition 2: Windows Vista+ (Ignored).
 Drive 3, Partition 3: Windows Vista+ (Ignored).
 Drive 3, Partition 4: Valid Windows 2k/XP/2k3 (Added).
 Drive 4, Partition 1: No Windows installation found.
 Drive 4, Partition 2: No Windows installation found.
 Drive 4, Partition 3: No Windows installation found.
 Drive 4, Partition 4: No Windows installation found.
 Drive 4, Partition 5: No Windows installation found.
 Drive 4, Partition 6: No Windows installation found.
Failed to create file to \ArcName\multi(0)disk(0)rdisk(0)partition(0)\Boot.ini. Error code: 0xc000003a.
I think it's unlikely that Parallels would hide something that BootGrabber requires to identify the Valid Windows 2k/XP/2k3 partition. Does BootGrabber need to see a Vista partition? I can include the Vista partitions in Parallels Desktop if necessary.

The failure and error code message from BootGrabber goes away if I tell BootGrabber to create the Boot.ini on partition 4 instead of partition 0.

Anyway, EasyBCD gives the same "Valid NT Install Not Found!" error message with or without using Parallels Desktop.

Addendum:

I tried BootGrabber.exe on my other Windows XP partition in Parallels Desktop and got:
Code:
C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber.exe /bootcfg  \ArcName\multi(0)disk(0)rdisk(0)partition(0)

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

 Drive 0, Partition 2: Valid Windows 2k/XP/2k3 (Added).
Failed to create file to \ArcName\multi(0)disk(0)rdisk(0)partition(0)\Boot.ini. Error code: 0xc000003a.
This partition (on a disk with only 2 partitions instead of 4) also has the SystemPartition pointing at the wrong partition. But BootDir is correct (maybe because the other partition doesn't have a drive letter?).
 
Last edited:

mqudsi

Mostly Harmless
Staff member
#11
Joe, can you show me the /tlist output for the configurations where creation failed? I want to see if BG recognized any of your partitions as ArcPath 0
 
#12
Configuration of a Windows XP entry in EasyBCD fails for both my Windows XP partitions when they are booted by the Mac or Parallels Desktop.

From 1st Windows XP partition in Parallels Desktop:
Code:
C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /tlist

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

D0,4,4,0,320072933376
P1,,238,209735168,209735168,Yes,multi(0)disk(0)rdisk(0)partition(3)
P2,,7,85684600832,85684600832,Yes,multi(0)disk(0)rdisk(0)partition(3)
P3,,7,86114091008,86114091008,Yes,multi(0)disk(0)rdisk(0)partition(3)
P4,E:\,7,148064485376,93307625472,Yes,multi(0)disk(0)rdisk(0)partition(4)
P4 should be C:. P2 and P3 are E and D but are RAW devices because Parallels presents them as zeroed out partitions.


From 1st Windows XP partition in Parallels Desktop with other 2 partitions visible to the virtual machine:
Code:
C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /tlist

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

D0,4,4,0,320072933376
P1,,238,209735168,209735168,Yes,multi(0)disk(0)rdisk(0)partition(1)
P2,E:\,7,85684600832,46593257472,Yes,multi(0)disk(0)rdisk(0)partition(2)
P3,D:\,7,86114091008,60157886464,Yes,multi(0)disk(0)rdisk(0)partition(3)
P4,C:\,7,148064485376,93299892224,Yes,multi(0)disk(0)rdisk(0)partition(4)
The drive letters are correct here. It seems that BootGrabber gets confused by RAW partitions with drive letters?

From 2nd Windows XP partition in Parallels Desktop:

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

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

D0,2,2,0,1000204886016
P1,,238,16896,16896,Yes,multi(0)disk(0)rdisk(0)partition(1)
P2,C:\,7,805096649216,228471943168,Yes,multi(0)disk(0)rdisk(0)partition(2)
The above looks ok.

From booting Mac to 1st Windows XP partition:
Code:
C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /tlist

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

D0,3,3,0,320072933376
P1,,238,209735168,209735168,Yes,multi(0)disk(0)rdisk(3)partition(1)
P2,O:\,7,64424509440,23910400000,Yes,multi(0)disk(0)rdisk(3)partition(2)
P3,C:\Volumes\SnowLeopard\,7,255170232320,215950512128,Yes,multi(0)disk(0)rdisk(3)partition(3)
D1,4,4,0,250059350016
P1,,238,223000808960,223000808960,Yes,multi(0)disk(0)rdisk(3)partition(1)
P2,I:\,12,1073741824,853741568,Yes,multi(0)disk(0)rdisk(2)partition(2)
P3,L:\,12,524288000,523108352,Yes,multi(0)disk(0)rdisk(2)partition(3)
P4,K:\,1,2097152,643072,Yes,multi(0)disk(0)rdisk(2)partition(4)
D2,2,2,0,1000204886016
P1,,238,139930390016,139930390016,Yes,multi(0)disk(0)rdisk(3)partition(1)
P2,P:\,7,21340618752,18230362112,Yes,multi(0)disk(0)rdisk(1)partition(2)
D3,4,4,0,320072933376
P1,,238,209735168,209735168,Yes,multi(0)disk(0)rdisk(3)partition(1)
P2,E:\,7,85684600832,46593257472,Yes,multi(0)disk(0)rdisk(0)partition(2)
P3,D:\,7,86114091008,60157886464,Yes,multi(0)disk(0)rdisk(0)partition(3)
P4,C:\,7,148064485376,93301649408,Yes,multi(0)disk(0)rdisk(0)partition(4)
D4,6,0,6,200049647616
P1,C:\Volumes\Work\,7,53687091200,2822565888,No,
P2,C:\Volumes\Devs\,7,42949672960,2387161088,No,
P3,C:\Volumes\Apps\,7,32212254720,10110844928,No,
P4,C:\Volumes\Updates\,7,42949672960,2742603776,No,
P5,T:\,7,8589934592,962826240,No,
P6,U:\,7,7516192768,859099136,No,
The above also looks ok. You don't see the 2nd Windows XP partition here because it is connected to an AHCI-only SATA port and I booted with AHCI disabled.
 

mqudsi

Mostly Harmless
Staff member
#13
OK, time for another experiment :smile:
 

mqudsi

Mostly Harmless
Staff member
#14
Hi Joe,

Can you try this build? Please check out both the "automatic" and manually-selected drive letter modes.

Note that the command line arguments for bootgrabber have changed.
 

Attachments

#15
EasyBCD 2.0.2 build 144 is now putting the boot.ini, ebcd.###, and NTDETECT.COM files on the correct partition except in the case where all the other partitions are unformatted and have drive letters.

From 2nd Windows XP in Parallels Desktop:
Code:
C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /tlist

D0,2,2,0,1000204886016
P1,,238,16896,16896,Yes,multi(0)disk(0)rdisk(0)partition(1),No
P2,C:\,7,805096649216,237909692416,Yes,multi(0)disk(0)rdisk(0)partition(2),Yes

C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /bootcfg \ArcName\multi(0)disk(0)rdisk(0)partition(0)

Located active partition on drive 0: \ArcName\multi(0)disk(0)rdisk(0)partition(2) Drive 0, Partition 2: Valid Windows 2k/XP/2k3 (Added).
Looks good.

From 1st Windows XP in Parallels Desktop with other partitions visible:
Code:
C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /tlist

D0,4,4,0,320072933376
P1,,238,209735168,209735168,Yes,multi(0)disk(0)rdisk(0)partition(1),No
P2,E:\,7,85684600832,46593261568,Yes,multi(0)disk(0)rdisk(0)partition(2),No
P3,D:\,7,86114091008,60157890560,Yes,multi(0)disk(0)rdisk(0)partition(3),No
P4,C:\,7,148064485376,93425041408,Yes,multi(0)disk(0)rdisk(0)partition(4),Yes

C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /bootcfg \ArcName\multi(0)disk(0)rdisk(0)partition(0)

 Drive 0, Partition 2: Windows Vista+ (Ignored).
 Drive 0, Partition 3: Windows Vista+ (Ignored).
Located active partition on drive 0: \ArcName\multi(0)disk(0)rdisk(0)partition(4) Drive 0, Partition 4: Valid Windows 2k/XP/2k3 (Added).
Also good.

From 1st Windows XP in Parallels Desktop with other partitions not-visible (zeroed):
Code:
C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /tlist

D0,4,4,0,320072933376
P1,,238,209735168,209735168,Yes,multi(0)disk(0)rdisk(0)partition(3),No
P2,,7,85684600832,85684600832,Yes,multi(0)disk(0)rdisk(0)partition(3),No
P3,,7,86114091008,86114091008,Yes,multi(0)disk(0)rdisk(0)partition(3),No
P4,E:\,7,148064485376,93424168960,Yes,multi(0)disk(0)rdisk(0)partition(4),Yes

C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /bootcfg \ArcName\multi(0)disk(0)rdisk(0)partition(0)

Located active partition on drive 0: \ArcName\multi(0)disk(0)rdisk(0)partition(4) Drive 0, Partition 4: No Windows installation found.
No valid entries found, quitting.
Not good. BootGrabber still gets confused by unformatted partitions. P2, P3, and P4 are supposed to be E, D, and C. Because of this (probably), EasyBCD won't add a Windows XP entry to the BCD. It gives the "Valid NT Install Not Found!" error.

I tried hiding just the 3rd partition:
Code:
C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /tlist

D0,4,4,0,320072933376
P1,,238,209735168,209735168,Yes,multi(0)disk(0)rdisk(0)partition(3),No
P2,E:\,7,85684600832,46593261568,Yes,multi(0)disk(0)rdisk(0)partition(2),No
P3,,7,86114091008,86114091008,Yes,multi(0)disk(0)rdisk(0)partition(3),No
P4,C:\,7,148064485376,93383880704,Yes,multi(0)disk(0)rdisk(0)partition(4),Yes

C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /bootcfg \ArcName\multi(0)disk(0)rdisk(0)partition(0)

 Drive 0, Partition 2: Windows Vista+ (Ignored).
Located active partition on drive 0: \ArcName\multi(0)disk(0)rdisk(0)partition(4) Drive 0, Partition 4: Valid Windows 2k/XP/2k3 (Added).
That worked and I can add Windows XP entries.

Then I tried hiding the 2nd partition:
Code:
C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /tlist

D0,4,4,0,320072933376
P1,,238,209735168,209735168,Yes,multi(0)disk(0)rdisk(0)partition(2),No
P2,,7,85684600832,85684600832,Yes,multi(0)disk(0)rdisk(0)partition(2),No
P3,D:\,7,86114091008,60157890560,Yes,multi(0)disk(0)rdisk(0)partition(3),No
P4,C:\,7,148064485376,93424676864,Yes,multi(0)disk(0)rdisk(0)partition(4),Yes

C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber.exe /bootcfg \ArcName\multi(0)disk(0)rdisk(0)partition(0)

 Drive 0, Partition 3: Windows Vista+ (Ignored).
Located active partition on drive 0: \ArcName\multi(0)disk(0)rdisk(0)partition(4) Drive 0, Partition 4: Valid Windows 2k/XP/2k3 (Added).
That also works. So it looks like BootGrabber gets confused only when I hide both other partitions. I can try reproducing this without using Parallels Desktop if you don't think it's a real issue.
 

mqudsi

Mostly Harmless
Staff member
#16
I'm not sure I get it.

BootGrabber by design will not detect XPs on an unmounted partition - I can fix *that* though it will be more work. But that's not the problem you're having.

As far as I can tell, your issue is that if there's only one drive on the entire system and it's only XP it will fail?
 
#17
On all the tests in my previous post, there was only one disk in the system. The 2nd Windows XP is on a different disk than the 1st Windows XP.

The disk containing the 2nd Windows XP contains only 2 partitions. Only one of them is NTFS and only that one has a drive letter. There are no problems when using this disk and build 114.

The disk containing the 1st Windows XP contains 4 partition:
Code:
1 EE 
2 07 E NTFS Vista 32
3 07 D NTFS Vista 64
4 07 C NTFS XP
When both partition 2 and partition 3 are RAW (unformatted) instead of NTFS then BootGrabber thinks partition 4 is drive letter E. Every other program knows that the drive letter for partition 4 is C.
 

mqudsi

Mostly Harmless
Staff member
#18
That's weird. I get the drive letters from MS. Only case it would come out wrong is if they have the same volume id - is that the case?
 
#19
Here are the 4 bytes of the 8 byte NTFS serial number:
Code:
C:\Program Files\NeoSmart Technologies\EasyBCD\bin>dir /w c:
 Volume in drive C is Windows XP
 Volume Serial Number is D860-C50E

C:\Program Files\NeoSmart Technologies\EasyBCD\bin>dir /w d:
 Volume in drive D is Windows Vista 32
 Volume Serial Number is 96BC-7544

C:\Program Files\NeoSmart Technologies\EasyBCD\bin>dir /w e:
 Volume in drive E is Windows Vista 64
 Volume Serial Number is B4BC-2F5D
Here is the info when the Vista partitions are not formatted:
Code:
C:\Program Files\NeoSmart Technologies\EasyBCD\bin>bootgrabber /tlist
D0,4,4,0,320072933376
P1,,238,209735168,209735168,Yes,multi(0)disk(0)rdisk(0)partition(3),No
P2,,7,85684600832,85684600832,Yes,multi(0)disk(0)rdisk(0)partition(3),No
P3,,7,86114091008,86114091008,Yes,multi(0)disk(0)rdisk(0)partition(3),No
P4,E:\,7,148064485376,93380640768,Yes,multi(0)disk(0)rdisk(0)partition(4),Yes

C:\Program Files\NeoSmart Technologies\EasyBCD\bin>dir /w C:
 Volume in drive C is Windows XP
 Volume Serial Number is D860-C50E

C:\Program Files\NeoSmart Technologies\EasyBCD\bin>dir /w D:
The volume does not contain a recognized file system.
Please make sure that all required file system drivers are loaded and that the volume is not corrupted.

C:\Program Files\NeoSmart Technologies\EasyBCD\bin>dir /w E:
The volume does not contain a recognized file system.
Please make sure that all required file system drivers are loaded and that the volume is not corrupted.
The serial number for C: doesn't change. Can unformatted drives have a serial number? I don't think so. Do you read the serial number from disk blocks or an API?
 

mqudsi

Mostly Harmless
Staff member
#20
Wait a minute - how does an unformatted drive have a drive letter? How can I reproduce this?