Dual boot operating system depends on ntldr and ntdetect version??

Discussion in 'Windows 64 Bit' started by dakota02, Feb 20, 2007.

  1. dakota02

    dakota02 Guest

    I have a dual boot system that I am trying to get up and running, but I
    cannot get dual boot to work without constantly changing the versions of
    ntldr and dtdetect.com in c:\ . I have 33 scsi drives, and the first drive is
    divided into 3 volumes, c, f, and z. C and F are NTFS, Z is fat32 (eventually
    I may want to load an old operating system there, but for now it is basically
    unused or for data storage.
    Anyway, win2k is up and running on F, in f:\winnt It has been working for
    almost 2 years. When I first set up the system, I tried dual boot with xp
    x64, but it stopped working after a while, and I just used it as a win2k
    machine. Now, I have reloaded xp x64 into c:\windows. I have dual boot set
    up, and it looks correct, but, if the version of ntldr and ntdetect in c:\
    are the newer ones supplied with xp x64, then xp x64 boots up fine, but I get
    an error message "winnt\system32\config\system missing or corrupt" if I try
    to boot win2k. If I replace the ntldr and ntdetect.com in c:\ with the older
    versions from win2k sp4, then win2k boots up fine, but I get an error about a
    missing or corrupt ntoskrnl.exe file, and I cannot boot xp x64.

    Any help or suggestions would be appreciated. This is driving me nuts!!!
    dakota02, Feb 20, 2007
    1. Advertisements

  2. dakota02

    John Barnes Guest

    are you changing your boot.ini also.
    John Barnes, Feb 20, 2007
    1. Advertisements

  3. Hi, Dakota.

    33 SCSI drives? Really? Wow!

    Microsoft's dual-boot setup works very well. I've been using it for nearly
    10 years, ever since Win95/NT4. It works well, that is, IF you do it in the
    proper sequence. We usually hear that we must "install the oldest system
    first". It really means to "install the newest system last". That sounds
    like the same thing - and it is if you are installing only two systems, but
    might not be for more than two (Win2K, WinXP & Vista, for example).

    As you've noted in the Subject line, there are different versions of NTLDR
    and NTDETECT.COM. MS has used the same names for the successive generations
    of these files. As you can see, each version has a different date and a
    different size. The later versions are larger, because they include
    instructions for how to handle the earlier versions of Windows. When we run
    WinXP Setup, its version of those files knows how to handle an existing
    installation of Win9x or Win2K if it finds one (or more) already installed
    on the hard drive. But when we run Win2K Setup, it knows nothing at all
    about WinXP, which didn't appear until nearly 2 years after the Win2K
    version of NTLDR and NTDETECT.COM were written.

    I'm sure you've also noticed that there is only a single copy of those two
    NT* files in the Root of the System Partition. In other words, we don't
    have both a Win2K version and a WinXP version installed. The one WinXP
    version handles the opening menu from which we choose which one to run this
    session. Once we choose (or default), NTLDR uses Boot.ini and NTDETECT.COM
    to find our chosen system and load it, no matter if it is on the first
    partition of the first HD or the 3rd partition on the 33rd (?) HD.

    My guess is that your Boot.ini is pointing to the wrong
    rdisk(#)partition(#). Or perhaps that it is looking for the \WinNT folder
    (the default for Win2K) instead of \Windows (the default for WinXP) - or
    vice versa. There should be only a single C:\Boot.ini, and it should point
    to ALL your Windows installations, no matter where those are on your HDs.
    If I understand your system correctly, the line for Win2K should be
    ....rdisk(0)partition(2)\WINNT; WinXP should be at
    ....rdisk(0)partition(1)\Windows. (HDs are numbered starting with zero and
    partition numbers start with 1 on each HD.) And be sure you are using the
    WinXP x64 versions of those NT* files; they are dated 3/25/2005 and are
    295,536 and 47,772 bytes long.

    R. C. White, CPA
    San Marcos, TX

    Microsoft Windows MVP
    (Running Windows Mail in Vista Ultimate x64)
    R. C. White, MVP, Feb 20, 2007
  4. dakota02

    dakota02 Guest

    No, I am not changing the boot.ini. It is the same all of the time.
    dakota02, Feb 20, 2007
  5. dakota02

    dakota02 Guest

    Sorry about that 33. It is really 3. Sometimes my keyboard puts in an extra

    I am using the same boot.ini all of the time, and it is correct. The only
    change that I have to make is to change the version of ntldr and ntdetect.com
    in c:\, which is the boot drive. (win2k is in f:\winnt, and f: is the system
    drive. If I go into recovery console, it thinks winxp x64 is in c:\windows
    and win2k is in I:\winnt . I don't know if this is making a difference. I
    doubt it. But, the version of my "new" ntldr and ntdetect.com that have to be
    in c:\ to get winxp x64 to boot are the size that you mention, but the date
    is 4/4/06. I don't know where they came from. Either the disk that was
    provided for xp x64 or a later service pack that was installed after I
    installed xp x64. The version of ntldr and ntdetect.com that I have to use to
    get win2k to run are smaller and have a 2002 date. But, and this is the
    point, if I put the newer versions of ntldr and ntdetect.com in c:\, I can
    only boot xp x64. I get an error "winnt\system32\config\system missing or
    corrupt." If I put the older versions of ntldr and ntdetect.com in c:\
    (leaving boot.ini the same), then I can boot win2k, but I get an error about
    NTOSKRL being bad when I try to boot xp x64.
    dakota02, Feb 20, 2007
  6. Hi, Dakota.
    LOTS of people get confused by these counter-intuitive terms! :>( We BOOT
    from the System Partition (typically C:, but not always) and keep the
    operating SYSTEM files in the Boot Volume - which can be C: or any other
    primary partition or logical drive in the computer. See this KB article:
    Definition of System Partition and Boot Partition

    (I have some quibbles with this KB article. The System Partition must
    always be a primary partition, but the Boot Folder can be in a logical drive
    in an extended partition, so the Boot Volume does not necessarily have to be
    a "partition"; the term "boot partition" should be "boot volume".)

    In your case, C: is the System Partition, where NTLDR, NTDETECT.COM and
    Boot.ini reside. You may have other copies of these files scattered around
    your drives, but only those in the Root of the System Partition (C:\) count.
    In the very early stages of the boot process, when the system needs these
    files, it has not yet learned to use folders, or even other partitions or
    drives, so these files must be where the BIOS tells the system to look: in
    the Root of the Active primary partition on the drive designated in the BIOS
    as the boot device.

    F: is the Boot Volume for your Win2K system; F:\WinNT is its Boot Folder.
    C: is the Boot Volume for your WinXP x64; C:\Windows is its Boot Folder. C:
    is also the System Partition for the whole computer; both Win2K and WinXP
    start here and branch to where C:\Boot.ini points. If C:\NTLDR and
    C:\NTDETECT.COM are the WinXP x64 versions, and if C:\Boot.ini has the
    proper contents, and if C: is the Active partition on your
    currently-designated boot device, then you should see the operating system
    menu each time you reboot. This menu should offer you two choices: Win2K
    and WinXP x64. The actual text of the choices may vary; these come from the
    labels within quotation marks in Boot.ini. These texts are only for the
    benefit of us humans; the computer relies on the
    rdisk(#)partition(#)\Windows to find the proper ntoskrnl and load the chosen
    operating system. NTLDR completely ignores drive letters at this point.

    When properly installed, you should not have to swap NTLDR versions. The
    latest (WinXP x64) versions should handle all prior versions of Windows from
    Win95 through WinXP x86, as well as WinXP x64. Your error messages about
    the config\system file and ntoskrnl being bad or missing are obviously
    wrong, because you can boot when you put in the proper locations. It sounds
    like your C:\boot.ini file is pointing to the wrong location for your Win2K
    boot folder. As you've described your system, boot.ini should point to the
    \WinNT folder on the second partition on the first HD:
    rdisk(0)partition(2)\WinNT. And, for WinXP, it should point to the \Windows
    folder on the first partition on the same HD: rdisk(0)partition(1)\Windows.

    R. C. White, CPA
    San Marcos, TX

    Microsoft Windows MVP
    (Running Windows Mail in Vista Ultimate x64)
    R. C. White, MVP, Feb 20, 2007
  7. dakota02

    dakota02 Guest

    I understand all of that, and that is why I am totally confused as to why my
    system does not work correctly. I do not change boot.ini, and it is in c:\
    When I boot up, I do get two operating system choices, but only one works,
    depending on the version of ntldr and ntdetect.com that I have in c:\ Here is
    a copy of my boot.ini file, which looks correct to me:
    [boot loader]
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000
    Professional" /fastdetect /noguiboot
    ;multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Professional x64
    Edition" /noexecute=optin /fastdetect /noguiboot

    I would attach a picture of my drive structure from computer management, but
    I don't believe there is any way to do attachments. If you want to see it,
    however, I can post it to a web site where it can be viewed, if you want.
    But, with the computer booted up in win2k, when I go and look at computer
    management, it says the following:
    my first drive is partitioned into 3 volumes. The first, c:, is the primary
    partition, and it is marked as system. It contains xp x64 in c:\windows .
    Then there is an extended partition, and it contains two logical partitions,
    f and z. f is marked as boot. and win2k is in c:\winnt . c and f are ntfs. z
    is fat 32. I also see several partitions marked as active, but they are on
    other physical drives. There are no partitions marked as active on the first
    drive, which is a scsi drive.

    FWIW, if I recall correctly, when I boot up into winxp x64, f is marked as
    the system partition and c is marked as the boot partition, but that is just
    from memory. If it matters, I can go back and check that again by changing
    the versions of ntldr and ntdetect.com in c:\ and rebooting and selecting xp
    x64 as the operating system. As I said, if I don't change those files, and
    try to boot xp x64, I get an error.

    I was going to post a picture of the computer management screen, but there
    is no way to upload a jpg, or at least I don't think there is. If it matters,
    I can post it on a web site.

    This has me totally baffled, especially since I have operated many dual boot
    systems over the years, although they were always a flavor of windows and a
    flavor of linux, never two versions of windows, although there was a time
    (very short) when this computer did properly dual boot win2k and winxp x64,
    but that was over 18 months ago when I first set it up with a beta version of
    xp x64.
    dakota02, Feb 20, 2007
  8. Hi, Dakota.

    Sorry if it seemed I was "talking down" to you. It's not always easy to
    tell how much experience someone has from just newsgroup posts.


    Please change to the WinXP versions of NTLDR and NTDETECT.COM - permanently.
    Write down the Status labels for both C: and F:. Then reboot, without
    reverting to the old versions of those two files, and choose Win2K from the
    menu. Win2K should boot properly. If it doesn't, we've isolated the
    problem and we can fix it.

    Now for the long-winded version...

    Your Boot.ini looks fine to me.

    Disk Management is one of my favorite utilities, and it has gotten better
    with later revisions. In Vista, it can shrink and extend partitions and do
    some other tricks that it could not in earlier versions. Also, it can show
    multiple statuses for a single volume. For example, if Win2K and WinXP
    could do this, your Drive C: would be marked "Healthy (System, Boot, Active,
    Page File, Crash Dump, Primary Partition)" when you are in WinXP. And when
    you are booted into Win2K, Drive C: would still be marked "Healthy (System,
    Active, Primary Partition)", but not (Boot); Drive F: would be marked
    "Healthy (Boot, Logical Drive)". In other words, the System Partition is
    always marked (System), but the (Boot) designation depends on which OS is
    running at the time. And many drives have several different statuses, even
    if only one can be shown in Win2K.
    If you are booting from that SCSI drive, then there MUST be an Active
    primary partition on it, and that must be the System Partition. Since
    Win2K's Disk Management can't show multiple status indicators, you see that
    partition marked only as System, but it also is Active.
    OK. This is the SCSI drive and is designated in the BIOS as the boot
    device, right?
    Correct. It is marked as (System) in both Win2K and WinXP, right?
    When you are booted into WinXP, this partition should be marked both
    (System) and (Boot). But, since DM can show only one label, it is marked
    (System) - and NO volume is marked (Boot), right?
    OK. Sounds like my system. ;^}
    HERE is where the fun starts. F: should be marked (Boot) WHEN YOU ARE
    BOOTED INTO WIN2K. When you are booted into WinXP, F: should be "just
    another volume" so far as WinXP is concerned. It should NOT be marked
    (Boot) when you are in WinXP.
    I think you mean that Win2K is in F:\WinNT. This F: is the second volume on
    the first HD.
    OK. Let's don't confuse operating systems (Win2K and WinXP) with file
    systems (FAT32 and NTFS). Either OS can work just fine with either file
    system, so long as we respect Win2K's volume size limitations.
    That's fine. Each HD can have up to 4 primary partitions, of which any one
    at a time on each HD may be marked active.
    Now we're back to the start: the primary partition on the boot device MUST
    be set Active, even though DM might not be able to show that status in
    addition to the (System) status.

    Now we are down to the nitty-gritty. Your Drive F: should NEVER be marked
    as Active or System, because it is a logical drive, not a primary partition.
    I suspect that the counterintuitive System/Boot terminology is confusing
    things here. But F: should also not be marked as anything special when you
    are in WinXP. You'd better go back and recheck those labels in WinXP.
    My experience was the opposite: always multiple Windows installations,
    never involving Linux or other flavors. So Microsoft's "Y" pattern - start
    in the System Partition then branch to one of several Boot Volumes - seems
    perfectly natural to me.

    You should be able to boot into Win2K by starting up with the WinXP x64
    versions of NTLDR and NTDETECT.COM. If you can't, then you need to figure
    out why not.

    R. C. White, CPA
    San Marcos, TX

    Microsoft Windows MVP
    (Running Windows Mail in Vista Ultimate x64)

    R. C. White, MVP, Feb 21, 2007
  9. dakota02

    dakota02 Guest

    OK, hopefully we are getting somewhere. I replaced the versions of ntldr and
    ntdetect.com in c:\ and rebooted. For some reason, xp x64 would not boot. I
    could only boot win2k. I found that, somehow, the versions of ntldr and
    ntdetect.com that I had replaced with the new versions had been replaced,
    somehow, with the old versions. I tried this several times, and each time the
    old versions were replacing the new versions, no matter what I did before
    each shut down. So, I removed Acronis boot director. (I only installed that
    after I had discovered that I could only boot operating systems according to
    the version of the files, and hoped that I could specify which version to use
    for each operating system. It did not work, but it may have had something to
    do with the versions being replaced.)

    Anyway, the bottom line is that even with that program gone, I still could
    not boot into xp x64, because, every time I tried, the old versions were in
    c:\. So, I tried a repair with the xp x64 disk. It came up with 2 operating
    systems, c:\windows and i:\winnt. I logged into c:\windows and tried to do a
    fixboot /rebuild, but that only resulted in "Fixboot cannot find the system
    drive, or the drive specified is not valid". So, then, in the repair mode, I
    copied new versions of ntldr and ntdetect into c:\ and tried to restart. Now,
    although boot.ini is still there in c:\, and looks correct, the system does
    not come up with a boot menu. It simply boots into xp x64, which is where I
    am, now. Again, after getting the system to at least boot, again, into xp
    x64, I tried to restart with the xp x64 disk and do a repair. Again, when I
    log onto c:\windows and do a fixboot /repair, I get the same message as
    above. I exit and again boot up with the cd, and this time I logged onto
    i:\winnt and tried to do a fixboot /rebuild. Again, I get the same error

    So, now, I do not have a boot menu, and I can only boot into winxp x64.
    Hopefully it is a short process, now, to get the system to dual boot into xp
    x64 and windows 2000. (I am quite certain that I could replace the versions
    of ntldr and ntdetect.com in c:\ and I would again be able to get into win2k,
    but not xp x64, although I have not tried that. What is different, now, is
    that I no longer get a boot menu. The machine just boots, as if there is only
    one operating system.

    As far as the disk management is concerned, c: is now listed as the system
    partition and f is just marked as healthy. Nothing is marked as boot, but I
    guess that is because c: is marked as system, and it can't be marked as both.

    Anyway, what do I do, now, to get the machine to dual boot xp x64 and win2k.

    dakota02, Feb 21, 2007
  10. dakota02

    John Barnes Guest

    The command you wanted is bootcfg /rebuild to make sure the boot.ini
    entries are correct. Make sure you have the ntldr and ntdetect.com from the
    x64 install disk on your system drive. You can drag and drop them when in
    your x64 system.

    John Barnes, Feb 22, 2007
  11. dakota02

    dakota02 Guest

    Unfortunately, still no luck. The first time I did it, I entered Windows 2000
    for the win2k installation, with no OS load options, and Windows xp x64 for
    the xp x64 installation, again with no os load options. Then, when I booted,
    I got 4 selections, the two I entered, and Windows 2000 Professional and
    Windows XP Professional X64. I chose the first option, my windows 2000 entry,
    and the computer simply rebooted. I then chose my xp x64 installation, and xp
    x64 booted. Then I tried the 3 entry, which was the old (I guess) Windows
    2000 Professional and I got the message "Windows could not start because of a
    computer disk hardware problem. Could not read from the selected boot disk.
    Check boot path and disk hardware. Please check the windows documentation
    about hardware disk configuration and your hardware reference manuals for
    additional information."
    When I tried the 4th option, the old Windows XP Professional X64, it booted
    into xp x64.
    The boot.ini that was used at that time is:
    [boot loader]
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows 2000"
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="windows xp x64"
    ;multi(0)disk(0)rdisk(0)partition(2)\WINNT="Microsoft Windows 2000
    Professional" /fastdetect /noguiboot
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Professional x64
    Edition" /noexecute=optin /fastdetect /noguiboot

    So, then I renamed boot.ini and did another repair session, entering Windows
    2000 and no os load options and windows xp x64 with no load options and tried

    This time, I only got the 2 expected choices, but when I try to boot win2k,
    I get the same old message that I was getting for a long time. "Windows could
    not start because the following file is missing or corrupt
    \winnt\system32\config\system You can attempt to repair this file by starting
    windows setup using the original setup cd-rom. Select -r at the first screen
    to start repair."

    So, I am back to where I was pretty much all of the time. I tried to boot xp
    x64, and it boots fine. The ntldr and ntdetect.com versions are, and have
    remained, the new versions. The current boot.ini is:

    [boot loader]
    [operating systems]
    multi(0)disk(0)rdisk(0)partition(2)\WINNT="Windows 2000"
    multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Professional X64"

    I suspect that I can go back in and change the ntldr and ntdetect.com files
    in c:\ and I will be able to boot win2k but not xp x64, but the point is to
    have a dual boot system. What next? I thought about trying to boot up using
    the old win2k disk and doing a repair, but I am not sure what should be
    repaired, since it works if the old version of ntldr and ntdetect.com are in

    dakota02, Feb 22, 2007
  12. One option - if you have a floppy drive in your machine - would be a boot
    floppy, containing boot.ini, and the Win2000 version of ntdetect.com and
    ntldr. Of course, this also requires that BIOS is set to boot from floppy
    before hard disk.

    Best regards


    Bjorn Landemoo, Feb 22, 2007
  13. dakota02

    dakota02 Guest

    Unfortunately, it looks like that is my only choice. I have no idea what the
    problem is. I have the correct versions of ntldr and ntdetect.com, and
    boot.ini is correct, but I cannot boot into win2k unless I put in the old
    versions of ntldr and ntdetect.com, and then I can't boot xp x64.

    So, how do I create the correct boot floppy? I treid making a bootable dos
    floppy, and copied boot.ini and the old versions of ntldr and ntdetect.com
    onto it, and then booted, but all I get is the A:> prompt.

    I'm wondering if something is wrong with the mbr, but I am afraid that if I
    try anything with that that I might totally screw up the machine to the point
    where I can't get it to run, at all, in any OS.

    dakota02, Feb 24, 2007
  14. dakota02

    dakota02 Guest

    OK, it gets even stranger. I made up a boot floppy by simply formatting under
    xp x64. Then, I copied boot.ini and the old versions of ntldr and
    ntdetect.com to the floppy and tried to boot. I got the menu, selected
    Windows 2000, and Windows 2000 booted fine.

    So, just to be sure, I rebooted, and this time, I selected xp x64. I got an
    error related to NTOSKRNL and it would not boot. So, I went back to a regular
    boot of the computer, selected xp x64 (which is the only boot option that
    works without the floppy, since the c:\ drive has the new versions of ntldr
    and ntdetect.com. Then, I made up another boot disk, but this time, I copied
    the same version of boot.ini and the new versions of ntldr and ntdetect.com
    to the boot disk. Then, I rebooted. Now, this boot disk will only boot into
    xp x64. If I try to boot into Windows 2000, I get the same old
    \winnt\system32\config\system missing or corrupt message.

    So, here is the bizarre problem. Whether I try to boot from my hard drive,
    or from a floppy drive, my system will only boot to the operating system
    who's ntldr and ntdetect.com is either in c:\ or a:\ . This makes no sense to
    me. I have seen several people complain about the same problem, but I've
    never seen a solution. But, something in the boot sequence depends on the
    version of ntldr and ntdetect.com. My impression was that as long as you use
    the latest version of ntldr and ntdetect.com, everything should be fine, but
    the latest version of ntldr and ntdetect.com do not allow me to load Windows
    2000, while the older, Windows 2000 versions of ntldr and ntdetect.com do not
    allow me to load Windows XP Professional X64 SP1. (This last statement is as
    it should be, from what I have heard.)

    Is there a later version of ntldr and ntdetect.com that are meant for XP X64
    SP1 that I don't have? The size on my files agrees with what I was told, and
    I can't find any other versions on my machine, and these are the versions
    that get placed on the drive when I do a repair from the XP X64 disk.
    dakota02, Feb 24, 2007
  15. dakota02

    VWWall Guest

    Here it is from the horse's mouth:

    fixmbr or fdisk /mbr will restore the original MBR. This won't hurt
    anything unless you're using a boot program like Linux GRUB or LILO, or
    other multi-boot program on it.
    VWWall, Feb 24, 2007
  16. I am not aware of any backwards comatibility problems with ntldr and
    ntdetect.com from XP x64, but your system obviously is a proof that there -
    under some special circumstances - might be one. To find out exactly what
    causes the problem would take more time and tests than most users would
    like to spend on it.

    Just use your boot floppy (with the Win2000 versions of ntldr and
    ntdetect.com) when you want to boot Win2000. Eject the floppy when you want
    to boot XP x64.


    Bjorn Landemoo, Feb 26, 2007
    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.