What is XXCLONE 
 Theory of Operation 
 F A Q 
 About Us (Pixelab) 
 Other Products
On-Line Manual 
Installation & Activation 
Volume Clone Operations 
Cool Tools 
Technical Notes 
About Self-Bootability 
A Crash Course on Windows Booting 
BIOS Settings 
About the BOOT.INI File 
Boot Error Messages 
Release History 

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.

  1. The boot device priority in the BIOS settings.
  2. Master Boot Record (MBR), Initial Program Loader (IPL).
  3. Active partition marker in the Partition table (in MBR).
  4. Boot Sector with the boot code.
  5. The \NTLDR file
  6. The \NTDETECT.COM file
  7. The \BOOT.INI file.
  8. Some files in the Windows system directory.
  9. 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.)

    1. 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, Ctrl-S, etc.).

      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.

    2. 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 hard disk.

        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 diskette).

      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 process. 

        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 Aided-Boot method, 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).
    3. 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.
    4. 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).

    5. 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.

    6. 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.)

    7. 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.

    8. 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.