Change Vista's 'System' partition / move BCD boot manager?

hnyman

Member
I have Vista32 in my PC, and after some new hardware related crashes I decided yesterday to completely restore Vista partition from backup with Acronis. However, in the middle of the restore from USB HDD, the backup complained about faulty archive and I ended up with no working C: partition. I reinstalled Vista from DVD and also all the programs.

The loss of the Vista OS partition was not that hard, as all my personal data is on D: and E: on the same drive.

However, as the reinstall started from a situation, where there was empty space instead of C:, I realized only after the install that Vista had set the BCD boot files to D: (the first existing partition at installation start), while the operating system is quite correctly installed to the recreated C:.
Code:
C:\Users\hannu>bcdedit /v

Windows Boot Manager
--------------------
identifier              {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device                  partition=D:
description             Windows Boot Manager
locale                  en-US
inherit                 {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
default                 {d7909ee9-7166-11dd-9349-98516989298b}
displayorder            {d7909ee9-7166-11dd-9349-98516989298b}
toolsdisplayorder       {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout                 30

Windows Boot Loader
-------------------
identifier              {d7909ee9-7166-11dd-9349-98516989298b}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Microsoft Windows Vista
locale                  en-US
inherit                 {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
osdevice                partition=C:
systemroot              \Windows
resumeobject            {d7909eea-7166-11dd-9349-98516989298b}
nx                      OptIn
The PC works just fine, but I do not like mixing the pure "data partition" D: with the boot sequence. I also realized with the reinstall to destroyed C: that having the BCD data on the OS partition may be problematic at some times. Although everything works now just fine, I would like to transfer the BCD data either to C: or, maybe even better, to a small 2 GB partition S: created for that purpose.

Thus, currently the status is:
Code:
C: Boot, Page file, etc. (contains actual Vista OS)
D: System, Active   (contains the BCD boot manager files) and my data
E: data
S: empty  (2 GB)
All partitions are primary partitions, and formatted with NTFS.
I have looked for advice transferring the BCD data to another partition, but have not found very good advice. Based on documentation, I think that EasyBCD does not allow restoring to another drive creating a new BCD storage.
Best discussion/advice I found has been:

Change/delete system partition after BitLocker removal - Vista Forums
Defines the requirements for a 'System' partition. It sounds like I need :copy the correct BCD files to S: and mark that S: partition active. Would that be enough?

Moving Vista Boot Manager (BCD) - Guides and Tutorials - TechEnclave
Sounds working, but requires boot with Vista DVD. Or does it actually?

Recovering the Vista Bootloader from the DVD - NeoSmart Technologies Wiki
Step Four 'Nuclear holocaust' might work. Creating a new store on S:, and then copying the files there, and then marking the partition active. BCDEDIT export, createstore, sysstore and import ? (I fear that the 'sysstore' command might not work as documentation says it is only EFI systems specific...)

Would it work so simply that I would backup BCD with EasyBCD (or VistaBootPro) or manually copy the files, and then manually restore all files to the S: drive, and then mark that as 'Active'? Would that work? Or is there some "system store" setting somewhere?

--------
EDIT: or might this actually work by using the official commands?

Tech Support Guy Forums - View Single Post - Solved: Installed Vista. Now system will not boot without install disk in drive.
referred article said:
In my case, both the Windows Memory Diagnostic and the Windows Boot Manager
were configured for D:, so I want to change those.

Boot Manager is always reffered to as {9dea862c-5cdd-4e70-acc1-f32b344d4795} and so on, so we use the following commands to make things right.

C:\Windows\system32>bcdedit /set {9dea862c-5cdd-4e70-acc1-f32b344d4795} device partition=c:
C:\Windows\system32>bcdedit /set {b2721d73-1db4-4c62-bf78-c548a880142d} device partition=c:
Based on this article, it sounds like it is possible to set one attribute by time (memory tester, etc.) to a certain disk volume (S: in my case), provided of course that the needed files are there.
So, if
1) the other files (bootmgr, bootsect.bak and boot-directory’s files) are copied to S: (already done)
2) current BCD system store is exported to S:
3) then the function pointers in that new store file (boot manager, memory tester, legady OS loader) are one by one set by using BCDEDIT to point to the newly copied files on volume S: instead of D:
4) Vista Boot sector is copied to S: using Vista DVD media and 'BOOTSECT /NT60 S: /FORCE' from that DVD while still in normal Vista. (This part should be done from command prompt of booted Vista DVD if the target disk has the operating system (C: for me) or is otherwise used by Vista. Instead 'S:' also 'ALL' can be used to force the boot sector to be copied to all partitions.)
5) Active bit in partition table is changed to S: before rebooting by using DISKPART or Disk Management console
Might even work… or how?

Addendum:

Based on the previous thoughts, I thought out the needed commands. Would this work?
Code:
bcdedit /export S:\Boot\BCD
bcdedit /store S:\Boot\BCD /set {9dea862c-5cdd-4e70-acc1-f32b344d4795} device partition=S:
bcdedit /store S:\Boot\BCD /set {b2721d73-1db4-4c62-bf78-c548a880142d} device partition=S:
bcdedit /store S:\Boot\BCD /set {466f5a88-0af2-4f76-9038-095b170dc21c} device partition=S:
bcdedit /store S:\Boot\BCD /enum all /v

VistaDVD:\BOOT\BOOTSECT /NT60 S: /FORCE

DISKPART
  select disk 0
  select partition 4
  active
First the system store is exported to S:,
then the references in that store file to partition D: are replaced by references to S:,
then the contents are printed out just for verification, just in case
then the boot sector was copied from DVD to S:
and finally DISKPART is used to mark the S: as active.

Addendum:

IT WORKED!!!

Now I have S: as Active & System, and D: is just a normal data partition.

So, this is a way to transfer Vista’s BCD boot manager data to another partition, using only Microsoft own tools and remaining inside the normally running Vista. The Vista DVD media is needed at just one point for running the BOOTSECT command from the media.
 
Last edited:
Thank you, thank you, thank you.

Your technique worked flawlessly for me, and solved a huge headache. MS support refused to acknowledge that you can do what you have done!

I am extremely grateful for your hard work and thoughtful approach.

:happy:
 
I've done what is indicated but it seems I have 2 different BCD files. One is showing the changes have been made on my "S:" drive. The other one, which seems to be the controlling one based on the file in EasyBCD, still shows the "D:" designation for boot manager.

Can you make any suggestions on where I went wrong?
 
it seems I have 2 different BCD files. One is showing the changes have been made on my "S:" drive. The other one, which seems to be the controlling one based on the file in EasyBCD, still shows the "D:" designation for boot manager.
After running the BCDEDIT commands, you will have two copies of the BCD registry. The original on D: and the new modified on S:
The "Active bit" in partition table then determines, which partition Vista thinks active and uses as System.

For me, after marking S: as Active using DISKPART, and after rebooting, Vista quite properly recognised The Active S: also as System. I think you could also mark the S: active in Disk management (see the image), but I did that by using DISKPART command-line command. (Naturally the DISKPART subcommand parameters (disk number, partition number) will depend on your disk structure.)

What does Vista's disk manager show to you as Active and System?
2qui59j.png


(I have not used EasyBCD, so I can't comment on output from that.)
 
Disk Manager is showing both drives as Active, but only the one I don't want as the System.
is there a way to change the "D:" drive to non-Active?
 

Attachments

  • diskmgr.jpg
    diskmgr.jpg
    273.2 KB · Views: 14
btw. I have setup a dual-boot structure on my "D:" and "S:" drives, where I want the "S:" drive to have the Boot Manager. As such, I already have the installed bootmgr and boot directory files on the "S:" drive, so I didn't copy these over from the "D:" drive. Since they are different OS's I didn't want to overwrite the Boot files of one OS to another. Will this matter? Ultimately, I want to get the OS on "S:" drive to be the only OS and remove the one on the "D:" drive.
 
Disk Manager is showing both drives as Active, but only the one I don't want as the System.
is there a way to change the "D:" drive to non-Active?
I would guess that your troubles come out of the fact that you are designing a multi-drive configuration. (I do not remember how the rules go in Vista, which drives can be bootdisks.)

EDIT: It might be that you should change the HDD boot order in BIOS, so that the wanted drive would boot first.
 
Last edited:
Hi all,

Just to introduce myself, I have a homebuilt machine running Vista Home Premium and I'm pretty happy with it in the main. A few months ago I needed to replace the main drive since it wouldn't boot every time (it was first gen SATA) and I brutally munged my Vista transfer to the new drive. Upshot being I have two drives on my machine: NewSys on C: and OldSys on D:. OldSys is the original Vista boot drive and NewSys is the new installation. Here's the prob, OldSys is still recognised by Disk Manager as the System drive, even though nothing has visibly changed on it since when I changed drives over and nothign I can do can shift it. hnyman, your post seems to indicate that changing the identifier with bcdedit will trick Vista into using your S: drive as the system drive and I just want to check I can do the steps you propose to reassign the system drive back to C: (NewSys). As far as I can tell, both C: and D: have working Vista installs when I boot from the Vista DVD and choose repair, but I cannot simply unplug the D: drive to boot from C: because the machine tells me to insert a system disk. I've been around the web trying to find a solution and have had many late nights. In short, will I be able to do what you did (I can run bcdedit /v to get the identifiers and post them here if it would help?), but just to restore C: to being System drive?

B
 
Hi BV, welcome to NST.
If you have a read of the multiboot site linked from point 1 of the sticky, you'll see that when you add a new Vista to a system with a pre-existing BCD, the new system doesn't create any boot files; it simply adds itself as an entry in the old BCD.
If you'd created the new system with the old one out of sight, you'd have got a new independent Vista.
Don't despair, you can still fix it quite easily.
When you boot the Vista DVD and select your new system to repair, it won't do anything because nothing is wrong. It's supposed to have its boot files on the Oldsys.
However, if you disconnect oldsys, then
(Boot the Vista DVD / "repair your computer" / "startup repair" ) x 3
when it can only see newsys, it will detect the lack of a BCD store and bootmgr on the only visible Vista and fix them (note the x3. It only fixes one error per pass, you'll have several things to repair).
Then make sure that newsys is 1st in the BIOS boot sequence and reboot with both disks attached and you should see that the new Vista has become "system".
If you still want to dual-boot the old Vista, you can use EasyBCD to add another Vista entry to your new BCD. If you just want to retrieve personal data, you can do that without needing to boot the old system.
If you've completely finished with it, just do a full format of oldsys and it will remove any bad-blocks from use which might have originally caused you grief, and leave you with a spare empty disk which you can use for backup or to try test installations of W7 or Linux.
 
when I boot from the Vista DVD and choose repair, but I cannot simply unplug the D: drive to boot from C: because the machine tells me to insert a system disk. I've been around the web trying to find a solution and have had many late nights. In short, will I be able to do what you did (I can run bcdedit /v to get the identifiers and post them here if it would help?), but just to restore C: to being System drive?
Like you already were told, temporarily disconnecting old-drive and repairing Vista startup 3 times, might be an easier solution for you. (For me that was not possible as all disks were on the same physical drive.)

You could also follow my advice, replacing references to S: with C:, copying other non-locked files, running the BCDEDIT commands, making sure that C: has active flag in partition table, and of course checking that the drive boot order in BIOS is ok.

(I think that the GUID identifiers used in commands there are the same for all of us. They are just Microsoft's "function identifiers" or something like that.)
 
Hi Terry, hi hnyman and thank you,

I think the problem is more deep-seated than it at first appears, or I am not explaining it fully enough (more than likely the case). I try the startup repair and get the following window with a message saying that startup repair could find nothing wrong. The previous screen *does* indicate the NewSys partition (having unplugged the OldSys drive).

I would paste the logfile here if I could get edit.com to work or had some other way of pasting the clipboard to a text file, but my DOS skills are somewhat rusty - writing .bat files is a skill I've long left behind...

B
 

Attachments

  • Clipboard Image-50%.jpg
    Clipboard Image-50%.jpg
    160.5 KB · Views: 10
You can always open up the logfile, hit Ctrl + A on your keyboard to Select All, click inside the new post area on these forums, and then hit Ctrl + V to paste the content into your new post...:wink:
 
Absolutely, if I had another machine I could always copy it out by hand! :smile: I don't know where the logfile pertaining to Vista DVD boot system repair is located. It seems like it may even be written to X: ie the ram drive the Vista DVD creates when booting, which would presumably mean it is lost by the time I boot up?

B
 
Hi hnyman,

Would this be right then, for your method?

Code:
bcdedit /export C:\Boot\BCD
bcdedit /store C:\Boot\BCD /set {9dea862c-5cdd-4e70-acc1-f32b344d4795} device partition=C:
bcdedit /store C:\Boot\BCD /set {b2721d73-1db4-4c62-bf78-c548a880142d} device partition=C:
bcdedit /store C:\Boot\BCD /set {466f5a88-0af2-4f76-9038-095b170dc21c} device partition=C:
bcdedit /store C:\Boot\BCD /enum all /v

VistaDVD:\BOOT\BOOTSECT /NT60 C: /FORCE
My identifiers are different to yours however. Here's my BCDedit enum:

Code:
Windows Boot Manager
--------------------
identifier              {9dea862c-5cdd-4e70-acc1-f32b344d4795}
device                  partition=D:
description             Windows Boot Manager
locale                  en-US
inherit                 {7ea2e1ac-2e61-4728-aaa3-896d9d0a9f0e}
default                 {aff4e058-b993-11dd-9ad7-eaedafc4f473}
displayorder            {aff4e058-b993-11dd-9ad7-eaedafc4f473}
                        {58cd2291-502e-11de-879b-bff9cad84f8c}
toolsdisplayorder       {b2721d73-1db4-4c62-bf78-c548a880142d}
timeout                 3
resume                  No

Windows Boot Loader
-------------------
identifier              {aff4e058-b993-11dd-9ad7-eaedafc4f473}
device                  partition=C:
path                    \Windows\system32\winload.exe
description             Windows Vista (TM) Home Premium (NewSys)
locale                  en-US
inherit                 {6efb52bf-1766-41db-a6b3-0ee5eff72bd7}
osdevice                partition=C:
systemroot              \Windows
resumeobject            {aff4e059-b993-11dd-9ad7-eaedafc4f473}
nx                      OptIn

Windows Boot Loader
-------------------
identifier              {58cd2291-502e-11de-879b-bff9cad84f8c}
device                  partition=D:
path                    \Windows\system32\winload.exe
description             Windows Vista (TM) Home Premium (OldSys)
osdevice                partition=D:
systemroot              \Windows

Thanks all in advance!

B

Addendum:

Have you disconnected the Oldsys's drive before running Startup Repair?

Yes indeedy.

B
 
Last edited:
I suggest that you open up Folder Options in the Control Panel, make sure your options are like the attached screenshot, and then open up NewSys's partition, to check its contents. I imagine you may get a surprise, and find a file called BOOTMGR exists in the root, along with a folder called "boot", and that inside that folder, there is a file called BCD...:wink:
 

Attachments

  • Folder Options.JPG
    Folder Options.JPG
    48.3 KB · Views: 9
Yup, there's a BCD and also BCD.log, but neither have the info presented in the Startup Repair log when booting into the Vista DVD :frowning: (hence needing to find a way of running a command line text editor to paste the clipboard text into, or if I could pipe a copy operation from the clipboard?) Bootmgr also exists in the root, but the fact remains that OldSys is still necessary to boot.

B
 
Last edited:
Yup, there's a BCD and also BCD.log, but neither have the info presented in the Startup Repair log when booting into the Vista DVD :frowning: Bootmgr also exists in the root, but the fact remains that OldSys is still necessary to boot.

B
Not for much longer...
Now reboot, enter your BIOS by pressing the key it tells you to press at the first splash screen you get to at startup (for example, the Dell page). Now, navigate to the section called "Boot Sequence", "Boot Order", or something similar. Adjust the order of the device entries shown in there, so that the NewSys drive comes first in the boot sequence. Save the changes, and exit the BIOS.
You will now be booting from the NewSys's disk.
 
NewSys does come first in the boot sequence, and surely if had OldSys unhooked it would only find that drive and boot from it anyway, no?

B
 
NewSys does come first in the boot sequence, and surely if had OldSys unhooked it would only find that drive and boot from it anyway, no?

B
Yes, and it also should be booting from NewSys while the OldSys drive is still connected. What makes you think it is not?
You can remove the OldSys drive without losing the ability to boot into NewSys. Isn't that what you want?
 
Back
Top