Infos zur Partitionierung, Partitiontables und Bootsektoren
===========================================================


Die Hauptpartitiontable befindet sich im ersten Sektor der
Festplatte. Diesen könnte man deshalb als den wichtigsten Sektor
der ganzen Platte bezeichnen. Ihn separat zu sichern macht deshalb
Sinn.

Dieser erste Sektor wird als Master Boot Record (mbr) bezeichnet.
Neben der Partitionstabelle enthält dieser Sektor nämlich den
Startcode, der nach dem Start des Rechners ausgeführt wird.

Aufteilung:
0x0000-0x01BD (446 Bytes) Startcode
0x01BE-0x01FD (64 Bytes)  Partitionstabelle
0x01FE-0x01FF (2 Bytes)   Magic Number 55AA

Mit fdisk /mbr schreibt Dos den MBR neu, jedoch nur die ersten 446
Bytes, nicht die Partitionstabelle. Es wird dann der Dos-MBR
geschrieben, der in der Lage ist, den Bootsektor der Dos-Partition
zu lesen und diese Bootsequenz dann zu starten.

Die Partitiontable besteht aus 4 Einträgen a 16 Bytes. Es können
also maximal 4 Partitionen angelegt werden. Um weitere Partitionen
anzulegen, wurde dieses Konzept später so erweitert, daß man hier
eine Partition vom erweiterten Typ einträgt. Im ersten Sektor
dieser Partition befindet sich dann wieder eine Partitiontabelle.
Mehr dazu später.

Windows 9x und Dos können nur mit einer primären und einer
erweiterten Partition umgehen. Primär bedeutet, dass es sich um
eine direkt eingetragene Partition handelt, also nicht um eine
Erweiterte. Weitere primäre Partitionen anderen Typs können
vorhanden sein, die werden von DOS/Windows nicht gesehen. Jedoch
keine vom Typ FAT. Möchte man dies trotzdem, so darf nur jeweils
eine sichtbar sein, die anderen muß man verstecken, bspw. in dem
man ihnen einen anderen Typ verpasst.

Die Partitionstabelle ist wie folgt aufgebaut:

Byte       Bezeichnung  
0x00       BootFlag/Aktive Partition, 0x00: nicht aktiv, 
           0x80 aktiv, andere Werte nicht genutzt
0x01       C Start Cylinder Partition
0x02       H Start Head
0x03       S Start Sector
0x04       Partition Type 
0x05       C End Cylinder Partition
0x06       H End Head Partition
0x07       S End Sektor Partition
0x08-0x0B  Startsektor LBA (28 Bit werden benutzt)
0x0C-0x0F  Anzahl Sektoren LBA (28 Bit werden benutzt)

Achtung: CHS Angaben sind etwas Bitweise vermixt. Die oberen 2
Bits von H werden für C mitbenutzt, so dass man max. 1024
Zylinder, 64 Heads und 256 Sektoren haben kann. Wegen eines Bugs
unter Dos und Windows ist jedoch der Maximalwert für Sektor von
0xFF nicht erlaubt, so dass nur 255 Sektoren (0-0xFE) möglich
sind. Bei den Heads werden ebenfalls nur 63 als Maximalwert
genutzt.

Historisch wurden zuerst die CHS Werte verwendet. Damit lassen
sich jedoch maximal 8 GB adressieren. Bei alten Biosversionen geht
nichtmal das, da ist bei 2 GB oder 512MB Schluss, weil nicht alle
Bits der CHS Werte genutzt werden.

Um auch über 8GB adressieren zu können, entschied man sich, nur
noch die LBA Werte zur Adressierung zu nutzen. Jeder Sektor wird
durchnummeriert und mittels LBA-Wert ist jeder Sektor ansprechbar.
Das Bios übernimmt die Übersetzung in die CHS Werte der
Festplatte. Neuere Biosversionen sind nicht mehr auf 1024 Zylinder
begrenzt. Man hat hier den Weg gewählt, einfach die Anzahl
Zylinder aufzubohren, Köpfe und Sektoren jedoch bei den alten
Grenzen zu lassen. Insofern sind die eingetragenen Bioswerte nicht
die tatsächlichen physikalischen Werte. Die Festplatte gaukelt da
nur etwas passendes vor.

Bei Partitionen unterhalb 8GB wird von gängigen fdisk-Programmen
sowohl der CHS Wert wie auch der LBA Wert eingetragen. Genutzt
wird von neueren Biosversionen nur der LBA Wert. Jedoch brauchen
einige alte Programme auch die CHS Werte.

Bei Partitionen über 8GB werden die Maximalwerte für CHS
eingetragen. Diese sind dann also nicht mehr korrekt, werden nur
noch für Abwärtskompatibilität eingesetzt.

Neuere Platten haben als (vorgegaukelte) Geometry meist 63
Sektoren, 255 Heads und dann n Zylinder. Es wird also nur noch
anhand der Zylinder die Plattengröße variiert.

Der erste Zylinder wird nur für den MBR genutzt, die erste
Partition fängt also erst im zweiten Zylinder an. Der restliche
Platz auf Zylinder 1 wird von manchen Bootloadern genutzt, denen
die 446 Bytes im ersten Sektor nicht reichen.

Der Start-LBA Wert der ersten Partition ist also typisch 63. Der
LBA Abstand von einer Partition zur nächsten ist dann auch typisch
63, es liegt ja ein Bootsektor dazwischen, der eine ganze Spur
benötigt.

Jede Partition hat einen Bootsektor. Dies ist der erste Sektor in
der Partition. Die restlichen Sektoren dieser Spur bleiben leer.
Im Bootsektor kann ein Startprogramm stehen. Mittels sys c:
schreibt Dos bspw. den Bootsektor neu. Nicht jedoch den MBR. Das
tut nur fdisk /mbr. Bootet eine Festplatte nicht, ist also zu
unterscheiden, ob der Bootsektor oder der MBR defekt ist.

Mit den erweiterten Partitionen verhält es sich so: Im MBR ist
eine Partition als erweitert (Partitionstyp) eingetragen.
Theoretisch können auch mehrere erweiterte Partitionen bestehen,
jedoch kommt Windows/Dos damit nicht zurecht. Ist eine Partition
als erweitert eingetragen, so fungiert der erste Sektor dieser
Partition wiederum als Partitionstabelle. Dort können jedoch nur 2
Partitionen eingetragen sein. Zum Einen das erste logische
Laufwerk bzw. die erste logische Partition (hda5). Die fängt
typisch 1 Spur entfernt an. Zum weiteren eine weitere erweiterte
Partition, die auf den Beginn des nächsten logischen Laufwerks
zeigt. Dort befindet sich dann wieder eine Partitionstabelle mit 2
Einträgen. So bilden die logischen Laufwerke / Partitionen eine
Kette. Fehler in der ersten logischen Partition können so bspw.
dazu führen, daß alle anderen auch nicht mehr vorhanden sind. Der
zweite Eintrag ist immer vom Typ 5 (=erw. Partition).

Powerquest nennt die erweiterten Partitiontabellen EPBR.

Der LBA Wert im ersten Eintrag bezieht sich auf den jeweiligen
Partitiontable-Sektor (EPBR) Start der logischen Partition. Der
Startwert ist also typisch 63 bei jedem logischen Laufwerk. Der
Startwert des zweiten Eintrages, also der Zeiger auf die
Partitionstabelle des nächsten logischen Laufwerks, ist dagegen
relativ zum EPBR der erweiterten Partition angegeben. (Nochmal zum
Verständnis: Die erweiterte Partition ist der Behälter, in dem
sich logische Partitionen/Laufwerke befinden können. Die
erweiterte Partition ist im MBR eingetragen.)

Anhand dieser Struktur wird deutlich: Der erste Sektor einer jeden
Partition ist sehr bedeutsam, weil dort wichtige Informationen
über die Aufteilung der Platte enthalten sein können. Und
natürlich auch Bootloader. Weil Bootloader sich mitunter auch in
weitere Sektoren der ersten Spur einklinken, ist mitunter die
ganze erste Spur einer jeden Partition von besonderem Wert (ersten
32KB typisch).

Linux fdisk verbirgt all diese Komplexität der CHS/LBA Werte. Es
arbeitet mit den CHS Angaben aus dem Bios, kann also mit
Partitionsgrößen minimal auf Zylinderebene arbeiten. (WM030903:
stimmt so nicht, auch wenn im Bios falsche Werte eingetragen sind,
kommt Linux zurecht, es muß wohl die Platte fragen können, wie
groß sie ist und welche CHS Aufteilung sie hat.) Sollten andere
Programme da anders arbeiten, reichen die Angaben mit fdisk -l
nicht aus, um eine Partitiontable wieder rekonstruieren zu können.
Es ist jedoch zu vermuten, daß andere Partionierungstools
ebenfalls nur ganze Zylinder zulassen.

Nochwas zur Reihenfolge von Hexwerten: Das niederwertigste Byte
steht zuerst auf der Platte, zum Schluß das höherwertigste Byte.
So ist das generell in der Intel-Prozessorwelt.

Die Vergabe von Laufwerksbuchstaben unter Windows 9x geschieht so:
Zuerst kommen alle primären Partitionen der jeweiligen
Festplatten. Dann erst kommen die erweiterten Partitionen. Hängt
man also eine zweite Festplatte ein, kann es sich als günstig
erweisen, dort nur eine erweiterte Partition anzulegen, damit sich
Laufwerksbuchstaben nicht verschieben.

Achtung: Bei Festplatten größer 8GB muß die erweiterte Partition
auf jeden Fall vom Typ 0x0F sein (insofern sie über die 8GB Grenze
hinausragt), nicht wie früher vom Typ 0x05. Sonst produziert Dos 7
ziemlichen Müll auf der Festplatte.

Copyright 2000, GFDL, Winfried Mueller, www.reintechnisch.de