Boot Configuration Data in Windows Vista Feb. 4, 2008 Abstract
When a computer is started or rebooted, it must load the operating system. The details of this process vary depending on the system's hardware and firmware and whether the system is booted from a disk drive, a network, or some other source.
For the common scenario of a PC/AT BIOS computer that is booting from its hard drive, the BIOS reads the master boot record (MBR) and transfers control to the MBR's code. MBR, in turn, transfers control to the code that loads the operating system. Historically, the primary application that is responsible for loading Windows® has been Ntldr.
The data that has determined how Ntldr loaded Windows has been contained in a text file that is named boot.ini and resides on the root folder of the boot drive. Boot.ini contains a separate boot entry for each version or configuration of Windows that is available to the user. If multiple configurations or versions of the operating system are available, Ntldr displays the list of boot entries to allow the user to specify which one should be loaded. It then proceeds to load the selected version of the operating system with a configuration that is based on the selected entry's boot options.
The boot process for computers that use Extensible Firmware Interface (EFI) firmware is completely different from that for PC/AT BIOS computers. EFI is the next-generation firmware model that serves as the interface between hardware platform and the operating system. It provides information about the platform that is necessary for the operating system to boot and is expected to replace the legacy BIOS in the coming decade.
The firmware on a computer that uses EFI contains a boot manager that loads an operating system EFI application that is based on variables that are stored in non-volatile RAM (NVRAM). The Windows EFI operating system loader does not use boot.ini at all. For further information on EFI, see the white paper titled “EFI and Windows Vista.”
Windows Vista® introduces boot configuration data (BCD). This new data store serves essentially the same purpose as boot.ini. However, BCD abstracts the underlying firmware and provides a common programming interface to manipulate the boot environment for all Windows-supported computer platforms. BCD currently supports PC/AT BIOS and EFI systems. However, its programming interface is extensible and portable and has the ability to support other types of firmware in addition to the two discussed here.
Windows Vista introduces several new boot applications, including:
Bootmgr: A system-wide application that controls boot flow. With a multiboot system, the boot manager displays an operating system selection menu.
Winload.exe: The Windows Vista operating system loader. Each version of Windows Vista and Windows Server® 2008 that is installed on a computer has its own instance of winload.exe. The operating system loader creates the execution environment for the operating system and also loads the Windows Vista kernel, hardware abstraction layer (HAL), and boot drivers into memory.
Winresume.exe: The Windows Vista resume loader. Each version of Windows Vista and Windows Server 2008 that is installed on a computer has its own instance of winresume.exe. The resume loader restores Windows to its running state when a computer resumes from hibernation.
NTLDR can still be used on PC/AT BIOS systems to dual boot a Windows version earlier than Windows Vista.
This white paper includes:
The architecture of BCD.
How to manage the boot environment and BCD with system tools.
How to manage the boot environment and BCD programmatically through the BCD Windows Management Instrumentation (WMI) provider.
A “cookbook” that shows how to do a number of common operations with BCDEdit and the BCD WMI interface.