# Bootmgr

BOOTMGR ist der Bootmanager der Windows-Betriebssysteme von Microsoft ab Windows Vista bzw. Windows Server 2008. Er ist der Nachfolger des zuletzt in Windows XP bzw. Windows Server 2003 eingesetzten NT-Loaders (NTLDR).

## Ablauf

Wird der Computer eingeschaltet, wird zuerst die System-Firmware des Computers geladen, etwa das BIOS (für Basic Input/Output System) oder dessen Nachfolger Unified Extensible Firmware Interface, kurz UEFI bzw. vormals EFI, daher auch oft mit (U)EFI angegeben. Diese Firmware sucht und lädt im Anschluss ein bestimmtes am Computer installiertes Programm. Im Falle des Betriebssystems Windows von Microsoft ist dies der Bootmgr, der nicht nur das eigentliche Betriebssystem starten kann, sondern auch die Auswahl zwischen verschiedenen Installationen sowie erweiterte Optionen dazu bietet.

### BIOS

    Bei einem IBM-PC-kompatiblen Computer mit BIOS liest dieses den Master Boot Record (MBR) der Festplatte oder eines anderen Speichermediums ein und führt ihn aus. Bei einem Standard-MBR, wie er seit MS-DOS 2.0 von Microsoft fast unverändert bei MS-DOS, PC DOS und Windows zum Einsatz kommt, wird durch den dort befindlichen Code dann der Bootsektor im Volume Boot Record (VBR) der als aktiv markierten Partition geladen und ausgeführt. Der Code aus dem Bootsektor des VBR einer Partition, auf der sich eine entsprechende Windows-Installation befindet, ist nun fähig, die Datei bootmgr im Wurzelverzeichnis eines NTFS-Dateisystems zu finden und auszuführen.

### (U)EFI

    Sofern nicht mit dem Compatibility Support Module (CSM) der BIOS-kompatible Modus (siehe oben) zur Anwendung kommt, sind bei (U)EFI die ersten beiden Teile aus dem MBR und VBR überflüssig, da stattdessen nur die GUID-Partitionstabelle (GPT) ausgewertet wird. Der Bootmanager ist in der Datei \EFI\Microsoft\Boot\bootmgfw.efi auf der EFI-Systempartition (ESP) gespeichert und wird von der Firmware direkt geladen und ausgeführt. Als Fallback dienen, nach dem EFI-Standard, \EFI\BOOT\bootia32.efi bei 32-Bit-x86 (IA-32) bzw. \EFI\BOOT\bootx64.efi bei 64-Bit-x86 (x64, genau genommen jedoch weiterhin der IA-32-Architektur zugehörig) – der Fallback-EFI-Bootloader der jeweiligen Architektur erhält bei einer Installation von Windows daher eine Kopie von bootmgfw.efi, wenn diese Dateien nicht schon vorher vorhanden waren.
Die Funktionalität von Bootmgr ist in dessen BIOS- und (U)EFI-Variante jeweils identisch: Der Bootmanager liest die Datei \Boot\BCD ein und zeigt, normalerweise optional bzw. je nach Einstellung, ein Bootmenü zur Auswahl des zu startenden Betriebssystems an. Zudem wird die Disk-Signatur (beim MBR in den Bytes 440–443) mit den gespeicherten Booteinträgen aus der Boot Configuration Data (BCD) verglichen – wurde die Disk-Signatur verändert, verweigert Windows den Start mit einem “winload error”. Das Bootmenü zeigt neben zusätzlichen Startoptionen auch unterschiedliche Windows-Installationen und -Versionen, wenn diese in der Konfiguration (BCD) eingetragen sind. Auch ist es damit möglich, statt Windows ein anderes Programm, etwa das zum Testen des Arbeitsspeichers (RAM) enthaltene Windows Memory Diagnostic Tool, zum Start auszuwählen.
Ist ein Windows-Volume zum Start ausgewählt, übergibt der Bootmanager im Anschluss im Fall eines BIOS oder bei aktiviertem CSM an winload.exe bzw. bei EFI im nativen Modus, also ohne CSM, an winload.efi der jeweiligen Installation. Dieser Windows Loader, deutsch Windows-Ladeprogramm, lädt in der Folge (genau wie der Bootmgr-Vorgänger NTLDR) den Hardware Abstraction Layer (HAL), den Kernel sowie benötigte Kernel-Bibliotheken und Gerätetreiber. Zudem lädt er die Windows-Registrierungsdatenbank. Danach übergibt das Ladeprogramm die Kontrolle an den Windows-Kernel ab, der u a. weitere Systemdienste lädt und so das Betriebssystem startet.

## Boot-Einstellungen

Alle Einstellungen für den Bootloader sind bei BIOS-Systemen in der Datei \Boot\BCD, bei EFI-Systemen in der Datei \EFI\Microsoft\Boot\BCD in der EFI-Systempartition abgelegt. Die Boot Configuration Data ist in eine Binärdatei abgelegt und vom Aufbau her ein Hive der Windows-Registrierungsdatenbank. Microsoft bietet das Kommandozeilen-Tool bcdedit.exe an, um Bootparameter zu ändern. Es ist auch möglich beim Booten von der Windows-CD über den Punkt „Computer reparieren/​Systemwiederherstellungsoptionen“ das Tool bootrec.exe aufzurufen. Alternativ kann das Programm EasyBCD von NeoSmart Technologies oder der Visual BCD Editor benutzt werden, um die BOOTMGR-Einstellungen zu ändern.
Die Details des neuen BCD-Formats sind undokumentiert.

## Vergleich mit dem NT-Loader

BOOTMGR bietet ähnliche Konfigurationsmöglichkeiten wie der NT-Loader:
* Booten von Windows Vista oder Windows 7 mit winload.exe
* Windows wiederherstellen aus dem Ruhezustand mit winresume.exe
* Windows NT 5.1 oder ältere Versionen, die NTLDR nutzen, starten
* Beliebige VBR oder MBR laden
* Beliebige Images laden
Unterschiede:
* Die Boot-Einstellungs-Datei im NT-Loader ist boot.ini im Hauptverzeichnis und lässt sich mit einem Texteditor bearbeiten.