Vista MBR vs. XP MBR

Discussion in 'Windows Vista General Discussion' started by Timothy Daniels, Feb 27, 2008.

  1. No one has said that only the MBR had to be changed
    to "fix your problem". (Please note that it is not I who has
    the problem of the inquiring poster.) The point of differing
    opinion is whether the *MBRs* of various Windows/DOS
    OSes are different. In that respect, you are mostly correct -
    they are *usually* the same. I say "usually" because there
    is some confusion in the online documentation about Vista's
    MBR.

    Here at APCmag, the author is clearly of the notion
    that Vista's MBR differs from that of XP
    (http://apcmag.com/5485/dualbooting_vista_and_xp):

    "The Windows XP bootloader gets installed to the MBR
    and Vista can no longer boot." [......]

    And following the link to
    http://apcmag.com/5485/dualbooting_vista_and_xp#restoring ,
    we have:

    "Restoring Vista and dual booting

    "Because you can't use the Windows XP bootloader to boot
    Vista, we have to reinstate Vista's bootloader to the MBR
    and configure it to manage both operating systems."


    This view is seemingly supported by Microsoft's own
    online documentation
    (http://support.microsoft.com/kb/919529/en-us):

    "When you install an earlier version of the Windows operating
    system on a Windows Vista-based computer, Setup overwrites
    everything from the MBR, the boot sector, and the boot files.
    Therefore, the earlier version the Windows operating system
    loses forward compatibility with Windows Vista." [.......]

    "RESOLUTION
    "To resolve these issues, follow these steps.

    "Note You can run the commands in the following procedure
    by using the command prompt. If you run these commands in
    Windows Vista, run them at a command prompt that has
    elevated user rights. To do this, click Start, click Accessories,
    right-click the command-prompt shortcut, and then click
    Run as Administrator.
    1. Use Bootsect.exe to restore the Windows Vista MBR and
    the boot code that transfers control to the Windows Boot
    Manager program. To do this, type the following command
    at a command prompt: Drive:\boot\Bootsect.exe /NT60 All"


    But it turns out that "bootsect.exe" just restores the boot sector
    unless the option "/fixmbr" is added. Alone, "bootsect.exe"
    defaults to "bootsect.exe /fixboot". (See the following webpage:
    http://neosmart.net/blog/2007/bootsectexe-modifies-the-bootsector-not-the-mbr/ ).
    The following reason is offered in the article for the disparity:

    "The source of all this confusion is that during the Longhorn/Vista
    beta program, quite a number of builds were shipped with a
    version of bootsect.exe (originally dubbed `fixntfs.exe`) that
    modified both the MBR and the bootsector."

    So at one time, the MBR of Vista differed from the pre-Vista MBRs,
    but when Vista was finally released, it had the old MBR. This site
    offers a breakdown of the "bootsect.exe" command syntax if you're
    interested:
    http://thevistaforums.com/index.php?autocom=ineo&showarticle=32 .

    The usual source of "bootsect.exe" is the recovery section of the
    Vista installation DVD. But if you don't have the Vista installation
    DVD, it turns out you can also get it from the free download of
    VistaBootPro at http://www.vistabootpro.org/ (where the Download
    link is at the bottom of the webpage).

    *TimDaniels*
     
    Timothy Daniels, Feb 27, 2008
    #1
    1. Advertisements

  2. Timothy Daniels

    Sami Laiho Guest

    Just to correct you must not mix the two commands: bootsect.exe and
    bootrec.exe.

    BOOTREC.EXE is the one with the parameters /FIXMBR, /FIXBOOT and /REBUILDBCD

    Regards,

    Sami

     
    Sami Laiho, Feb 27, 2008
    #2
    1. Advertisements

  3. Thanks, Sami. I had missed that. These are the paragraphs that Sami
    refers to in
    http://neosmart.net/blog/2007/bootsectexe-modifies-the-bootsector-not-the-mbr/:

    "The problem that most people seem to be having can be traced
    back to single, simple fact: bootsect.exe does not modify the MBR:
    it only fixes/repairs the bootsector of your Windows Vista partition.
    The MBR is like a "global bootsector" that tells the BIOS where in
    the hard-drive it should look for a bootloader. The bootsector, on
    the other hand, is like a partition-dependant MBR - each operating
    system can have its own bootsector to tell your system how to boot it.

    "The source of all this confusion is that during the Longhorn/Vista
    beta program, quite a number of builds were shipped with a version
    of bootsect.exe (originally dubbed `fixntfs.exe`) that modified both
    the MBR and the bootsector.

    "However, in the Windows Vista RTM build and Longhorn Server
    builds following that, bootsect.exe is a command-line utility used to
    repair the bootsector and only the bootsector - it won't get your
    MBR to use the Vista BCD/Bootmgr. In order to do that, you'll
    have to boot from the
    Vista DVD | Repair Options | Command Prompt.

    bootrec.exe /fixmbr
    bootrec.exe /fixboot
    bootrec.exe /rebuildbcd

    "Bootrec.exe is an "all-in-one" boot-repair tool that can only be
    accessed and run from the Vista recovery console. The first
    command rebuilds the MBR to use the Vista boot manager.
    The second does the same thing as bootsect.exe and tells the
    bootsector where to find the BCD bootloader (\bootmgr). The
    final command rebuilds the BCD data from scratch and is highly
    useful when recovering a borked Vista partition."

    In short, "bootsec.exe" is now equivalent to "bootrec.exe /fixboot".

    *TimDaniels*
     
    Timothy Daniels, Feb 27, 2008
    #3
  4. Timothy Daniels

    John John Guest

    The MBR *is* different but the articles that you quote are incorrect, or
    at least partially incorrect. See inline below.

    No it doesn't, that article has technical errors or that particular
    passage is incorrect. No one disputes that the MBR is rewritten when
    you install a Windows Operating System, that is a well known fact but
    the XP boot loader is NTLDR and it does not reside in the MBR. You can
    take a Windows 98 boot disk and rewrite/replace the XP MBR with the
    Windows 98 MBR and the newly written MBR will still be able to boot
    Windows XP, proof enough that the XP boot loader is not installed or
    does not reside in the MBR!


    That is only half ass correct. You have to restore the Vista MBR but
    the Vista boot loader itself is not in the MBR. The reason why you need
    to change the MBR is not really evident, but it is not completely due to
    the boot code requirements.


    Confusing to say the least. I would have to do some tests to see what
    is really going on with the bootsect.exe tool. Keep in mind that
    Microsoft is famous for changing terminology and for saying one thing
    one day and seemingly the opposite the next day! If you read here:

    Bootsect Command-Line Options
    http://technet2.microsoft.com/Windo...b66f-4b42-9563-04c218a1a6ac1033.mspx?mfr=true

    You will read:

    "Bootsect.exe updates the master boot code for hard disk partitions to
    switch between BOOTMGR and NTLDR. You can use this tool to restore the
    boot sector on your computer. This tool replaces FixFAT and FixNTFS."

    The Master Boot Code refers to the MBR IPL and if you search the
    Microsoft site you will see that Microsoft specifically refers the
    "Master Boot Code" as the MBR IPL too:

    http://search.microsoft.com/results.aspx?mkt=en-US&setlang=en-US&q="master boot code"

    Yet we know, or we thought that we knew that the Boot Sector is/was the
    first sector of a partition or volume! Again, if you search the
    Microsoft site for "Boot Sector" you will get all kind of differing
    results but as far as booting NT versions the Boot Sector has always
    been used to refer to the location of the Partition Boot Code, as
    described here:

    http://www.microsoft.com/technet/pr...serv/reskit/prork/prcb_dis_stfl.mspx?mfr=true

    In that article you can read:

    "If the boot device is on a hard disk, the BIOS loads the MBR. The
    master boot code in the MBR loads the boot sector of the active
    partition, and transfers CPU execution to that memory address. On
    computers that are running Windows 2000, the executable boot code in the
    boot sector finds Ntldr, loads it into memory, and transfers execution
    to that file." (Vista bootstraps in much that same manner, but, for
    lack of a better term, there are new "layers" in the MBR.)

    So go figure! With conflicting statements like the ones found in the
    Bootsect.exe or other Vista articles and Microsoft continually changing
    or interchanging the terms it is no small wonder that confusion reigns!
    The plain facts are that sometimes you can't know for sure from one
    day to the next what Microsoft means when they say something, it's like
    going to see your mechanic and from one day to the next he changes the
    meaning of the mechanical terms for your car! With that kind of
    confusion there is no way of knowing for sure what exactly it is that
    bootsect.exe does! The way I read it it appears quite evident that it
    changes the (Partition) Boot Sector but it's not clear what exactly, if
    anything, it does to the MBR. Maybe it changes both, but at this time I
    don't know for sure if it actually changes the MBR. To add yet more
    confusion you can read here:

    How to use the Bootrec.exe tool in the Windows Recovery Environment to
    troubleshoot and repair startup issues in Windows Vista
    http://support.microsoft.com/kb/927392

    there you will read that the "boot sector" clearly refers to the
    Partition Boot Sector.


    There is no /fixmbr switch for bootsect.exe. I think that some of the
    conflicting information on the web is due to the fact that much of the
    information may have been written when the Vista Release Candidates were
    being experimented with.

    Bootsect Command-Line Options
    http://technet2.microsoft.com/Windo...b66f-4b42-9563-04c218a1a6ac1033.mspx?mfr=true


    I'm not sure what you mean by "old MBR", what is the "old MBR"?

    As for the new MBR "layers" you might find the information in the white
    paper here interesting:

    Custom Bootstrap Actions in Windows Vista
    http://www.microsoft.com/whdc/system/platform/firmware/OEMBoot_Vista.mspx

    In the Vista MBR and the boot process there is a bit more than the old
    routine of the Master Boot Code simply passing the instructions to the
    Partition Boot Code, there is a whole new element that isn't used at all
    on older NT versions! The paper will explain in part why a previous
    Microsoft MBR cannot (or might not?) boot Vista. One thing for sure,
    with the exception of certain hardware constraints the NT boot process
    has changed little from NT3.51 through to XP, the Vista boot process is
    entirely different, it brings in some never seen before concepts, at
    least never seen before on Microsoft operating systems. This is no
    longer the same "old" NT boot process!

    John
     
    John John, Feb 27, 2008
    #4
  5. I agree. I've always shied away from doing things that didn't have
    to be done with a computer (or any complicated system), since I believe
    in "If it ain't broke now, all your fiddlin' is LIKELY to break it." So,
    I would really like to know if, say installing XP after Vista necessitates
    restoring Vista's version of the MBR as well as the Vista system partition's
    boot sector. If you have the means, John John, a byte-for-byte comparison
    of XP's and Vista's MBRs would really be a help. Absent that, just
    seeing if they are interchangeable would suffice, I think.

    *TimDaniels*
     
    Timothy Daniels, Feb 27, 2008
    #5
  6. Timothy Daniels

    Bill in Co. Guest

    With perhaps a short analysis and dissassembly of that - would be nice.
    And perhaps, for completeness, the noteworthy differences in the boot
    sectors between XP and Vista (again with some dissassembly).
     
    Bill in Co., Feb 27, 2008
    #6
  7. Timothy Daniels

    Jawade Guest

    But Vista can startup from a XP MBR if the bootindicator is at
    the right place. The MBR (IPL) sends him to the PBR and there
    is loaded bootmgr.



     
    Jawade, Feb 27, 2008
    #7
  8. Timothy Daniels

    Jawade Guest

    No, then MBR sends him to the PBR, and there it loads ntldr or
    bootmgr.
     
    Jawade, Feb 27, 2008
    #8
  9. Timothy Daniels

    jorgen Guest

    It actually can, and will do.

    To make a note. When bitlocker is activated, you have a problem if you
    change anything in the MBR. But that is another issue
     
    jorgen, Feb 28, 2008
    #9
  10. Timothy Daniels

    jorgen Guest

    There is without any doubt big difference in the boot sectors. XP's boot
    sector loads ntldr, Vista's loads bootmgr
     
    jorgen, Feb 28, 2008
    #10
  11. Timothy Daniels

    jorgen Guest

    What i said. Boot sector = PBR
     
    jorgen, Feb 28, 2008
    #11
  12. Timothy Daniels

    John John Guest

    Not entirely. Rewriting the MBR with the Windows 2000/XP RC's fixmbr
    command will not bother Vista (unless BitLocker is enabled) but
    rewriting the disk signature with the Windows 98 fdisk /mbr command will
    cause a boot failure. In most cases Windows 2000/XP will hardly bat an
    eye and boot as if nothing had happened when the signature is rewritten,
    Vista on the other hand will not boot if the disk signature is changed.

    John
     
    John John, Feb 28, 2008
    #12
  13. Timothy Daniels

    John John Guest

    I could post the MBR's but it would have to be htlm, it wouldn't post
    too well as plain text, the wrapping would make it nearly impossible to
    read.

    Absent that, just
    As mentioned in the other post with jorgen, rewriting the MBR with
    Windows 2000/XP's fixmbr doesn't cause any problems, unless BitLocker is
    enabled. Rewritting the MBR with fdisk /mbr causes a boot failure,
    Vista does not tolerate a change in the disk signature.

    John
     
    John John, Feb 28, 2008
    #13
  14. Timothy Daniels

    John John Guest

    I could post both the MBR and Boot Sector for both (W2K & Vista) but it
    would have to be htlm, it wouldn't post too well as plain text, the
    wrapping would make it nearly impossible to read. If you want to see
    the code post again, but don't expect me to disassemble the code, that
    is a bit beyond my expertise!

    John
     
    John John, Feb 28, 2008
    #14
  15. Here's something I found in Wikipedia on "Master Boot Record
    (http://en.wikipedia.org/wiki/Master_boot_record#Structure_of_a_Master_Boot_Record):

    "Differences in MBR Code

    "Even different versions of the MS-DOS FDISK program,
    not to mention the partitioning utilities for other types of
    operating systems, may write variations of code to the MBR
    sector. For example, the bytes of code written by FDISK
    under MS-DOS 6.22, Windows 98 and the Recovery Console
    of a Windows XP install CD are all different. Yet, no matter
    how great a difference exists in the MBR code, such as that
    written by an MS-DOS 3.30 install compared to the MBR
    produced by Windows XP, they will all load the boot sector
    of any OS residing in the "active" primary partition."

    "The following table shows how the Standard Microsoft MBR
    Code (created by MS-DOS 3.30 through Windows 95) would
    appear in a disk editor:"

    <------------- data ------------>

    "A total of only 219 bytes (the zero-byte at 0DAh is necessary);
    139 executable code bytes, plus 80 bytes comprising its English
    set of error messages.

    "In contrast, the MBR code created by a Windows 2000 or XP
    install (seen in this next table) has a total of 383 bytes for its
    English version:"

    <------------- data ------------>

    In short, the MBRs are different, but they do the same thing -
    they load the Volume Boot Record (i.e. the "Boot Sector") of
    the "active" primary partition. But the question remains about
    whether, say WinXP's MBR would be suitable for Vista.

    *TimDaniels*
     
    Timothy Daniels, Feb 28, 2008
    #15
  16. Timothy Daniels

    CZ Guest

    rewriting the disk signature with the Windows 98 fdisk /mbr command will
    John:

    What does the disk signature have to do with the MBR?

    IIRC, the MBR is a sector that contains executable code, the partition
    table, and ends with 55 AA.
    And, each partition has a "partition boot sector".


    Have you tested booting into Vista via a Win 98 MBR?

    From a post I made about a year ago:
    David:

    I did some testing to see if Vista does change the MBR.
    On a Vista/Win XP dual boot computer, I ran fdisk /mbr from a Win98 SE
    bootable floppy.

    Results:
    1) Vista's dual boot menu displayed in normal manner
    2) Vista op system had a short prompt re: installing some drivers (could not
    find what they they were about)
    3) Vista's EventMgr did not have any relevant error messages
    4) Vista ran in normal manner

    5) When I selected "Other op systems" from the Vista dual boot menu, I
    received an error message re: "ntldr" was missing, and the usual boot.ini
    type of menu did not display

    6) What I learned: The BCD store had been changed (note the "device
    unknown" lines below)

    Windows Boot Manager
    --------------------
    identifier {bootmgr}
    device unknown
    description Windows Boot Manager
    locale en-US
    inherit {globalsettings}
    default {current}
    resumeobject {50c73d4d-e6b3-11da-bc73-d30cdb1ce216}
    displayorder {ntldr}
    {current}
    toolsdisplayorder {memdiag}
    timeout 30

    Windows Legacy OS Loader
    ------------------------
    identifier {ntldr}
    device unknown
    path \ntldr
    description Earlier version of Windows

    Windows Boot Loader
    -------------------
    identifier {current}
    device partition=C:
    path \Windows\system32\winload.exe
    description Microsoft Windows
    locale en-US
    inherit {bootloadersettings}
    osdevice partition=C:
    systemroot \Windows
    resumeobject {50c73d4d-e6b3-11da-bc73-d30cdb1ce216}
    nx OptIn

    7) What I did to correct the problem: ran the following two cmds via Vista
    Safe Mode boot:
    Bcdedit /set {bootmgr} device partition=D:
    Bcdedit /set {ntldr} device partition=D:

    8) Summary:
    I now have a computer dual booting Vista and Win XP via a Win98 SE MBR



    Also note posts from a thread that Jill of MS and I were in:
    Jill wrote :in regard to the MBR changes made by Vista install:
    - Trusted Computing Group (TCG) compliance [measured boot leveraged by
    bitlocker].
    - Default to using LBA addressing over CHS [CHS still supported].
    - Obtain drive number from BIOS instead of from partition table.
    - Enable the A20 gate [workaround for buggy TCG BIOSes]

    Functional changes to NTFS [vol] bootcode: [made by Vista]
    - TCG compliance [measured boot leveraged by bitlocker].
    - Only support LBA addressing [no CHS].
    - Detect sector size instead of assuming 512 bytes.
    - Load BOOTMGR instead of NTLDR. Fallback to NTLDR if BOOTMGR is not
    present.

    I wrote:
    x Thanks.
    This agrees with my tests, that Vista can boot from disk00 with the previous
    MS MBR (DOS thru XP) provided the active partition boot code calls bootmgr
    (and not ntldr).
     
    CZ, Feb 28, 2008
    #16
  17. Timothy Daniels

    CZ Guest

    Re: disk signature and MBR:

    From: http://en.wikipedia.org/wiki/Master_boot_record

    "The MBR may be used for one or more of the following:
    Holding a disk's primary partition table.[2]
    Bootstrapping operating systems, after the computer's BIOS passes execution
    to machine code instructions contained within the MBR.
    Uniquely identifying individual disk media, with a 32-bit disk signature;
    even though it may never be used by the machine the disk is running on"


    Note that I disagree with the second comment in that IMO MBR queries the
    partition table for the active partition, then passes control to the boot
    loader of that active partition, which then loads the op system. The MBR is
    generic, whereas a partition boot loader is op system specific; the MBR
    cannot load an op system.
     
    CZ, Feb 28, 2008
    #17
  18. Timothy Daniels

    John John Guest

    It's stored in the MBR at offsets 1B8h through 1BBh.

    Yes, I tried it with one of the Vista Release Candidates and Vista
    failed to boot after the change. Maybe the final Vista release handles
    disk signature changes differently?

    John
     
    John John, Feb 28, 2008
    #18
  19. Timothy Daniels

    John John Guest

    It depends, CZ. In the case of GRUB or Lilo it can actually be
    installed *in* the MBR, that is why we sometimes tell folks who want to
    remove a Linux dual boot and return the boot functions to ntldr to use
    fixmbr to "dislodge" GRUB from the MBR. In the case of removing a
    Microsoft OS Loader from the boot sector we tell them to use fixboot,
    bootsect or if you want to return the boot loader to Windows 9x use the
    SYS commmand.

    John
     
    John John, Feb 28, 2008
    #19
  20. Timothy Daniels

    CZ Guest

    OT:

    John:

    You appear to be a non-zealous person.
    May I ask your opinion re: Linux vs Vista vs Mac OS X?

    TIA
     
    CZ, Feb 28, 2008
    #20
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.