Write MBR - unclear where it writes

#1
In EasyBCD 2.2, under BCD Deployment, there are two separate sections. The top section asks to select a partition.

The bottom section is labeled "MBR Configuration Options" and has the choices (Windows Vista/7, Windows XP). The red button is labeled "Write MBR".

I have read page http://neosmart.net/wiki/display/EBCD/Updating+the+MBR+and+Bootsector but it is still not clear exactly what MBR the red button writes. Does it write the MBR in disk 0 (the brown part of the diagram on that page), or does it write the chosen bootloader type to the bootsector of the active partition (the "active partition" step)? Or both?

Since I have three hard drives in my system, and two different active partitions, it's still not clear:

1. If it's writing to "the" active partition, does the red button write to all active partitions found on all internal drives?
2. To the first active partition it finds?
3. To the partition that the current system BCD is on?
4. To the partition that the most recently loaded BCD store is on (if you loaded a BCD store other than the default)?
5. To the partition that is listed in the top half of the same dialog box? (This choice would be odd, since the way the sections are grouped, the two sections on this dialog box look unrelated to each other. So that doesn't make sense.)

When you click the red button, it says "MBR Written Successfully" but it still doesn't tell you on which (or all) of your active partitions the MBR was written to. It's confusing.
 

Mak 2.0

Mod...WAFFLES!?!?
Staff member
#2
It writes to the MBR on disk 0. That is what it says right in the documentation. If you read it carefully you will see that it says that the BIOS goes to the MBR on disk 0, so in turn EasyBCD will write the MBR to that space so that the BIOS will then be able to start the MBR and boot the system.

The "active" flag is only used by Windows. It is not seen or used by Linux partitions. So that flag is only recognized by Windows. Even so if you look at the disk management within Windows, you will see that there is 1 drive that specifically says "boot" and has that flag as well as "active". At least it should have both flags on there. So even within Windows, there can be multiple "active" partitions but only one that will have the "boot" flag. That will be there EasyBCD writes to and the MBR that is used by the BIOS to boot the system.

So that should answer questions 1 and 2.

3. It doesn't go to that partition cause EasyBCD can be installed to multiple partitions and operated within them. It will recognize the one that is marked boot and write it there.
4. Pretty much answered above.
5. Same as above.
 
#3
Thank you, that is clearer. The red "Write MBR" button writes the BIOS MBR from step 2 of the linked documentation page to whatever disk is currently listed as Disk 0.

If my CURRENT disk 0 is a disk that I plan to permanently disconnect from my computer, is there any way to get EasyBCD to write the BIOS MBR to a different drive?

I'm not even booting my computer from the disk that is labeled Disk 0 in Disk Management. Disk 1 is connected to internal Sata 1, and disk 0 is connected to internal Sata 2 (there is no Sata 0 and there are no IDE drives). The disk connected to Sata 1 is listed first in the BIOS boot order.

Clipboard01.jpg


From this I would presume that Write MBR would write to disk 0, which is not where my computer boots from.

Can Easy BCD write the code to the bootsector of the active partition (converting a disk into a bootable drive) without also overwriting any existing BCD file that might have been there?

If I move disks around and copy the BCD files from "system reserved" partition to another, I might not want the BCD that is in the target disk to get overwritten.

Thanks.

EasyBCD is great, but... when you add a new entry using EasyBCD, the "Drive" setting uses drive letters, or "Boot" to indicate the same partition that the BCD is in.

When you are moving disks around, or creating a backup or test boot partition, or adding new drives, or disconnecting old drives, the drive letters become unpredictable.

Even if you are not adding or removing any drives: The drive letters you see when you run EasyBCD are often not the same drive letters that Windows sees after you finish with EasyBCD, shut down, and change the boot order in the BIOS to boot from the active partition on a different drive. (By the way, "Disk 0" in Windows' Disk Management is not the first drive in the BIOS boot order that has an active partition. My "system" AND my "boot" partitions are both on the disk that's labeled Disk 1 in Disk Management. The disk that it labels Disk 0 is on a higher-numbered SATA connector.)

Often the new BCD is found, and the correct entries are listed, but windows can't find the \windows\system32\winload.exe file... probably because it can't find the drive letter that I wrote to the BCD.

Are there any tips on how to get past this problem? Even if EasyBCD were to support the Device\HarddiskVolume# syntax in the BCD, that might not help, if you tell the BIOS to boot from a different drive.

We need to be able to specify **disk drive serial numbers** and partition offsets, rather than drive letters, but as far as I can tell we can't do this.

Setting up dual-booting (using one BCD to boot any one of a set of operating systems) might be easier to understand than how to set up a new BCD that will survive a change of disk boot order!

Thanks for any info that would help.
 

Attachments

Last edited by a moderator:

Terry60

Knows where his towel is.
Staff member
#4
It will write to the MBR. i.e the MBR of the disk from which you are booting.
What Disk Management says is Disk 0/1/2/etc doesn't seem to be set in stone. Disk 0 used to be the boot disk in the days of IDE and master/slave jumpers, but a mixed SATA/IDE started confusing Disk Management in Vista (always putting IDE first), and the "fix" in W7 seemed just to be to put IDE last.
What the current situation is, is hard to say. It doesn't seem to follow any discernible logic .
Don't treat anything Disk Management says as gospel. It certainly gets confused by logical drives formatted with Linux File Systems and thinks they're primaries. Even the order of partitions on the disk doesn't necessarily conform to real life. Partitions are numbered according to their position in the MBR partition table, not their position on the disk. With a freshly formatted HDD that will be the same thing, but after a number of shrink/delete/allocate/format cycles, not necessarily.

(your OP - remember the MBR is not part of any partition. It's an entirely separate area at the start of the disk which defines where the partitions are, which of the primaries is active and contains a tiny piece of bootstrap code which loads the next link in the chain from that active pointer)

Please don't open multiple threads for what is essentially the same query.

Drive letters do not become unpredictable.
There are no disk letters in the BCD, just UIDs.
Because they are unreadable, unmemorable and highly prone to mistranscription, EasyBCD translates them for you into the letters as seen from the system you are currently running it on. That means, that if you look at a BCD from the different systems in a multi-boot, the letters will appear to change.
Nothing has changed.
The same is also true of Windows Explorer, the letters of your partitions will change from system to system. EasyBCD is merely reflecting that.
This stems from the fact that disk letters are not real. They are just registry entries in the running OS, and hence are not related in any way from one system to another.

You must also adopt the same policy.
When you specify a letter in EasyBCD, it's the letter that the current OS sees, not the letter it will be when it's booted.

You don't need to go round writing MBRs all over the place. When you format a drive as MBR in Vista/7/8 it will be bootable whether or not you put an OS on it.
The boot won't get very far without an OS, but the BIOS will find the MBR, locate the active partition and attempt to find bootmgr. If you put Vista/7/8 boot files there, they will boot without you needing to use the BCD deployment page.

Install bootloader > write MBR is for the specific case of restoring the Vista/7/8 boot if XP/Linux has replaced it. Don't use it at any other time.

The top half of that page is for creating bootable external media, e.g. flash drives and has nothing to do with the bottom half of the page.
 
Last edited:
#5
"It will write to *the* MBR. i.e the MBR of the disk from which you are booting."

Yes, and the disk from which I am booting NOW might be a disk that I am about to remove from my computer. That is, onve I get an MBR written to a disk which is not currently disk 0! (And yes, I know that the MBR is not part of any partition.)

Even if I have set up what's now disk 1 to have an active partition and all of the BCD files, if I can't get an MBR written to that disk (it will become disk 0 when I remove what's currently disk 0) then I can't boot my system. THAT is one problem that I think EasyBCD could do better (although I know there are bootable CDs that have various tools that can write an MBR to whatever becomes disk 0).

Thanks for that info on the drive letters vs. UIDs. "IWhen you specify a letter in EasyBCD, it's the letter that the current OS sees, not the letter it will be when it's booted."
I wish that was clearer in the EasyBCD doc.

I set up a BCD that pointed to (what was currently) drive L, but when I removed my old 40 GB Intel SSD, that disk got a different drive letter. If the BCD contained a UID that should have still pointed to what was previously drive L, it didn't work (the boot loader let me pick a system to boot, and then I got the "can't find the \windows\system32\winload.exe" error). I was able to repair the problem with a windows 7 recovery disc. It told me that the partition was "unknown"; when I let it do its thing, my system booted to the desired partition (which had been drive L in the old system).

I'll have to investigate some more. Thanks for the detailed reply; I am still studying it.
 

mqudsi

Mostly Harmless
Staff member
#6
If you're editing the system BCD, it'll write to the MBR of the disk that you're boot from. If you're editing a manually-selected BCD, EasyBCD will write to the MBR of the drive that BCD is on. Basically, it does "the right thing."