„Bootsect“ hilft beim Rechnerstart
17. Juli 2011Was helfen alle Tipps und Tricks, die ein laufendes Windows-System verbessern, reparieren oder auch nur überwachen, wenn dieses System schon den Start verweigert? Tools-Experte Mark Minasi zeigt, wie der Administrator in solchen Fällen ein Windows-Bordmittel einsetzen kann: Das Kommandozeilen-Programm „bootsect“.
Die meisten Systemprofis und Administratoren kennen Windows PE und wissen, wie sie mit Hilfe dieser Software ein System, das den Start verweigert, retten und häufig auch wieder reparieren können. Aber es gibt immer wieder Fälle, in denen es leider nicht ausreicht, mit Hilfe eines „Re-Imagings“ zu arbeiten: Das Betriebssystem ist ja da, es startet nur nicht und aus vielfältigen Gründen will der Systemverwalter vielleicht gerade nicht wieder das Image aufspielen.
Wer in diesen Fällen die Abläufe beim Booten des Betriebssystems versteht und zudem einige der Werkzeuge kennt, die Windows zum Reparieren der Boot-Bereiche anbietet, kann vielfach schneller wieder zu einem gebrauchsfähigen System kommen. Zudem eignen sich das Tool, das wir in diesem Artikel vorstellen, auch dazu, ein Boot-fähiges System grundsätzlich und quasi „von Null“ aufzubauen.
Beim Start schaut das Windows-Betriebssystem zunächst in den BIOS-Daten nach, in welcher Reihenfolge es welche Geräte beim Start verwenden soll. Tauchen also bereits beim Start des Systems Probleme auf, so ist dies sicher ein guter Platz, um nach deren Ursachen zu suchen. Es dürfte den meisten Systemadministratoren ohne Zweifel bekannt sein, dass eine Boot-fähige Festplatte einen speziellen Sektor benötigt, der als MBR (Master Boot Record) bezeichnet wird.
Dort findet sich neben dem Programmcode auch eine Tabelle, in der das System die Orte abspeichert, an denen die Partitionen auf der Platte zu finden sind. Das BIOS lädt sowohl den Programmcode als auch diese Tabelle in den RAM-Bereich des Rechners und führt dann den Code aus. Wenn dieser Programmcode allerdings beschädigt ist oder beispielsweise nur aus Nullen besteht, so wird diese Versuch des BIOS entweder zu einem Bluescreen oder aber zum Aufhängen des Rechners führen.
Geht es also darum, den Code im MBR-Bereich wiederherzustellen, so steht einem Systemverwalter das Kommandozeilen-Programm Bootsect (bootsect.exe) zur Verfügung. Dieses Programm findet er allerdings nicht auf dem installierten Windows-7-System, sondern in seiner Windows-PE-Installation oder auch auf der Originaldisk des Betriebssystems. Dort ist das Programm im Verzeichnis „Boot“ abgelegt.
Grundsätzlich dient dieses Programm dazu, den Master-Startcode von Festplattenpartitionen für den Wechsel zwischen BOOTMGR und NTLDR zu aktualisieren. Aber natürlich kann der Anwender mit seiner Hilfe auch den Bootsektor auf seinem Computer wiederherstellen. Das Programm ersetzt dabei die früher zum Einsatz kommenden Programme „FixFAT“ und „FixNTFS“. Der Befehl besitzt die folgende Syntax:
bootsect /nt60 <Laufwerksbuchstabe> /mbr
Grundsätzlich ist diese Syntax aber etwas verwirrend, da Laufwerksbuchstaben ja in der Regel für Partitionen und Volumen stehen – diese besitzen aber keinen MBR. Ein MBR ist nur auf physikalischen Festplatten zu finden. Aber um den Anwender die Arbeit zu erleichtern, nimmt das Programm standardmäßig die Laufwerksbuchstaben an, stellt dann fest auf welcher physikalischen Festplatte sich das jeweilige Laufwerke/die Partition befindet und stellt dann den MBR-Code auf dieser physikalischen Platte wieder her.
Um das beispielhaft zu demonstrieren, gehen wir nun davon aus, dass ein Windows-PE-System gebootet und mit einem externen Laufwerk verbunden wurde. Dieses Laufwerk taucht dann beispielsweise unter dem Buchstaben „G:“ im System auf. Weiterhin gehen wir bei diesem Beispiel davon aus, dass diese Platte in unserem System als Platte 5 adressiert wird. Mit der folgenden Befehlszeile wird das Kommando „bootsect.exe“ dazu aufgefordert, den Bootsektor dieser Platte zu überschreiben:
bootsect /nt60 G: /mbr
Das Programm wird dann mit der folgenden Ausgabe antworten:
\\??\PhysicalDrive5
Successfully updated disk bootcode
Bootcode was successfully updated on at least one volume.
Das Programm hat in unserem Beispiel automatisch festgestellt, dass sich der Laufwerksbuchtstabe „G:“ auf dem Laufwerk mit der Nummer „5“ befindet und hat den MBR-Code der Platte entsprechend repariert beziehungsweise wiederhergestellt.
Unser Autor hat dabei einen guten Grund dafür, dass er immer explizit vom MBR-Code redet und nicht einfach nur vom Master Boot Record: Der gesamte Bereich des MBR umfasst 512 Byte, wobei ab dem Byte 446 die Tabelle mit den Daten zu den Partitionen startet. Aus diesem Grund schreibt das Programm „bootsect“ auch nur den Teil zurück, der den Code betrifft. Würde das Programm auch den Bereich mit der Partition-Tabelle überschreibe, so würde die Festplatte nicht mehr „wissen“, wo sich die einzelnen Partitionen befinden. Das käme im Prinzip dem Löschen der kompletten Platte gleich, da so kein Zugriff mehr möglich wäre.
Hat der Rechner einmal den MBR-Code geladen, so wird dieser dann auch vom Rechner ausgeführt. Dieser Code hat dabei drei grundlegende Aufgaben zu erfüllen:
- Er muss feststellen, welche der Partitionen auf der Platte „aktiv“ (und damit Boot-fähig) ist.
- Er muss den ersten Sektor dieser Partition in das RAM des Systems laden.
- Und er muss schließlich die CPU anweisen, diesen Code im RAM auszuführen.
Wir wollen diesen ersten Sektor einer aktiven Windows-Partition als den Windows Boot Record (WBR) bezeichnen. Dieser Bereich wird in vielen Artikeln und Berichten gerne ebenfalls als MBR bezeichnet, was aber falsch ist. Schließlich existieren zwei unterschiedliche Bereiche mit der Größe eines Sektors, die jeweils ein Stück ausführbaren Codes enthalten, auf einer Boot-fähigen Platte: Der MBR am Anfang der physikalischen Platte und der hier als WBR bezeichnete Bereich, der sich am Anfang der aktiven Partition befindet.
Beim WBR handelt es sich ebenso wie beim MBR um einen nur 512 Byte großen Bereich. Der Programmcode in diesem Bereich findet, lädt und führt eine Datei mit dem Namen Ntldr (wenn wir uns auf einem Windows-System mit einer Version von NT 3.1 bis Windows Server 2003 R2 befinden) oder ein File mit der Bezeichnung Bootmgr (bei den Systemen Windows Vista, Windows 7 und Windows Server 2008 und später) aus. Das ist in Prinzip eine ganz einfache Aufgabe, aber auch hier gilt: Wenn der WBR beschädigt ist, wird das System mit einem Bluescreen oder dem Aufhängen beim Start reagieren. Auch hier kann Bootsect helfen und den beschädigten WBR-Bereich wieder reparieren:
bootsect /nt60 <Laufwerksbuchstabe>
Wer der entsprechenden Rechner von einem Windows-PE-System aus startet, wird hier zumeist den Buchstaben „C:“ für das Windows-Laufwerk verwenden. In diesem Zusammenhang soll noch eine Option erläutert werden: Der Schalter „/nt60“ wendet den mit dem „Bootmgr“ kompatiblen Masterstartcode auf das entsprechende Laufwerk an, weshalb es sich hier um Windows Vista oder höher handeln muss.
Soll der Befehl auf Systeme mit einer vorherigen Windows-Versionen wie Windows XP zum Einsatz kommen, so muss dazu der Schalter „/nt52“ gewählt werden. Wer beispielsweise ein USB-Geräte einsetzt, von dem eigentlich ein Windows-System booten sollte, dies aber nicht tut, kann das Problem im vielen Fällen durch den Aufruf von „Bootsect /nt60“ beheben.
Ist soweit alles in Ordnung, lädt WBR den „Bootmgr“ was uns zum nächsten Punkt führt, den es bei der Überprüfung auf die Boot-Fähigkeit einer Platte/eines Gerätes zu untersuchen gilt: Existiert auf dem entsprechenden „C:“-Laufwerk wirklich einen Datei mit dem Namen „Bootmgr“?
Ein Systemverwalter sollte dies untersuchen, während er sich noch in der Windows-PE-Umgebung befindet. Dabei sollte er allerdings auf jeden Fall daran denken, auch nach versteckten Dateien zu suchen:
dir c:\bootmgr /ah
Sollte sich dabei herausstellen, dass die Datei nicht vorhanden ist, so kann sie ohne Probleme von Window-PE-Version oder von jeder Windows-7-Version kopiert werden.