The Boot ProcessRegardless of what your booting - and even what bootloader you are using - the basic boot process starts off in the same way. When you power on your PC, the BIOS is loaded which first detects and initializes basic hardware, then loads a small amount of binary code stored in the MBR of the primary boot disk. The MBR then loads some more binary code in the bootsector of the active partition on that same disk. The code in the bootsector is then run, which typically loads a binary file from the root of the same active partition, which typically presents the user with a menu of operating systems to boot from (assuming there is more than one) and proceeds to boot into the selected OS.... usually by loading yet another binary file which initializes the environment bringing the machine out of real mode and into protected mode with virtual memory and launches the kernel. The first part of this procedure is depicted below:
1 , it doesn't know how to start up older versions of Windows. As a work around, Microsoft configured bootmgr to load the old NTLDR boot menu, which will then display its own list of legacy operating systems, according to boot.ini. NTLDR then loads the older version of Windows. NTLDR is stored in the root of the FAT16, FAT32, or NTFS partition set as active and primary. This 16-bit program calls up several other files that need to be in the same root directory of the single active partition on the primary boot disk that carry out of the different tasks needed to get your system up and running:
Once NTLDR has finished calling these child processes, it will display a second menu which gives you a choice of which Windows NT-based operating system to load. If there is only one such legacy entry, no menu will be displayed.
- NTLDR uses a file called NTDETECT.COM to detect and configure access to the various hardware components of your machine. Without NTDETECT.COM, NTLDR cannot access your hard drives and load Windows. NTDETECT.COM must be present in the root of the active partition on disk 0, together with BOOT.INI, or else Windows XP will fail to load.
- A file called BOOT.INI stores information regarding the physical location(s) of your various Windows NT-based installations. NTLDR accesses this file to get a list of the installed operating systems and display them in the on-screen boot menu for the end user to pick and OS to load into.
Basically, you have to go through a two-level boot menu, and you cannot - however hard you try - add both Windows XP entries to the main bootmgr boot menu. In order to load either of the two XP entries, you'll need to select the NTLDR entry (called "Legacy Entries" by default) from the bootmgr/bcd boot menu, and then select the copy of Windows XP you wish to boot into from the second menu presented by NTLDR.
EasyBCD and EasyLDR Annoying, right? With EasyBCD 2.0 though, there is a solution. We've developed our own version of NTLDR, and bootmgr will load a separate copy of EasyLDR for each Windows XP entry in the menu. Each copy of EasyLDR is configured to boot into one and only one copy of Windows XP, so your complicated two-level boot menu in the previous picture boils down to a much simpler and prettier result:
Keep in mind that since there's only one entry in each EasyLDR instance, no second menu will ever appear. Selecting the first Windows XP entry in the top-level BCD menu will directly load the first copy of Windows XP and selecting the second Windows XP entry in the top-level BCD menu will take you directly to the second copy of Windows XP, with no additional menu or action in between. EasyLDR sits quietly and invisibly in the middle, making sure everything works as expected.
The Mechanics of NTLDR and EasyLDR As mentioned before, NTLDR and EasyLDR need several other files to do their job correctly. While NTLDR/EasyLDR can be located anywhere, they will only look for their helper files and read their configuration from the root of the active partition on disk 0. As a result, the disk that EasyBCD shows is the location of NTLDR/EasyLDR and not the disk that Windows XP is located on. EasyBCD supports the creation of both standard (NTLDR) entries and its own custom EasyLDR ones. The type of entry created depends on whether or not the "autoconfiguration checkbox" is selected when adding a new Windows XP entry in EasyBCD 2.0 and above (see the next section for more info).
When a new NTLDR-based entry is created, EasyBCD creates the following files:
In this case, boot.ini will contain one or more entries in the standard boot.ini format. In case the boot partition (the active partition on disk 0) is not assigned a drive letter, the NST folder and its contents will be created on the system disk, while NTDETECT.COM and BOOT.INI will still be placed on the unmounted boot partition.
Each ebcd.00x file in the diagram above is a boot configuration file that tells EasyLDR from which partition to load Windows XP. To keep things simple, ebcd.00x files are in the same exact format as BOOT.INI, but only contain the information for a single Windows XP entry. In case the boot partition is not assigned a drive letter, the NST folder and its contents will be created on the system disk, while NTDETECT.COM and the ebcd.00x files will still be placed on the unmounted boot partition. Each easyldrX file in the NST folder corresponds to a single ebcd.00X file in the root of the boot drive (the opposite also holds true). And each ebcd.00X file corresponds to one and only one Windows NT/XP install.
Adding a Windows XP entry with EasyBCDCreating a new Windows XP entry with EasyBCD is very easy. By default, EasyBCD will create a Windows XP entry via the NTLDR method described above in order to minimize confusion and because most users will not have multiple legacy entries alongside their Vista/7 installs. However, creating a EasyLDR-based entry is also simple, and only a checkbox away.
NTLDR-based entries require you to only point and click. Just enter a name for the new entry that will appear in the boot menu, and click "Add Entry" and EasyBCD will automatically create the needed boot files. NTLDR will be placed in the NST subfolder as shown above, and NTDETECT will be placed in the root of the boot partition. EasyBCD's "BootGrabber.exe" helper module will scan all mounted partitions for legacy NT-based installs (Windows NT through 2003), and automatically generate a boot.ini that contains all detected legacy installations:
When viewing entry details/settings, EasyBCD will show the drive letter that the NST folder is on for Windows XP entries. This is the drive that the BCD menu should load either NTLDR or EasyLDR from, and not the drive that Windows XP is installed on. Do not change this path, it won't do any good and will stop BOOTMGR from correctly loading NTLDR/EasyLDR, preventing Windows XP from loading!
General Troubleshooting Guidelines
- Make sure EasyBCD's Windows XP entry points to the "system" drive and that it has NTLDR, NTDETECT.COM, BOOT.INI in the root directory. You can grab those files here.
- Quadruple-check your BOOT.INI [operating systems] list. Make sure the default entry matches one of the entries in the [operating systems] list. Make sure rdisk(x)partition(y) points to the right partition that Windows XP is installed to.
- Make sure you only have one copy of NTLDR, NTDETECT.COM, and BOOT.INI on your system. Having multiple copies leads to lots of confusion as to which files you should edit and check.
- Make sure you selected "Windows XP" from the drop-down menu in EasyBCD's Add/Remove Entries section when you added XP to the Vista bootloader. If you kept it at the default option ("Windows Vista/Longhorn Server"), Windows XP will never boot.
After choosing to boot into Windows, I get a black, blank screen.
This means that NTLDR was found, but NTDETECT.COM wasn't.
Grab it here.
winload.exe is missing or corrupt
ntoskrnl.exe is missing or corrupt
Hal.dll is missing or corrupt
Windows could not start because of a disk hardware configuration problem
I get a BSOD when I boot into Windows XP
Congratulations! As hard as it may be to believe, this means your dual-boot is working just fine. Unfortunately, after EasyBCD successfully starts to load Windows XP, it crashes. This can be caused by using an imaged copy of a Windows XP installation from another PC, a hardware mis-configuration, or one of the zillion other BSOD-causing problems. Your best bet is to perform an in-place upgrade/repair install of Windows XP and/or ask for help in our friendly forums.