System initialization occurs in eight phases:
This phase is platform-specific.
This phase sets up memory, captures hardware configuration data, constructs a description of the machine hardware in memory, and puts a pointer to this description into the loader block. NTLDR or OSLOADER then loads and relocates the kernel image, the HAL, and the driver(s) for the device and file system for the volume from which the system is booted. Any other device drivers that have a Start value of 0 are loaded at this time. For more information on Start values, see Section 1.2.3.
This phase calls a routine to fetch load-control information from the registry, such as the default or user-set size of resident system-space memory (nonpaged pool) and of the registry quota.
The Configuration Manager initializes two subtrees under the \Registry\Machine tree in the registry, enables the registry API, and creates the CurrentControlSet symbolic link in preparation for loading device drivers. At the end of this phase, the registry namespaces under \Registry\Machine\Hardware and \Registry\Machine\System can be both read and written.
This phase initializes and loads the rest of the Windows NT Executive, including certain kernel-mode drivers, according to the CurrentControlSet. First, the drivers loaded into memory in Phase 2 are initialized from the boot driver list. Next, other base drivers are loaded and initialized. At the end of this phase, the system’s core drivers are all active, unless a critical driver fails its initialization and the machine is rebooted.
This phase releases the loader block, some of configuration data that was collected in Phase 2, and the initial copy of the \Registry\Machine\System hive. However, the \Registry\Machine\Hardware configuration information is retained.
This phase runs certain programs (such as autocheck), calls the Windows NT Executive to open paging files so files can be written, and initializes the remainder of the registry. Before this phase, certain registry I/O requests have been cached, such as information core drivers might have written to the registry for use by still higher-level drivers that load later. At the end of this phase, all configuration information under \Registry\Machine is available.
This phase loads remaining drivers according to the CurrentControlSet and creates the LastKnownGood tree in the registry.