27.3 Bootcode
Der Bootcode befindet sich bei Festplatten im Master Boot Record (MBR). Dieser Bereich, der sich im ersten Sektor der Festplatte befindet, ist so aufgeteilt, dass darin sowohl der Bootcode als auch die Partitionstabelle der Festplatte untergebracht sind. Die Aufgabe des Bootcodes besteht nun entweder darin,
- das Betriebssystem zu starten, das sich auf der als aktiv markierten Partition befindet,
- oder dem Benutzer zunächst die Möglichkeit zu bieten, eines von mehreren Betriebssystemen – oder einen von mehreren Kerneln – auszuwählen und zu starten.
Platzprobleme
Da ein Sektor auf PC-Systemen nur eine Größe von 512 Bytes aufweist, müssen sich Bootcode und Partitionstabelle diesen Platz teilen: In den ersten 446 Bytes wird der Programmcode des Bootloaders ausgelagert, und in den nächsten 64 Bytes wird die Partitionstabelle untergebracht. Die letzten zwei Bytes enthalten den Wert 0xaa55, der zur Identifizierung des MBRs selbst dient.
Die verfügbaren 446 Bytes reichen definitiv nicht aus, um einen vernünftigen Bootloader darin unterzubringen. Daher dient dieser Code in der Regel nur dazu, einen zweiten Code zu laden, der sich auf einer der Partitionen befindet. Diesen zweiten Bootloader bezeichnet man als Secondary Bootloader. Typische Secondary Bootloader für Linux-Systeme sind LILO und GRUB (bzw. das neuere GRUB2). Ebenfalls sehr bekannt ist GAG.
27.3.1 Die Partitionstabelle
Die Partitionstabelle
Partitionstabelle besteht aus vier jeweils 16 Byte langen Einträgen. Daraus lässt sich schließen, dass pro Festplatte auch nur maximal vier Primärpartitionen erstellt werden können.
Im Wesentlichen enthält solch ein Partitionseintrag nicht allzu viele Daten. Zunächst werden die Anzahl der Partitionssektoren und die Anzahl der vor dieser Partition liegenden Sektoren angegeben, des weiteren der Anfangszylinder und -sektor sowie der Endzylinder und -sektor. Damit sind der Anfang, das Ende und die Größe einer Partition festgelegt – und mehr Informationen braucht man an dieser Stelle schließlich auch nicht.
Partitionstyp
Für das Verständnis dieser Thematik ist es überaus wichtig zu wissen, dass in einem Datensatz der Partitionstabelle auch der Typ der Partition festgelegt wird. Dabei wird eine Nummer zur Identifikation des Dateisystems verwendet, mit dem die jeweilige Partition formatiert ist. Bei Programmen wie fdisk müssen Sie durch die Angabe einer zweistelligen Hexadezimalzahl genau diese Identifikationsnummer selbst auswählen. Der Wert der Nummer liegt dabei immer zwischen 0 (0x0) und 255 (0xff).
In der folgenden Auflistung sind die wichtigsten Partitionstypen samt ihrer IDs zu finden.
- 00 – Die Partition wird nicht verwendet.
- 01 – FAT12-Dateisystem (alte MS-DOS-Versionen)
- 04 – FAT16-Dateisystem (MS-DOS, größer als 32 MB)
- 05 – erweiterte DOS-Partition
- 06 – alte MS-DOS-FAT16-Partition
- 07 – HPFS/NTFS (Windows 2000, Windows XP)
- 08 – AIX-Partition
- 09 – AIX-Bootpartition
- 0b/(0c) – Windows FAT32 (LBA)
- 4d – QNX 4.x
- 80 – Minix (alte Version)
- 81 – Minix (neue Version)
- 82 – Linux Swap
- 83 – Linux 2nd/3rd/4th extended
- 85 – Linux extended
- 9f – BSDi
- af – FreeBSD
- a6 – OpenBSD
- a7 – NeXTSTEP
- a8 – Mac OS X
- a9 – NetBSD
- be – Solaris-Bootpartition
- bf – Solaris-Partition
- eb – BeOS
27.3.2 Ein Beispiel
An dieser Stelle wollen wir uns einmal einen MBR anschauen. Sie finden in Anhang MBR eine Kopie des ersten Sektors einer Festplatte.
Die vielen Bytes am Anfang des Sektors, die Sie vielleicht für binären Schrott halten könnten, enthalten den Bootloader – in diesem Fall eine Version von LILO. Es folgt eine Anzahl Nullbytes, an die sich in den letzten vier Zeilen des Listings die Partitionstabelle anschließt.
Gehen Sie den Aufbau der Partitionstabelle einmal durch, wie er oben erklärt wurde – natürlich nicht im Detail, aber wenn Sie erkennen, dass die ersten drei Partitionen vom Typ 83 (Linux ext2/3) und die letzte Partition vom Typ 82 (Linux Swap) ist, sind Sie schon gut. Am Ende des Bootsektors finden Sie natürlich auch den Hexcode 0xAA55, [Fn. ... der mit dem niederwertigsten Byte zuerst gespeichert wurde, wie es auf der i386-Architektur üblich ist.] der den MBR identifiziert und abschließt.
Ihr Kommentar
Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.