Windows Boot in a nutshell – der Windows Startvorgang einfach erklärt

Windows Boot in a nutshell – der Windows Startvorgang einfach erklärt

Bevor man sich an der Windows-Anmeldung als Benutzer einloggen kann, durchläuft der Computer nach dem Anschalten den Bootprozess. Es ist dieser mehrstufige Vorgang, der aus dem Amalgam aus Plastik, Silizium und Metall das vielseitige und leistungsfähige Arbeitsgerät Computer macht. Geht bei irgendeinem der Schritte etwas schief, dann bleibt der PC ein Haufen Plastik, Silizium und Metall ohne Funktion. Da die graphische Benutzeroberfläche fehlt, fällt die Fehlersuche auch denkbar schwer. Aus diesem Grund macht es Sinn, sich den Startprozess etwas genauer anzuschauen. Wenn man weiß, wo etwas schief gehen kann, ist auch die Fehlerbehebung deutlich einfacher.

Booten oder „die Verwandlung des Briefbeschwerers“

Ein Computer ohne geladenes Betriebssystem ist nicht mehr als ein unförmiger, überdimensionaler Briefbeschwerer. Produktiv nutzen lässt er sich nicht. Der Prozess, der dem Briefbeschwerer sein Potenzial entlockt, nennt sich Startvorgang bzw. Bootvorgang. In die Welt der Mechanik übersetzt: Der Bootvorgang ist beim Computer das, was bei Auto das Anlassen ist.

Der Startvorgang ist kein monolithischer Akt. Das Booten, wie man das Starten des Computers auch nennt, ist ein mehrstufiger, aufeinander aufbauender Prozess, bei dem ein Computer seine Fähigkeiten durch das wiederholte Laden und Ausführen von Software erwirbt. Er lernt seine Komponenten kennen, er erwirbt die Fähigkeit, diese anzusprechen und er erfährt, wo er nach Software suchen kann, die ihn um zusätzliche Funktionen erweitert. Denn wie auch ein Mensch für das Verständnis der Prozentrechnung zunächst die Grundrechenarten beherrschen muss, so muss auch der Computer seine Fähigkeiten nach und nach erwerben.

In den frühen Jahren des Computers war das tatsächlich auch anders. Damals waren viele Funktionen in Hardware abgebildet, die heute von Software erledigt werden. Nur ein Beispiel, um das zu verdeutlichen: Das Videospiel Pong aus dem Jahr 1972 bestand ausschließlich aus analogen und digitalen Schaltkreisen ohne Mikroprozessor und Software. Wenn man das Gerät anschaltete, war das Spiel unmittelbar verfügbar. Einen Bootvorgang wie man ihn heute bei PCs und auch bei Handys kennt, gab es nicht. Die viel geringere Flexibilität der Kodierierung von Funktionen in Hardware ist der Grund für den Siegeszug der Software-Kodierung in den darauffolgenden Jahren.

Der Begriff des „Booten“ ist vom englischen Wort bootstrap (deutsch: Stiefelriemen) abgeleitet. Bootstrap loader sind die Programme, die einem Computer beim Start seine grundlegenden Informationen und Fähigkeiten geben. Der englische Ausdruck „to pull oneself up by one’s bootstraps”, der ins Deutsche wohl am besten mit “sich am eigenen Schopfe aus dem Sumpf ziehen” übersetzt werden kann, lenkt die Aufmerksamkeit darauf, dass Computer zwar durch das sequentielle Laden und Ausführen von Software starten, dieser Prozess aber durch einen andersartigen Mechanismus in Gang gesetzt werden muss.

Die zentralen Elemente des Bootvorgangs sind die Firmware – bei älteren Rechnerarchitekturen das BIOS, bei neueren das UEFI –, der Master Boot Record (MBR) bzw. die GUID Partition Table (GPT) sowie der Kernel. Für die meisten englischen Begriffe gibt es keine deutschen Entsprechungen. Und selbst wenn es Übersetzungen gibt, so werden diese selten verwendet. Daher verwenden wir in diesem Beitrag konsequent die englischen Begrifflichkeiten.

Die Abbildung stellte diese Elemente in strukturierter Form für zwei unterschiedliche Systeme dar: Die linke Seite zeigt sie für ein Single-Boot System, d.h. für einen Computer mit einem einzigen Betriebssystem. In der Abbildung ist das Windows. Beim Computerstart bootet der Rechner automatisch dieses Betriebssystem. Rechts ist ein Dual-Boot System dargestellt, also ein Computer mit zwei bootfähige Betriebssysteme. Nach dem Anschalten hat der Nutzer die Wahl, entweder das eine oder das andere Betriebssystem zu starten. Buddy von datamate ist ein solches Dual-Boot System. Auf ihm sind Windows 10 und Ubuntu Linux installiert und beide gleichermaßen funktionsfähig.

Akteure des Windows Startvorgangs

Bootvorgang – Schritt-für-Schritt

Die Details des Bootvorgangs sind bei MacOS anders als bei Linux, bei Android anders als bei iOS und auch bei alten und neuen Windows-Versionen gibt es Unterschiede im Startvorgang. So wurden mit Windows Vista signifikante Änderungen am Bootprozess von Windows eingeführt, um den Start von Windows schneller, flexibler und zuverlässiger zu machen.

Die Grundzüge des Bootvorgangs sind aber systemübergreifend gleichgelagert: Zunächst erlernt der Rechner beim Booten, wie er mit seinen unterschiedlichen Komponenten wie Festplatten und Tastatur kommunizieren kann. Dann erfährt er von der Existenz von Partitionen und lernt die Bedeutung von Dateisystemen kennen. Am Ende des Bootprozesses lädt er den Betriebssystemkernel sowie Treiber und Programme. Die genaue Abfolge, die Rolle der einzelnen Etappen und die „erlernten“ Fähigkeiten werden nachfolgend für einen Computer mit MBR-formatiertem Speichermedium und aktiviertem Compatability Support Module (CSM) dargestellt. (Bei einem GPT-formatierten Datenträger weicht der Bootprozess von dem hier dargestellten Prozess ab.)

Die nachfolgenden Erläuterungen gelten für das etwas betagte Windows 7 genauso wie für das aktuelle Windows 10. Seit den Änderungen, die mit Windows Vista am Startprozess vorgenommen wurden, ist der Bootvorgang der Windows Betriebssysteme stabil. Die Schritte und die beteiligten Programme sind seitdem unverändert.

Schritt 1: Aufruf des BIOS

Das Basic Input Output System (BIOS) ist der Computercode, der sich in einem nicht-volatilen Speicher auf dem Mainboard des Rechners befindet und unmittelbar nach dem Start des Computers ausgeführt wird. Aufgrund seines Speicherorts wird das BIOS auch als Firmware bezeichnet. Das Kofferwort Firmware setzt sich aus dem englischen Begriff firm (deutsch: stabil bzw. unveränderlich) und Software zusammen.

Bei frühen PCs war das BIOS auf Read-Only Memory (ROM) Chips gespeichert. Die auf solchen Chips gespeicherten Daten lassen sich nach der Produktion gar nicht mehr (z. B. Masken-ROM) oder nur mit großem technischen Aufwand ändern (z. B. EEPROMs). Heute befindet sich die Firmware meist auf Flash-Speichern. Sie bieten gegenüber klassischen Festspeichern den Vorteil, dass sie beschrieben werden können, ohne aus dem Computer entfernt zu werden. So lassen sich zusätzliche Funktionen nachrüsten oder Bugs (d.h. Fehler im Programmcode) beheben.

Ganz generell gesprochen, versetzt die Firmware den Rechner in Betriebsbereitschaft und übergibt dann die Kontrolle über die Hardware an ein Programm, das von einem bootfähigen Datenträger geladen wird. Welcher Datenträger das im Falle mehrerer montierter Datenträger ist, muss dem BIOS mitgeteilt werden. Nicht jedes Laufwerk ist bootfähig. Alte BIOS-Versionen z. B. konnten beispielsweise keine USB-Datenträger ansprechen und damit auch nicht von ihnen booten.

Etwas detaillierter betrachtet führt das BIOS die folgenden Aufgaben aus:

  • Abfrage des BIOS Passworts (insofern gesetzt)
  • Test der Hardware (sogenannter Power-On Self-Test, kurz POST)
  • Initialisierung der Hardware
  • Aufruf der BIOSe anderer Komponenten (z. B. Grafikkarte, RAID-Controller)
  • Ermittlung des Bootlaufwerks
  • Prüfung der Bootsektor-Signatur
  • Laden und Ausführen des MBRs des Bootlaufwerks

Mit dem Aufruf des BIOS und der Übergabe an den Bootloader im MBR hat der Computer Grundkenntnisse über sich erworben. So hat er z. B. gelernt, wieviel Arbeitsspeicher er hat und wie er seine Festplatten ansprechen kann. Ein flexibles Arbeitsgerät ist er damit noch nicht. Aber der Grundstein für mehr ist damit gelegt. Und: Der Bootvorgang ist ja auch noch nicht abgeschlossen.

Schritt 2: Ausführung des Master Boot Records (MBR)

Speichermedien sind in sogenannte Blöcke oder Sektoren eingeteilt. Das gilt für klassische Festplatten genauso wie für moderne Solid State Drives. Über die Adressen der Blöcke können Daten auf der Festplatte lokalisiert werden und der Computer kann auf Sie zugreifen. Der Master Boot Record (MBR) ist ein besonderer Sektor. Er ist der erste Sektor auf einem Datenträger und damit recht einfach zu lokalisieren. Auf großen wie auf kleinen Speichermedien existiert er. (Sprachlich wird der MBR als Sektor auf einem Datenträger häufig mit dem darin enthaltenen Code gleichgesetzt, auch wenn dies sachlich nicht ganz korrekt ist.)

Der MBR (also der Maschinencode darin) hat eine Doppelfunktion inne: Einerseits ist er ein Bootloader und andererseits eine Partitionstabelle. Als Bootloader bringt er den notwendigen Programmcode in Maschinensprache mit, um die nächsten Startphase auszuführen. In der Partitionstabelle sind die Informationen über die auf dem Datenträger angelegten Partitionen festgehalten wie z. B. Startblock, Endblock, Dateisystem und weitere. Es sind die Partitionsinformationen, die dafür sorgen, dass auf einer Festplatte mehrere Laufwerke mit unterschiedlichen Dateisystemen existieren können. Eine weitere wichtige Information in der Partitionstabelle ist der Bootstatus. Eine aktive Partition ist eine, von der gebootet werden soll.

Struktur des Master Boot Records

Der MBR ist, wie jeder andere Sektor auf einer Festplatte, normalerweise nur 512 Byte groß (also 512 x 8 Bits, d.h. ein 0 oder eine 1). Selbst wenn der MBR also voll mit ausführbarem Maschinencode wäre, er würde nur eine sehr überschaubare Menge an Anweisungen an den Computer enthalten. Tatsächlich ist der für den Bootloader zur Verfügung stehende Speicher mit 440 Bytes deutlich geringer als die Größe des Sektors. Der Hauptgrund dafür sind die 64 Bytes, die die Partitionstabelle einnimmt. Dem Umfang des Maschinencodes entsprechend, ist der Funktionsumfang des MBRs auch durchaus überschaubar: Die Partitionstabelle auszuwerten, die erste aktive Partition zu finden und dann den Volume Boot Record der aktiven Partition zu laden und auszuführen.

Die Funktion des MBRs ist völlig betriebssystemunabhängig. Die weiteren Erläuterungen basieren auf einem Windows-Betriebssystem, mit einem MBR kann aber genauso ein Linux System gestartet werden.

Jeder Partitionseintrag in der Partitionstabelle hat eine Länge von 16 Byte. Die Partitionstabelle des MBRs kann in ihren 64 Bytes die Informationen von insgesamt vier primären oder 3 primären und einer erweiterten Partition abspeichern. Durch die erweiterte Partition lassen sich weitere logische Partitionen erstellen. Die damit einhergehenden Einschränkungen waren ein wichtiger Grund für seine Ablösung seit dem Jahr 2010 – vor allem in Windows Systemen. Das GPT-Partitionsschema erlaubt deutlich mehr Partitionen.

Schritt 3: Ausführung des Volume Boot Records (VBR)

Was der Master Boot Record für den Datenträger ist, ist der Volume Boot Record (VBR) für eine Partition: der erste Sektor in einer Partition. Wie jeder andere Sektor ist auch er bei einer normalen Formatierung nur 512 Byte groß.

Im VBR der aktiven Windows Partition befindet sich der Windows Bootloader. Durch die Ausführung dessen Codes „lernt“ der Computer die Nutzung eines Dateisystems kennen. Etwas praktischer ausgedrückt heißt das, dass er erfährt, was Dateinamen und Verzeichnisse sind und wie er diese auf der Partition findet. Bis zu diesem Zeitpunkt kannte der Rechner keine Dateinamen sondern nur Sektorenadressen wie sie auch in der Partitionstabelle verwendet werden.

Ausgestattet mit dieser neuen Fähigkeit sucht der Windows Bootloader danach im Root-Verzeichnis (d.h. das oberste Verzeichnis) der aktiven Partition nach der Datei bootmgr (keine Dateiendung) und führt diese Datei aus. Diese Datei enthält Maschinencode, die direkt vom Prozessor verarbeitet werden kann.

Schritt 4: Start des Windows Boot Managers BOOTMGR

Der Windows Boot Manager ist ein Programm, das die Möglichkeit bereitstellt, den Bootvorgang in die eine oder andere Richtung zu lenken. Sind auf einem Rechner mehrere Betriebssysteme installiert, dann kann man über den Bootmanager das gewünschte Betriebssystem auswählen. Die Betriebssysteme können entweder in unterschiedlichen Partitionen oder auf unterschiedlichen Datenträgern liegen.

Bis Windows XP hieß der Windows Boot Manager NTLDR. Mit Windows Vista wurde der Bootmanager massiv umgebaut und firmiert heute unter dem Namen BOOTMGR. Der BOOTMGR steckt auch in jedem Windows 10 System drin.

Einer der größten Unterschiede zwischen NTLDR und dem BOOTMGR ist die Art und Weise, wie die Konfigurationsinformationen gespeichert werden. NTLDR verwendete eine einfache Textdatei mit Namen boot.ini. Der neue Windows Bootmanager speichert diese Informationen in einer Datenbank, die die gleiche Struktur hat wie die Windows Registrierungsdatenbank (also ein sogenannter Hive). Der Speicherort dieser Datenbank befindet sich im Verzeichnis \BOOT\BCD auf der aktiven Partition.

Wird BOOTMGR also vom Windows Bootloader im VBR ausgeführt, dann lädt der Bootmanager die Datenbank und zeigt die Bootoptionen auf dem Bildschirm an. Wenn es nur eine Bootoption gibt, dann ist der Bootmanager normalerweise so eingestellt, dass er die Auswahl gar nicht erst anzeigt und automatisch das einzige verfügbare Windows Betriebssystem startet. Daher kriegen die meisten Nutzer gar nichts von BOOTMGR mit. Wird im Bootmanager ein aktuelles Windows-Betriebssystem ausgewählt, dann wird im Verzeichnis %WINDIR%\System32 der Partition des ausgewählten Betriebssystems die Datei winload.exe geladen und ausgeführt.

Diese Stufe des Bootprozesses ist aus unserer Erfahrung die heikelste: Zum einen kommt es immer wieder vor, dass Benutzer die Datei bootmgr und die dazugehörige Datenbank löschen. Auch können die Informationen in der BCD-Datenbank falsch oder die gesamte Datenbank korrupt sein. Eine weitere Stolperstelle ist der Abgleich der Datenträgersignatur des BOOTMGR. Der Windows Bootmanager vergleicht die Datenträgersignatur im MBR mit der in der BCD gespeicherten Signatur. Bei einem Mismatch verweigert BOOTMGR mit der Fehlermeldung „winload error“ den Start.

Schritt 5: Laden des Windows Loaders winload.exe

Die winload.exe ist, wie andere EXE-Dateien auch, eine Datei, die durch den Mikroprozessor ausführbaren Maschinencode enthält. Sie enthält die Instruktionen, dass für die unterschiedlichen Komponenten des Systems Gerätetreiber geladen werden. Dies ist die Voraussetzung dafür, dass das Windows-Betriebssystem mit seiner einheitlichen Codebasis auf unterschiedlicher Hardware ausgeführt werden kann (Hardware Abstraction Layer). Sind die Treiber für die Komponenten geladen, dann kann winload.exe auch den hardware-unabhängigen Kernel und die Registrierungsdatenbank laden. Im Anschluss daran wird die Kontrolle über das System an den Kernel übergeben.

Schritt 6: Systemkontrolle durch den Kernel und Abschluss des Bootvorgangs

Mit der Kontrollübergabe an den Kernel ist der konfigurationsunabhängige Teil des Startvorgangs abgeschlossen. Das Betriebssystem ist gestartet und läuft.

Ganz abgeschlossen ist der Startvorgang aber noch nicht. Weitere Programme, die nun noch geladen werden, sind vor allem die zahlreichen Windows Services, die im Hintergrund und ohne sichtbares Programmfenster ausgeführt werden, sowie die Programme, die im Autostart von Windows stehen. Services genauso wie autogestartete Programme lassen sich aber über die Systemkonfiguration bzw. den Task-Manager konfigurieren.

Wer genauer wissen will, welche Programme, Dienste, Treiber, Add-ins und weitere Komponenten vom Kernel geladen und ausgeführt werden, der wird mit dem Programm AutoRuns von Sysinternals, einer Tochtergesellschaft von Microsoft, seine Neugier stillen können. Autoruns analysiert das System und listet sämtliche Elemente auf, die vom Betriebssystem automatisch gestartet werden.

Grundsätzlich gilt, umso weniger Programme und Code ausgeführt werden muss, desto schneller erscheint die Windows Anmeldemaske, nach deren Passage man den Computer zum Surfen, E-Mail schreiben, Computer spielen und vielem anderen gebrauchen kann. Beim Ausmisten des Autostarts sollte man aber sehr vorsichtig vorgehen. Ein Element zu viel im Autostart verlangsamt den Bootprozess nur unwesentlich, ein autogestartetes Programm zu wenig kann aber zu einem ungewollten Systemverhalten führen.

UEFI-Boot wie MBR-Bootvorgang

Schritt-für-Schritt erwirbt ein Computer beim Booten seine Fähigkeiten. Der Bootprozess wird dabei durch die Tatsache verkompliziert, dass einerseits aus Kompatibilitätsgründen alte Konventionen beibehalten werden müsen (z. B. Startprogramm im ersten Sektor) und andererseits Flexibilitätsanforderungen (z. B. unterschiedliche Datenträgerkonfigurationen) abzubilden sind. Der Generationenwechsel bei der Firmware hat zu Änderungen geführt, die Struktur des Bootvorgangs als schrittweisen Prozess aber nicht beseitigt. Auch bei UEFI-Computern wird ein Startprogramm gestartet, das in Folge die Kontrolle an ein betriebssystemspezifischen Bootloader übergibt.

In jedem Schritt kann der Bootvorgang aus dem Tritt kommen. Das zielgerichtete Troubleshooting erfordert ein grundlegendes Verständnisses des Prozesses. Das Ziel dieses Artikels ist es, mit der Illustration der grundlegenden Mechanik Hilfestellung bei der Problemlösung zu bieten.

Glossar

Maschinensprache: die Form von Programmcode, der vom Prozessor eines Computers direkt ausgeführt werden kann, d.h. eine für den Computer verständliche Folge von Bits. Welche Bitfolgen und deren Struktur für einen Prozessor verständlich sind, ist in Form eines Befehlssatzes für jeden Prozessortyp definiert.

Partition: ein logischer Datenträger, d.h. ein separater Bereich auf einem Speichermedium mit eigenem Dateisystem, so dass es für das Betriebssystem so aussieht, als ob es sich um einen separaten Datenträger handelt.

geschrieben von

Ralf Dyllick-Brenzinger