Windows Boot Manager

Windows Boot Manager
Component of Microsoft Windows
TypeBoot manager
Introduced inWindows Vista build 5048

Windows Boot Manager (bootmgr, bootmgfw) is the boot manager for the Windows operating system since Windows Vista.

Development[edit | edit source]

The feature was introduced in Windows Vista build 5048 as a replacement for the gradually-aging NTLDR application, which had been present since the initial release of Windows NT 3.1. In this early state, the background colors for the Advanced Boot Options menu and boot errors were respectively displayed with blue and red backgrounds; these background colors were removed in build 5098.

Initially using the same boot.ini as NTLDR, it transitioned in build 5259 to a Boot Configuration Data (BCD) database instead. Consequently, MSConfig was also repurposed to configure the BCD database. Despite this, the Windows Boot Manager was originally capable of falling back to using the boot.ini file when required. This can be seen by typing NOBCD under the timeout= parameter in boot.ini to skip BCD settings; the functionality was later removed in the Windows 10 Anniversary Update.

Support for booting under a 32-bit EFI environment was briefly implemented in build 5098, and was promptly removed after build 5219 (winmain_idx02.050830-2010) due to a lack of interest from hardware manufacturers.[1] This feature would be later reintroduced in Windows 8 build 7850.

Architecture[edit | edit source]

The Windows Boot Manager is the entry point of the Boot Environment, a small enviroment running on top of firmware (BIOS or EFI) APIs. Applications running within the environment are called Windows Boot Applications (of which the boot manager itself is one). The core component of a boot application is the boot library, which provides APIs for display, input, storage, loading and starting executables and reading and writing configuration in memory such that enough functionality required for loading Windows can be implemented using these APIs. The boot library was extended later to provide support for features and hardware modules such as TPMs (for BitLocker, then for measured boot in Windows 7), VHD mounting (as a type of block device), Secure Boot (in Windows 8), and additional filesystems including exFAT and ReFS.

The OS Loader component of ntldr was split out into a separate boot application (winload.exe) and is now a part of the Windows install itself, located within the system directory. This allows breaking changes to be introduced to the data structures passed to the kernel's entrypoint, as the loader must now be matched with the kernel executable. Furthermore, the loader no longer has to retain support for loading older versions of Windows like ntldr.

The Windows Boot Manager uses a registry hive referred to as Boot Configuration Data (BCD) to store settings, whereas ntldr used a text document named boot.ini instead. As the BCD is a registry hive, permissions for each boot option can be set granularly instead of having one set of permissions throughout the entire configuration file. The BCD can be edited by using the built-in bcdedit.exe command, although 3rd party tools have also been developed which also feature a GUI. BCD editing can be used to add, edit or remove new boot entries, set boot options for a boot entry or the boot process, such as turning on the Hyper-V hypervisor, disabling boot graphics functionalities in the kernel or modifying the path of a boot entry's application path. If installed onto an EFI device, it will present itself as a boot entry within the device's NVRAM.

Functionality[edit | edit source]

On a BIOS system, the Windows Boot Manager can also be used to chainload other operating systems or boot managers alongside the existing Windows installation, such as older Windows versions relying on the NTLDR application or Linux distributions. When compiled as an EFI subsystem application, the boot manager can only chainload other Windows boot applications; the only exception to this is if the operating system is being booted from a Preboot Execution Environment (PXE) server.

The Windows Boot Manager normally runs under a 1024×768px graphical mode and makes use of the full resolution defined by the EFI firmware wherever possible; it will resort to falling back to resolutions of 800×600px, 640×480px or 80×25 text mode if the graphics adapter is not capable of displaying such resolutions.

Prior to Windows 7, the boot manager was originally capable of invoking the Advanced Boot Options if the F8 key is pressed before Windows starts to boot. This feature is disabled in client releases of Windows since Windows 8 due to the newly-introduced hybrid startup implementation, additionally compounded through the use of a new gateway to the Advanced Boot Options menu via the Settings application, although it can be re-enabled by disabling hybrid startup and modifying the boot menu policy to fall back to the older design.

References[edit | edit source]

  1. Microsoft. Unified Extended Firmware Interface support in Windows Vista, Microsoft Knowledge Base. 26 October 2007.