Bootmanager: Grundlagen

16.02.2001 von WOLFGANG NEFZGER 
Im Prinzip ist der Umgang mit Partitionen und mehreren Betriebssystemen einfach. In der Praxis gibt es jedoch einige Klippen zu umschiffen. Wir zeigen Ihnen, worauf es ankommt.

Die Welt der Partitionen und Festplatten hat eine lange Geschichte. Schon in den erstens PCs Anfang der 80er-Jahre legte IBM die Grundlagen. Vom Prinzip her hat sich seitdem nichts mehr geändert. Dabei hat die Hardware in dieser Zeit riesige Fortschritte gemacht. Aus Festplatten mit 5 MByte sind mittlerweile 50 GByte und mehr geworden. Um dem Rechnung zu tragen, wurden Hard- und Softwarestandards an vielen Stellen aufgebohrt, teilweise ersetzt oder halbherzig erweitert.

Das führt oft zu kuriosen Konstellationen, die für sich genommen einfach nur unlogisch erscheinen, sich aber aus der Geschichte gut erklären lassen.

Warum kann zum Beispiel das DOS- und Windows-Hilfsprogramm FDisk nur eine primäre und eine erweiterte Partition pro Festplatte erzeugen? Und das obwohl die aktuellen Microsoft-Betriebssysteme sehr wohl mehr Partitionen verkraften? Warum müssen die Startdateien der allermeisten Betriebssysteme innerhalb der ersten acht GByte beziehungsweise 1024 Zylinder liegen? Diese und andere Fragen beantwortet der folgende Beitrag.

Einen detaillierten Test von 19 kostenlosen und kommerziellen Bootmanagern lesen Sie in unserem Beitrag Bootmanager im Test.

Festplattenaufbau: Zylinder, Köpfe, Sektoren

Wer sich näher mit Festplatten beschäftigt, stößt schnell auf Fachbegriffe, die Kenntnisse über deren mechanischen Aufbau verlangen. Die Grundstruktur aller Festplatten ist gleich: Metallscheiben mit magnetisierbarer Oberfläche rotieren mit hoher Geschwindigkeit in einem hermetisch abgeschlossen Gehäuse. Die Bits sind als Wechsel in der Magnetisierung der Scheibenoberfläche gespeichert. Schreib-/Leseköpfe (Engl. Heads) bewegen sich dicht über der Oberfläche nach innen und außen.

Die Daten sind auf kreisförmigen Spuren abgelegt, die man auch als Tracks bezeichnet. Diese Anordnung unterscheidet sich grundlegend von der bei Schallplatten und CDs verwendeten: Hier gibt es pro Seite nur eine lange Aufzeichnungsspur in Form einer Spirale.

Jede Spur einer Festplatte ist wiederum in einzelne Abschnitte aufgeteilt, den Sektoren (Engl. Sectors). Jeder Sektor fasst 512 Byte. Die Ansteuerung eines Sektors erfolgt über die Elektronik der Festplatte, der steuernde PC hat mit der Aufteilung in Sektoren nichts zu tun.

Die meisten Festplatten benutzen die Ober- und Unterseite der Scheiben und verfügen über mehrere Magnetscheiben. Die Schreib-/Leseköpfe für alle Oberflächen sind als Einheit montiert, sie können sich nicht unabhängig bewegen. Deshalb liegen die Spuren auf den Plattenoberflächen exakt übereinander. Ein Satz von übereinander liegenden Spuren trägt den Namen Zylinder (Engl. Cylinder).

Die drei Begriffe Zylinder (oder Spur), Kopf und Sektor spielen bei der Verwaltung von Festplatten eine zentrale Rolle. Denn über die Angabe dieser drei Werte lässt sich jede Stelle auf der Festplatte eindeutig adressieren. Diese CHS-Notation war bis etwa 1997 Standard und ist auch heute noch für Festplatten kleiner 8 GByte gültig. Die Zählweise beginnt bei Spuren und Köpfen bei 0, Sektoren starten bei 1. Statt des Begriffs Head ist oft auch Seite im Gebrauch, denn jeder Schreib-/Lesekopf korrespondiert ja mit einer Seite einer Magnetscheibe der Festplatte.

Der Master Boot Record (MBR)

Damit überhaupt mehrere Betriebssysteme auf einer Festplatte Platz finden, muss sich diese in Bereiche aufteilen lassen. Und die exakte Position dieser Bereiche muss an einer allgemein bekannten Stelle der Festplatte gespeichert sein: in Spur 0, Seite 0, Sektor 1. Dort ist bei jeder Festplatte im PC der Master Boot Record, kurz MBR, gespeichert.

Er enthält zwei Dinge: erstens ein Programm namens Master-Boot-Routine. Es wird während des PC-Starts ausgeführt. Zweitens eine Partitionstabelle mit Platz für Informationen über vier Partitionen. Jeder Partitionseintrag hat 16 Byte zur Verfügung. Die letzten zwei Byte im 512-Byte-großen MBR müssen immer den Wert AA55h enthalten, die den MBR als solchen identifizieren. Sonst könnten manche Programme den Sektor nicht als MBR akzeptieren.

Die Partitionstabelle

Ein einzelner Eintrag in einer Partitionstabelle hat ebenfalls einen festen Aufbau und ist 16 Byte lang.

In Byte 0 zeigt der Wert 80h (das oberste Bit ist gesetzt) an, dass diese Partition die Bootpartition mit einem Betriebssystem ist. Die Master-Boot-Routine wertet dieses Byte aus, um das Betriebssystem zu finden.

Die Bytes 1 bis 3 enthalten die Startposition der Partition: Kopf, Spur und Sektor. Das gilt für Festplatten bis zu einer Größe von 8 GByte. Größere Festplatten verwenden stattdessen die Bytes ab Position 7. Hier ist jeweils als 32-Bit-Zahl die Position des erstens Sektors der Partition (bezogen auf den Plattenanfang) und die Länge der Partition gespeichert. Mit den 32-Bit-Adressen sind Festplattengrößen bis 2048 GByte möglich.

Das Byte 4 spielt eine wichtige Rolle: Es enthält die Typkennung der Partition. Jedes Betriebssystem benutzt ein Dateisystem, um seine Verzeichnisse und Dateien auf der Festplatte zu organisieren. Der Typ gibt an, um welche Art Dateisystem es sich handelt. Die gebräuchlichsten Systeme sind:

Manche Betriebssysteme wie Windows NT/2000 kümmern sich nicht um die Typkennung. Sie analysieren den Inhalt der Partition (genau gesagt: deren Partitionssektor/Bootsektor) und binden eine erkannte Partition, auf die sie zugreifen können, automatisch ein.

Es ist nicht notwendig, dass die Reihenfolge in der Partitionstabelle der physikalischen Reihenfolge auf der Festplatte entspricht. Die erste Partition im MBR kann durchaus in der Mitte der Festplatte bei Spur 600 beginnen.

Primäre und erweiterte Partitionen

Insgesamt bietet die Partitionstabelle des MBR Platz für vier Partitionen. Grundsätzlich gibt es zwei verschiedene Arten von Partitionen: primäre und erweiterte.

Eine primäre Partition verweist direkt auf einen Bereich der Festplatte, der Dateien enthält. Meistens sind Betriebssysteme in primären Partitionen installiert, vor allem Microsoft-Systeme setzen dies sogar zwingend voraus. Die Definition ist etwas umständlich: Eine primäre Partition ist immer in der Partitionstabelle des MBR eingetragen und nicht durch die Typkennung als erweiterte Partition ausgewiesen.

Eine erweiterte Partition enthält im Gegensatz dazu keine Dateien, sondern ist quasi ein Container für weitere Partitionen. Die Typkennungen 05h oder 0Fh weisen eine solche erweiterte Partition aus. Eine Partition innerhalb einer erweiterten Partition ist ein logisches Laufwerk. Durch diesen Kniff ist es möglich, mehr als vier Partitionen pro Festplatte zu realisieren. Für Microsoft-Betriebssysteme sind insgesamt bis zu 23 logische Laufwerke erlaubt, denn mehr Laufwerksbuchstaben ab C gibt es nicht.

Trickreich: Erweiterte Partitionen

Jede erweiterte Partition enthält einen Partitionssektor, der in seinem Aufbau exakt dem MBR entspricht. Allerdings fehlt hier die Master-Boot-Routine, es wird nur die Partitionstabelle genutzt. In diesem Partitionssektor haben wiederum vier Partitionen Platz. Wie erreicht man dann aber 23 logische Laufwerke? Eine erweiterte Partition nutzt immer nur zwei Einträge ihrer Partitionstabelle: Der Erste beschreibt die Position des logischen Laufwerks, der Zweite die Position einer zusätzlichen erweiterten Partition. Diese wiederum bietet Platz für ein logisches Laufwerk und so fort. So entsteht quasi eine Kette von erweiterten Partitionen, die jeweils ein logisches Laufwerk enthalten. Dabei ist die erste erweiterte Partition (die im MBR definiert ist) so groß, dass die anderen Partitionen darin Platz finden.

Wer mit den Mitteln von DOS/Windows mehr als eine primäre oder erweiterte Partition auf einer Festplatte anlegen will, erlebt eine Überraschung: FDisk verweigert den Dienst. Ursprünglich konnte DOS nämlich nur mit einer primären Partition arbeiten. Seit DOS 5.0 ist bei allen Microsoft-Betriebssystemen diese Beschränkung aufgehoben, sie kommen mit mehreren primären und erweiterten Partitionen zurecht. FDisk hat die Limitierung aber beibehalten. Deshalb müssen Sie für eine komplexe Aufteilung der Platte auf andere Tools wie XFDisk, Ranish Partition Manager oder fdisk von Linux ausweichen.

Der Bootsektor

Innerhalb einer Partition gibt es einen weiteren Sektor, dessen Position immer gleich ist: der Bootsektor. Er liegt im ersten Sektor der Partition und ist damit leicht über die Einträge in der Partitionstabelle zu ermitteln. Jedes Betriebssystem verwendet hier seinen eigenen Aufbau, lediglich einige Daten sind immer identisch. Bei Microsoft-Betriebssystemen ist der Bootsektor weit gehend gleich, im Folgenden deshalb eine Beschreibung der Variante von Windows 98.

Bei allen Systemen haben die Bytes 0 bis 2 dieselbe Funktion. Sie enthalten einen Sprungbefehl in Maschinensprache, der zur eigentlichen Bootroutine irgendwo im Bootsektor springt. Der restliche Aufbau hängt ganz vom jeweiligen Betriebssystem ab.

In den 8 Byte ab Position 3 ist eine Kennzeichnung des Betriebssystems samt Versionsnummer untergebracht. Bei Windows 95b ist das beispielsweise MSWIN4.1. Der Name der Partition (Label), den zum Beispiel der Explorer anzeigt, ist in 11 Byte ab Position 39 gespeichert.

Die Bootroutine hat die Aufgabe, das eigentliche Betriebssystem, wie DOS, Windows oder Linux, zu laden. Wie es dabei vorgeht, hängt ganz vom Betriebssystem ab. Bei Linux lädt typischerweise LILO das System. Bei der Konfiguration ermittelt das System die Position der Systemdateien auf der Festplatte und speichert sie im Bootcode. Deshalb startet Linux normalerweise nicht mehr, wenn Sie die Partition an eine andere Stelle kopieren. Dann muss erst LILO wieder aktualisiert werden.

8-GByte-Grenze des BIOS

Immer wieder stolpert man bei Festplatten und Bootmanagern über die magische 8-GByte-Grenze oder den Hinweis, dass eine Partition innerhalb der ersten 1024 Zylinder liegen müsse. Was steckt dahinter und welche Konsequenzen ergeben sich daraus? Die folgenden Ausführungen gelten nur für IDE-Festplatten, bei SCSI-Festplatten mit ihrem eigenen BIOS gibt es derlei Probleme nicht.

Der PC steuert die Festplatte über den Interrupt 13h des BIOS an (zumindest während des Startvorgangs). Dieser erlaubt als Eckwerte 63 Sektoren, 255 Köpfe und 1024 Zylinder, das ergibt bei 512 Byte pro Sektor 8,4 GByte. Größere Festplatten lassen sich mit diesem CHS-System nicht ansteuern. Am Rande: Natürlich enthält keine Festplatte 255 Schreib-/Leseköpfe, dafür aber wesentlich mehr Sektoren und Zylinder. Die Elektronik der Festplatte passt die realen Daten an die für das BIOS verträglichen Werte an.

Da beim Booten des PC nur dieser Interrupt 13h zur Verfügung steht, müssen alle Startdateien von Betriebssystemen innerhalb dieses 8,4-GByte-Bereichs respektive der ersten 1024 Zylinder liegen. Da nicht immer genau festzulegen ist, wo innerhalb einer Partition die Startdateien gespeichert sind, sollte die ganze Startpartition innerhalb dieses Bereichs liegen.

Das BIOS wächst mit

Für größere Festplatten gibt es seit 1997 den erweiterten Int 13h im BIOS. Statt mit 24 Bit für eine Position (6 Bit für den Sektor, 8 für die Köpfe und 10 für den Zylinder), arbeitet Int 13h extended mit 64 Bit. Damit sind theoretisch Festplatten bis zu 9,4 Milliarden Terabyte erlaubt.

Diese so genannte LBA-Methode, Logical Block Addressing, setzt andere Angaben im Bootsektor voraus: Statt CHS ist jetzt die Angabe der Sektornummer relativ zum Plattenanfang das Maß der Dinge. In der Partitionstabelle stehen für Startadresse und Länge einer Partition je 4 Byte zur Verfügung. Das reicht für 2 TByte.

Hier schlägt allerdings ein anderes Limit zu: Die ATA-Schnittstelle, über die Festplatten mit dem Controller im PC kommunizieren, verkraftet 255 Sektoren, 16 Köpfe und 65.536 Zylinder, das macht 127,5 GByte. Angesichts des anhaltenden Wachstums bei den Festplattenkapazitäten ist diese Grenze gar nicht mehr so weit entfernt. Dann müssen die Hersteller wohl oder übel ein neues Interface zwischen Controller und ATA-Schnittstelle einführen. Wenigstens Änderungen am Int 13h extended im BIOS bleiben dem Anwender erspart.

Der Bootvorgang

Beim Start eines PCs spielen alle bisher aufgeführten Komponenten BIOS, MBR, Partitionenen und Bootsektor zusammen.

Das BIOS führt zunächst diverse Systemtests durch und ermittelt die eingebaute Hardware. Dann lädt es den Master Boot Record von Zylinder 0, Kopf 0 und Sektor 1 und führt die Master-Boot-Routine ab Position 0 aus. Standardmäßig prüft dieser Code zunächst die Einträge in der Partitionstabelle und sucht eine primäre Partition, die als aktiv (bootfähig) markiert ist. Dann lädt der Master-Boot-Code den physikalisch ersten Sektor der aktiven Partition, den Bootsektor.

Dort ist wiederum Programmcode enthalten, der gestartet wird. Der Bootcode ist speziell auf jedes Betriebssystem zugeschnitten und lädt die Startdateien wie msdos.sys und io.sys bei DOS. Damit geht die Kontrolle an das Betriebssystem über. Bis zu diesem Zeitpunkt ist der Programmcode an den Int 13h des BIOS mit seiner 8-GByte/1024-Zylinder-Beschränkung gebunden. Das Betriebssystem selbst hat damit in der Regel keine Probleme.

Die Beschreibung des Bootvorgangs macht deutlich, an welchen Stellen die Bootmanager sich in den Vorgang einklinken.

Der Bootmanager ersetzt den Code im MBR. Damit wird er unmittelbar nach dem BIOS aktiv. Problematisch dabei: Der Platz im MBR reicht für einen vernünftigen Bootmanager nicht aus. Deshalb speichern die meisten Bootmanager zusätzlichen Programmcode entweder in weiteren Sektoren von Kopf 0, Zylinder 0, in einer FAT-Partition oder in einer eigenen kleinen Partition ohne Dateisystem.

Seltener ersetzen Bootmanager den Code im Bootsektor. Dazu müssen sie den originalen Bootcode des Betriebssystems sichern. Aktiviert der Anwender das Betriebssystem dieser Partition, lädt der Bootmanager zunächst den originalen Bootcode und startet ihn dann.

Die Unterbringung im MBR hat für Bootmanager vor allem Vorteile und trennt sie sauber von den installierten Programmen. Deshalb gibt es kaum Bootmanager, die den Bootsektor einer Partition benutzen. In Ausnahmefällen kann das aber nützlich sein.

Einschränkungen von DOS und Windows 9x

Die bekannteste Einschränkung von MS-DOS besteht darin, dass es nur von einer Partition starten kann, die innerhalb der ersten 2 GByte der ersten Festplatte liegt. Das gilt auch für Windows NT 4.0, wenn es in einem FAT-Laufwerk installiert ist. Verantwortlich ist dafür der Bootsektor des FAT-Laufwerks. Ein Patch, der zum Beispiel zum Bootmanager Vamos gehört, hebt diese Beschränkung auf. Dann können diese Betriebssysteme innerhalb der ersten 8 GByte liegen.

Ab Version 5.0 erkennt MS-DOS mehr als eine primäre Partition pro Festplatte und kann damit umgehen. Bei älteren Versionen müssen die zusätzlichen Partitionen versteckt werden.

Windows 95/98

Bei der Installation überschreiben diese Betriebssysteme den Master Boot Record mit eigenem Code. Damit sind Bootmanager, die im MBR sitzen, deaktiviert. Im Regelfall genügt es, das Setup oder die Reparaturfunktion des Bootmanagers erneut aufzurufen, damit er seinen Code wieder im MBR unterbringt.

Wie Windows NT/2000 kann Windows 95/98 standardmäßig nur von der ersten Festplatte starten. Der Start von der zweiten Festplatte klappt nur, wenn der Bootmanager mit einem Treiber für das Betriebssystem die Reihenfolge der Festplatten ändert. Im Bootmanager-Test ist diese Fähigkeit in der Testtabelle mit aufgeführt.

Windows NT/2000

Das Profi-Windows von Microsoft folgt beim Booten einem starren Schema: Das System startet nur von einer primären Partition auf der ersten Festplatte. Der Bootvorgang läuft in zwei Phasen ab:

Die Datei boot.ini enthält in Textform die Angaben für das 2000-eigene Bootmenü. Darin ist unter anderem festgelegt, auf welcher Festplatte und Partition ntldr das Verzeichnis \\winnt (und damit system32) suchen soll. Dabei richtet sich NT/2000 nach der Reihenfolge der Partitionen im MBR. Eventuell müssen Sie die boot.ini deshalb anpassen. Ausführliche Informationen über die erlaubten Einträge und Parameter (auch undokumentierte) finden Sie bei SysInternals. In unserem Bootmanager-Vergleichstest hat es sich als praktisch erwiesen, für jede Partition, auf der Windows 2000 installiert sein kann, einen eigenen Booteintrag anzulegen.

Wenn Windows NT/2000 nach einem anderen MS-Betriebssystem (DOS, Windows 9x) in eine eigene Partition installiert wird, landen trotzdem die drei genannten Dateien in der ersten FAT-Partition der Festplatte. Sie müssen dann von Hand in die NT/2000-Partition kopiert werden.

Speziell bei Windows 2000 lauert eine Gefahr, wenn es auf einem PC parallel mit Windows NT 4.0 betrieben wird. Windows 2000 benutzt eine neue Version des Dateisystems, NTFS5. Windows NT 4.0 kann dieses System zwar ab Service Pack 4 lesen und schreiben, aber nicht reparieren. Die Fallgrube: Windows 2000 konvertiert bei jedem Start alle NTFS4-Partitionen nach NTFS5 - es hilft auch nichts, eine Partition mit dem Bootmanager zu verstecken (eine unbekannte Partitionskennung einzutragen). So kann es vorkommen, dass NT 4.0 nach einem Systemabsturz beim Booten das defekte Laufwerk erkennt, aber nicht reparieren kann. Eine Möglichkeit zur Abhilfe findet sich bei SysInternals. Damit ist ein Dateisystem-Check für NTFS5 unter NT 4.0 möglich.

Linux

Kaum Probleme macht Linux: Es lässt sich in primären Partitionen und logischen Laufwerken auf einer beliebigen Festplatte installieren. Das eigene Ladeprogramm LILO kann im Bootsektor der Linux-Partition untergebracht werden und kommt so einem Bootmanager nicht ins Gehege. Die einzige Einschränkung ist die 8-GByte-Grenze: Zumindest die Boot-Partition mit dem Kernel muss komplett unterhalb dieser Grenze liegen.

Problematisch wird es allerdings, wenn Sie eine Linux-Partition mit einem Disk-Image-Programm an eine andere Position auf der Festplatte bringen. Denn in der LILO-Konfiguration ist genau festgelegt, an welcher Position auf der Festplatte die Startdateien liegen. Deshalb müssen Sie nach einer derartigen Verschiebung LILO neu konfigurieren. Details dazu enthält das Handbuch der Distribution.

Vorsicht ist beim Zusammenspiel von Linux-Bootmanager und Microsoft-Betriebssystemen angeraten: Deren Installationsroutinen berücksichtigen keine eventuell bereits vorhandenen, fremden Betriebssysteme und überschreiben kurzerhand den Master Boot Record. Für ein friedliches Miteinander müssen aus diesem Grund zunächst Windows 95/98 und Co. installiert werden und erst danach Linux.

Fazit

Mehrere Betriebssysteme auf einem Rechner parallel zu fahren, scheitert heute nicht mehr an der fehlenden Kapazität der Festplatten. Scheinbar paradox, aber genau das Gegenteil gilt: Je mehr Platz die Datenträger bieten, desto schneller stößt man auf die Einschränkungen, die größtenteils aus der Frühzeit des PCs stammen.

Ein erstes Hindernis stellt das BIOS dar, über dessen Software-Interrupt 13h sich zum Zeitpunkt des Bootens nur 8 GByte ansprechen lassen. Erst neuere BIOS-Versionen überwinden diese Grenze, sodass man sich im Zweifelsfall zunächst ein Update besorgen muss.

Eine weitere Hürde stellen die Betriebssysteme dar, da sie meist Rücksicht auf die Abwärtskompatibilität nehmen müssen. So enthält die Partitionstabelle zwar zwei 32-Bit-Einträge, womit Partitionen von 2 TByte möglich wären. Doch weder der Code in den Bootsektoren noch die Betriebssysteme selbst spielen hier mit.

Last but not least kommt es auf die richtige Installations-Reihenfolge an, damit die Betriebssysteme friedlich auf einer Platte koexistieren können. Als Grundregel gilt: Die Microsoft-Betriebssysteme sollte der Anwender vor allen anderen installieren, denn Windows eliminiert fremden Bootcode rückstandslos. tri)