Bootmgr

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
BOOTMGR (Boot Manager)
Entwickler Microsoft
Aktuelle Version siehe Microsoft Windows
Betriebssystem Microsoft Windows ab Windows Vista
Kategorie Bootmanager
Lizenz Proprietär

BOOTMGR ist der Bootloader von Microsoft Windows Vista, Windows Server 2008, Windows 7 und Windows 8. Er unterscheidet sich wesentlich von seinem Vorgänger NTLDR.

Boot-Vorgang BIOS[Bearbeiten]

Wird der Computer eingeschaltet, wird zuerst das BIOS oder das EFI geladen. Im Fall von BIOS liest dieses den MBR der Festplatte oder eines anderen Speichermediums ein und führt ihn aus. Durch den dort befindlichen Code wird dann der Bootsektor der als aktiv markierten Partition geladen und ausgeführt. Der Code aus dem Bootsektor einer Partition, auf der eine entsprechende Windows-Installation installiert wurde, ist nun fähig, die Datei bootmgr im Wurzelverzeichnis eines NTFS-Dateisystems zu finden und auszuführen. Das Programm bootmgr liest die Datei \Boot\BCD ein und zeigt ein Bootmenü zur Auswahl des zu startenden Betriebssystems an. Zudem überprüft der BOOTMGR die Disk-Signatur (Bytes 440-443 im MBR) mit seinen gespeicherten Booteinträgen aus der BCD. Wurde die Disk-Signatur verändert, verweigert Windows den Start mit einem „winload error“.[1]

Boot-Vorgang EFI[Bearbeiten]

Liegt kein BIOS, sondern ein EFI vor, so sind die ersten beiden Teile aus dem MBR und VBR überflüssig. Der ganze BOOTMGR wird im File \Boot\BCD in der EFI-System-Partition gespeichert und von EFI direkt geladen und ausgeführt. BOOTMGR ist hier ein EFI-Programm, liest selbst ebenfalls die boot.ini ein, zeigt ein Bootmenü an und prüft die Disk-Signatur.

Windows-Loader[Bearbeiten]

Sollen Windows Vista oder Windows 7 gestartet werden, so startet BOOTMGR als Nächstes winload.exe. Es lädt in der Folge genau wie NTLDR den HAL, den Kernel und seine Bibliotheken und Gerätetreiber. Zudem lädt er die Windows-Registrierungsdatenbank. Danach übergibt winload.exe die Kontrolle dem Kernel, der sich initialisiert und weitere System-Dienste lädt.

Boot-Einstellungen[Bearbeiten]

Wie bei NTLDR sind alle Einstellungen für den Bootloader in einer Datei gespeichert, aber nicht mehr in der boot.ini, sondern in der Datei \Boot\BCD. Bei einem EFI-System wird BCD in der EFI-System-Partition abgelegt.[2] Diese ist aber keine einfache Textdatei mehr, sondern eine Binärdatei (genauer vom Aufbau her ein Hive) im selben Format wie die ganze Windows-Registrierungsdatenbank. Dies macht es sehr viel komplizierter, Bootparameter zu ändern. Microsoft bietet einzig das nicht ganz einfach zu bedienende 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 benutzt werden, um die BOOTMGR-Einstellungen zu ändern.

BOOTMGR bietet ähnliche Konfigurationsmöglichkeiten wie NTLDR:

  • 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

Die Details des neuen BCD-Formats sind undokumentiert.[3]

Beispiel Windows Vista oder 7[Bearbeiten]

Normalerweise werden alle Optionen, die nötig sind, um das installierte Windows-System zu starten, von der Windows-Installation in der Datei BCD eingetragen. Will man aber mehrere Windows-Systeme oder andere Betriebssysteme auf dem gleichen Computer nutzen, so kommt man schnell in die Lage, dass man die Konfiguration von BOOTMGR selbst vornehmen muss. In der Windows-Befehlszeile kann der Bootmenüeintrag für Windows Vista und 7 mit folgenden Befehlen erstellt werden:

bcdedit /set {current} /d "Windows"
bcdedit /set {####} device partition=X:
bcdedit /displayorder {####} /addlast
bcdedit -v 

Der Eintrag "Windows" bezeichnet den Text der im Bootmenü angezeigt wird. #### ist der Rückgabewert der ersten Befehlszeile. Es handelt sich um die 20-stellige Disk-Signatur. device partition=X: legt das Laufwerk X:\ als Bootpartition fest. /displayorder und /addlast legen die Sortierung der Einträge im Bootmenü fest. Der Befehl bcdedit -v zeigt das Resultat der Konfiguration an.[4]

Beispiel Linux-System[Bearbeiten]

Bei der Installation von Linux schreibt dessen Bootloader (LILO oder GRUB) seinen Bootcode in den MBR (z. B. /dev/sda). Den Inhalt kann man in eine Datei (z.B. linux.img) schreiben und BOOTMGR anweisen, damit das Linux-System zu starten. Den Inhalt des MBR speichert man am besten unter Linux mit dem Befehl: dd if=/dev/sda of=linux.img bs=440 count=1

In der Windows Befehlszeile kann der Bootmenüeintrag für Linux mit folgenden Befehlen erstellt werden:

bcdedit /create /d "Linux" /application bootsector 
bcdedit /set {####} device boot
bcdedit /set {####} path \linux.img
bcdedit /displayorder {####} /addlast

Der Eintrag "Linux" bezeichnet den Text der im Bootmenü angezeigt wird. #### ist der Rückgabewert der ersten Befehlszeile. Es handelt sich um die 20-stellige Disk-Signatur. path \linux.img gibt das zu ladenden Image an. /displayorder und /addlast legen die Sortierung der Einträge im Bootmenü fest.[5]

Wenn der Linux-Bootloader GRUB in den Bootsektor der Linux-Partition (z.B. /dev/sda6) installiert wurde, kann wie folgt ein Booteintrag in Windows Vista bzw. Windows 7 mittels des Kommandos bcdedit eingerichtet werden:

bcdedit /create /d "Linux" /application bootsector 
bcdedit /set {####} device partition=C:
bcdedit /set {####} path \bootlin.bin
bcdedit /displayorder {####} /addlast

Anstatt #### ist wie oben der Rückgabewert der ersten Befehlszeile (bcdedit /create ...) zu verwenden. Im angeführten Beispiel muss sich der Linux Bootsektor in einer Datei mit Namen bootlin.bin im Wurzelverzeichnis des Windowslaufwerkes C: befinden. Der Linux-Bootsektor kann mit dem o .a. Linuxkommando dd in eine Datei kopiert werden (z. B. dd if=/dev/sda6 of=bootlin.bin bs=512 count=1 für den Bootsektor in Partition /dev/sda6).

Siehe auch[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. Multibooters - Dual/Multi Booting With Vista bootmgr and BCD und Disk Signature
  2. Microsoft: Boot Configuration Data Reference Documentation. In: Microsoft Platform SDK. Archiviert vom Original am 15. März 2008. Abgerufen am 14. Dezember 2010. (englisch)
  3. Jonathan de Boyne Pollard: The Windows NT 6 boot process. In: Frequently Given Answers. Abgerufen am 14. Dezember 2010. (englisch)
  4. gries818: How To: Edit the Windows Vista Boot Menu Options. In: www.pronetworks.org/forums. Tue Jul 04, 2006 9:12. Abgerufen am 14. Dezember 2010. (englisch)
  5. Thomas Leichtenstern: Vista-Bootloader für Linux einrichten. In: LinuxUser 4/2007. Abgerufen am 14. Dezember 2010.

Weblinks[Bearbeiten]