A Crash Course on Windows Booting
This section gives an overview of the Windows boot sequence.
Although it is packed with a weath of information about the subject,
it covers commonly available facts. Knowledgeable users
may skip this section.
In order for a Windows system volume to become bootable by
itself, a number of conditions must be satisfied. Some of the
noteworthy ones that cause troubles most often are as follows.
- The boot device priority in the BIOS settings.
- Master Boot Record (MBR), Initial Program Loader (IPL).
- Active partition marker in the Partition table (in MBR).
- Boot Sector with the boot code.
- The \NTLDR file
- The \NTDETECT.COM file
- The \BOOT.INI file.
- Some files in the Windows system directory.
- The system registry files.
All the files listed above (the last five items) except the BOOT.INI
file in a cloned volume are initialized during a volume clone operation.
Here is a step-by-step sequence of events that take place during
the bootstrap process of a (NT-family) Windows system.
(The Win9X boot sequence is slightly different.)
When a computer is powered up, the first action it carries out is
the Power-On Self-Test (POST) where the essential components,
such as the main memory, keyboard, and video card are tested.
Some devices (e.g,, video card) contains an additional BIOS code that
will be loaded at this point.
Witin a few seconds after a power-up (or a system reset),
you may open up the BIOS menu by pressing the DELETE key
(some PCs use a different key such as F2, F8,
Then, it detects disk drives that are registered in the BIOS memory
(so-called CMOS memory). It also scans and initializes
the COM, LPT, and Plug and Play (PnP) devices. This part
seldom causes a problem.
The BIOS then checks storage devices in the order of the boot device
priority list. This is an important BIOS setting that needs to
be initialized properly. We suggest to place the CD-ROM/DVD-ROM
first, the Floppy Disk Drive (FDD or USB-FDD) next, and then, the
Some BIOS has a second list that determines which hard disk will
become the boot disk. When your computer supports both the
Serial ATA (SATA) and Paralel ATA (PATA, or the traditional IDE)
disks, then, you need to pay a close attention to the disk number
parameters in the BOOT.INI file
(See more discussion about BOOT.INI.)
When it encounters a device which is not ready (e.g., the DVD drive
is not loaded with a bootable disc), it moves on to the next device
in the list. Therefore, if you have an FDD which is listed in
the boot device list before the hard disk, then, insert the
QBD in the FDD to let it take over
the boot sequence (or, leave it unloaded to forego the use of
Here, we assume that none of the boot devices ahead of the hard disk
in the list is ready (and therefore, the BIOS chooses the hard
disk as the boot device).
When your computer has multiple hard disks (not counting the disk
that is "Disabled" in the BIOS setting), the BIOS selects the
disk that is designated as Disk 0 for the boot
The important thing here is that the BIOS setting (NOT the
BOOT.INI file) determines which disk (among many) will become
the initial boot disk. Using the
the ultimate system volume will be determined by the boot menu.
For a Self-Bootable volume to exercise its capability,
the disk that contains the Self-Bootable volume must be
designated as the boot disk (Disk 0).
Once the BIOS determines which disk to boot, then, it loads
the first physical sector (512 bytes) of the disk that is commonly
known as the Master Boot Record (MBR) into a pre-determined location
in the main memory and executes the program. At this point,
the sole control of the computer is handed over to the 512-byte
program (called MBR code, or IPL).
The MBR code is usually OS-independent. That is, the same MBR
code can load Windows 9X, NT, 2000, XP, 2003, or even Linux.
In case of an FDD-based booting, the BIOS loads the first physical
sector of the diskette which is the boot sector. Unlike
the hard disk, a diskette is always formatted as a single-partition
device. It has no MBR. Instead, the first sector is
the Boot Sector. Therefore, with a diskette, the boot
procedure skips the MBR-related actions (skips the next step).
In such a case, the Disk 0 designation goes to the
first hard disk, not the FDD which does not receive a disk number.
The MBR always contains the partition table that holds various
parameters (such as the sector location) of partitions that are
present in the disk.
There must be one partition that is marked active in the table.
Merely formatting a disk does not automatically make it active.
It takes your explicit operation to activate a partition.
We suggest that you always make one partition active on every disk
whenever you perform a partition or format operation using the
Disk Management utility.
The main task of the MBR code is to read the partition table,
determine the active partition and its location (sector number),
and load the first sector (512 bytes) into the pre-determined location
in the main memory, and then execute the code in memory (boot code).
The first sector of a partition is called Boot Sector that must be
initialized with the boot code (a little program) which loads the
NTLDR file as the first step in the boot operation for NT-family
Windows (NT4/2000/XP/2003). (In the case of the Win9X-family OS,
the first file to load will be the IO.SYS files.) Unlike the
MBR code, the boot code in the Boot Sector is OS-specific. That
is, the Boot Sector image for Windows NT-family is different from
Windows 9X-family. It is our observation that the boot code for
Windows XP is compatible with all NT-family Windows.
Under normal circumstances, the boot sector is automatically
initialized when the partition is initialized and formatted
by the Disk Management utility. However, when it
is partitioned by FDISK (a DOS-based tool), unless the partition
is formatted as a system disk, or a "SYS" command is launched,
the boot sector will remain uninitialized.
The boot code for the NT-family Windows is responsible for loading
the NTLDR file which is more elaborate than merely loading a
sector from a known location. The boot code spans 7 sectors.
Once the NTLDR file is successfully loaded from the disk into
memory and is executed, the BOOT.INI
file from the same volume will be read and the boot menu will be
displayed on the console.
The parameters that accompany the boot menu text will supply the
location of the Windows system directory by the disk number, the
partition number and the pathname of the system directory.
If the boot menu contains only one entry (for no choice), then,
the boot sequence will proceed without showing the boot menu.
Note that the main purpose of the boot menu is to determine the
exact location of the Windows system directory (notably, the
Disk Number and the Partition Number. (It also supplies the
windows directory name and miscellaneous option parameters.)
When the location of the system directory is determined from the
boot menu (either by a user-selection from the menu or by default
in the invisible menu), the real Windows system initialization
phase will start to roll in full force. The ultimate
Windows system directory may or may not be in the same disk
as the one that produced the NTLDR and BOOT.INI files.
The system directory will furnish the necessary files ---
device drivers and system DLLs that comprise the Windows system.
Finally, the system registry files will be retrieved and
the Windows system will be configured with the thousands of
settings stored in the system registry.
One of the system initialization steps of particular interest
is the drive-letter assignments.  Unlike the earlier Windows
versions (95, 98 and ME), the NT-family Windows store the
drive-letter settings in the system registry. When
the system registry is transferred by XXCLONE, the drive-letter
assignments are automatically swapped (between the Source and
the Target volumes) for a proper operation when the system is
booted from the cloned volume.