Windows – difference between the first 446 bytes of different windows MBRs

mbrwindows

After reading a lot about install algorithms for installing windows from linux, for installing linux in addition to windows, …. I'm wondering a bit.

From what I read for example for installing windows from linux most methods create a copy (or their own) MBR out of the first 446 bytes of a windows MBR and use that
then to set the first 446 bytes of the MBR on the computer where windows shall be installed (or to restore those 446 bytes in case something goes awry).

Now what intrigued me is that there is a linux program called ms-sys (on sourceforge thus open source) that can be used for win xp, win 7, …. To create such appropriate MBR backups.

And after reading something on the net that the first 446 bytes are a leftover from MSDOS (so to say) I'm wondering the following:

Does the MBR (the first 446 bytes only) for the different windows versions (XP, windows 7, windows 8, …) have any differences? Or can these 446 bytes of a windows XP be used for a windows 7 (or vice versa).

Best Answer

I would think they are probably different. Some checking does indicate that, yes, they are different.

I don't expect much difference in their behavior. The basic job of those 446 bytes is to identify another section of the disk that has additional code to be executed. That additional code is typically stored inside a partition. Some people like to use a "boot loader", like GAG or the ones installable with XFDisk or RPM (Ranish Partition Manager) where the 446 bytes do something slightly different, like provide an interactive interface so the user can choose to pass control to a different partition. Basically, this enables a "boot menu" so a person can easily choose to boot from a different operating system, enabling "multiboot" options (so a person can easily boot different operating systems).

That basic job likely hasn't changed much in quite a while. (However, precise details about how it performs the functionality has been changed.) If there have been any useful updates with newer operating systems, then I would imagine those updates to do something like supporting larger disk sizes. Chances are quite good that the boot code of all recent Windows releases (including XP) may support up to 2TB, the limit of the MBR format.

(I should note that this answer was intended to address systems relying on the "MBR" for basic partitioning info. Systems that use GPT may also have an MBR which needs to fulfill specific requirements specified by the GPT standard.)

Update

I have to conclude that different versions of Windows do have some differences in the first 446 bytes. The most compelling documentation I found so far is TechNet: Windows Vista details: Bootsect Command-Line Options which shows that the user can specify /nt52 or /nt60 switches to install different versions of boot code.

There might be more, too. It looks like MSDN: Advanced format (4K) disk compatibility update " was released for Windows 7 SP1 and Windows Server 2008 R2 SP1. This update contains much new info, some of which is applicable only to Windows 8 and Windows Server 2012." I haven't yet confirmed whether the first 446 bytes were also changed for these changes, but the possibility does seem strong since changes were made to permit the boot process to have different hardware compatibility.

If you want more details about what is in the 446 bytes, I did locate some documentation about some older versions. Win2K boot sector details is an older document, which is newer than MS KB 140418: boot sector for Win NT 3.x.