bootmgr - Chainload Windows boot manager from another?

07
2014-07
  • Mehrdad

    Is it possible to use the Windows Boot Manager to chainload another Windows Boot Manager?

    For example, (how) can I use a boot manager on C:\bootmgr that reads C:\boot\BCD to chainload another boot manager D:\bootmgr that uses D:\boot\BCD?

  • Answers
  • Mayank Agarwal

    The question is not clear, however you may try the tool EasyBCD Download EasyBCD here! & VisualBCD Download VisualBCD here!

    These tools help you to edit and modify the bootloaders.

  • Mahmoud Al-Qudsi

    BOOTMGR will look for the hive \boot\bcd on the partition it believes to be the active boot partition (usually the active partition on disk 0). On EFI machines, the EFI version of bootmgr will load \boot\bcd from the ESP (EFI System Partition) which is always FAT32 and usually around 100 MiB or so.

    Your question is, however, very confusing. You state

    that reads C:\boot\BCD to chainload another boot manager D:\bootmgr that uses D:\boot\BCD

    But then say

    Huh? I'm trying to avoid having two BCD stores if possible

    In the example you give of what you're trying to achieve, aren't those two different BCD files on two different partitions?

    So I'm not sure exactly what you're trying to do. If you're trying to make the legacy BOOTMGR load the same BCD database that the EFI BOOTMGR uses, yes, that would be possible. You'll need to modify the emulation bootrecord on your disk (the fake MBR that's used to stop machines that don't understand GPT from reinitializing disks and losing data) to indicate the presence of at least two partitions, being the ESP and the Windows partition, with the ESP marked as active.

    That way, if a BIOS in legacy mode (or a BIOS that doesn't support UEFI) attempts to start your machine from a GPT disk with your modified emulation MBR, it'll see the ESP partition as a "regular" boot partition and load from it (via its bootsector, which you would need to make sure was correctly written with a tool like bootsect or bootrec) BOOTMGR which, in turn, would read the \boot\bcd on the self-same partition.

  • HopelessN00b

    You want:

    Boot C:, starting bootmgr with specially configured BCD in C:\Boot.
    One boot entry in this BCD should start another bootmgr on D:\ which loads the BCD on d:\Boot with different boot entries.

    Correct?


    To do that:

    Get an image of the boot sector of D:\

    1. Start Linux, dd if=/dev/sda2 of=bootsec_D.img bs=512 Count=1^
    2. mount /dev/sda2 /media/sda2
    3. cp bootsec_D.img /media/sda2
    4. umount /dev/sda2

    This bootsec_D.img can then be chainloaded with bootmgr the usual way.
    For example, with Visual_BCD adding a new bootsector loader. Configure Partition and path properly.


    Hope that helped.

    It worked on my Computer, hopefully at yours, too.

  • Pat

    You want the first bootmgr to load a secondary bootmgr instead of loading one of the typical OS boot-loaders

    "if it works" you should add the following entries to the first C:\boot\BCD

    bcdedit /create /d "Chainloaded Bootmgr" /application BOOTSECTOR
    bcdedit /set {ID} device partition=d:
    bcdedit /set {ID}  path \bootmgr
    bcdedit /displayorder {ID} /addlast
    

    this should create the menu entry "Chainloaded Bootmgr"; when triggered it should load the second bootmgr from D:


  • Related Question

    windows 7 - Remove XP from XP/W7 dual boot (move boot manager)
  • J F

    Given this BCDEDIT table:

    Windows Boot Manager
    --------------------
    identifier              {bootmgr}
    device                  partition=Y:
    description             Windows Boot Manager
    locale                  en-US
    inherit                 {globalsettings}
    default                 {current}
    resumeobject            {3e25c382-bae5-11de-a75b-e7fc07f62dc4}
    displayorder            {ntldr}
                            {current}
    toolsdisplayorder       {memdiag}
    timeout                 0
    
    Windows Legacy OS Loader
    ------------------------
    identifier              {ntldr}
    device                  partition=Y:
    path                    \ntldr
    description             Earlier Version of Windows
    
    Windows Boot Loader
    -------------------
    identifier              {current}
    device                  partition=C:
    path                    \Windows\system32\winload.exe
    description             Windows 7
    locale                  en-US
    inherit                 {bootloadersettings}
    recoverysequence        {3e25c384-bae5-11de-a75b-e7fc07f62dc4}
    recoveryenabled         Yes
    osdevice                partition=C:
    systemroot              \Windows
    resumeobject            {3e25c382-bae5-11de-a75b-e7fc07f62dc4}
    nx                      OptIn
    

    What should I do to remove the XP installation on Y: and completely remove that partition's dependency on booting, move the boot manager to C: and mark C: active (System) so I can boot from it?

    The "guides" I've found are a bit contradictory and some use bcdedit, some use bcdboot and some a manual thing with bootrec /fixmbr + bootrec /fixboot triage.


    I am going to answer this myself somewhat.

    I ended up doing this:

    • copied Y:\Boot\* to C:\Boot. Some files could not be copied. I expected this, and the next step should take care of it.

    • exported system store

    bcdedit /export C:\Boot\BCD
    • changed Windows Boot Manager location
    bcdedit /store C:\Boot\BCD /set {9dea862c-5cdd-4e70-acc1-f32b344d4795} device partition=C:
    • changed Windows Memory Tester location
    bcdedit /store C:\Boot\BCD /set {b2721d73-1db4-4c62-bf78-c548a880142d} device partition=C:
    • changed Windows Legacy OS Loader location
    bcdedit /store C:\Boot\BCD /set {466f5a88-0af2-4f76-9038-095b170dc21c} device partition=C:
    • updated master boot code
    Windows_7_DVD:\BOOT\BOOTSECT /NT60 C: /FORCE
    • changed the active partition
    DISKPART
      select disk 0
      select partition 1
      active
    

    However, it didn't work anyway. I had to do a repair because "BOOTMGR is missing". I believe I should have also copied bootmgr from Y: to C:, but I'm not sure if that was all I missed.

    I'm still curious if this is a really bass-ackwards way of doing this process, and I would very much want to know where I went wrong.

    Thanks for all the contributions.


  • Related Answers
  • Community

    If you install EasyBCD it gives you a nice user interface to editing the BCD.

    Get it here . It's free too.

  • WARICK

    the best thing to do is first to log into the account u want to remove then take the necesssary backup from that drive (My Doc, My Pic, My Fav, etc etc.)

    then restart and log into the other O.S. then select the drive in which the other O.S. to be removed is installed Right click and format

    then restart

    u will notice that the boot option still exists

    for that log into the existing o.s. go to RUN on the start menu else type "Windows + R"

    a small screen comes up now write "msconfig"

    there seleact the BOOT tab Make the current os as default and delete the other one.

    now if asked select not to show the warning again. Restart

    there u go the un wanted os has been safely removed..............

    Enjoy ............!!!!!!!!!!!! WARICK

  • NT.

    Right click on My Computer>Properties>Advanced>Startup & Recovery>First remove the row which includes XP,then format the disk which includes XP.It should be OK.