Beschreibung von Partitions-Tabellen
von hankcurt
MyPCLinuxOS
Haben Sie eine großartige Idee für ein PCLinuxOS Projekt?
Menschen sind kreativ und fantasiereich. Wir haben aussergewöhnliche, praktische, dumme, machbare und vielleicht sogar einzigartige Ideen. Und genau dafür gibt es einen Platz bei MyPCLinuxOS.com.
Viele großartige Projekte, die mit einem kleinen Schritt begannen und mit etwas Widmung und Arbeit lassen wir den Traum wahr werden.
Sie haben Ihre Idee vergessen oder es gibt sie bereits ? Kein Problem. Es gibt einige laufende Projekte bei MyPCLinuxOS.com. Treten Sie einem bei und werden Sie ein Teil einer Mannschaft, die etwas zu PCLinuxOS „zurückgibt“.
Viele Leute verstehen die Partitionstabelle ihrer Festplatte nicht. Der Master Boot Eintrag enthält (MBR) die Partitionstabelle, die die Position von bis zu vier Primärpartitionen auf der Festplatte enthält. Eine Primärpartition kann als logische Partition gekennzeichnet werden. Das ermöglicht dem Betriebssystem diese Primärpartition wie eine Vielzahl von logischen Partitionen zu behandeln. In diesem Artikel besprechen wir die logische Partitionierung nicht . Die Informationen für jede Partition ist 16 Byte lang (jedes Byte wird normalerweise als ein Paar hex Stellen, z.B. 0f angezeigt).
Hier ist ein typischer Partitionstabelleneintrag.
0001b0 00 00 00 00 00 00 00 00 48 04 07 c9 00 00 80 01
0001c0 01 00 06 0f FF e0 3f 00 00 00 b1 45 0f 00 00 00
0001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA
Auf dieser Festplatte gibt es nur eine Partition, und die sie beschreibende Informationen ist an der Adresse 0x01be zu 0x01cd (die roten Zahlen in der Tabelle oben). Wenn es mehr geben würde, wären die Daten der zweiten Partition die in Grün angezeigten, die dritte Partition in Violett und die vierte Partition in Braun. Ich kopiere die Zahlen der einzelne Partition unten und codiere sie zum einfacheren Verständnis in Farbe.
80 01 01 00 06 0f FF e0 3f 00 00 00 b1 45 0f 00
Die erste hex Zahl (rot) gibt zwei Information. Wenn sie 00 ist, dann ist die Partition keine aktive Partition (sie enthält keinen Boot Loader). Wenn es 80 oder grösser ist, wie in unserem Beispiel, bedeutet das, dass es die aktive (startbare) Partition ist. Es kann nur eine Partition als aktiv markiert werden. Die zweite Information trifft auf Festplatten zu. Wenn die erste Festplatte die aktive Partition enthält, ist diese Zahl 80. Wenn es die zweite Festplatte war, wäre diese Zahl 81, und so weiter.
Es gibt zwei Möglichkeiten zur Spezifizierung der Partitionsposition in der Partitionstabelle. Die erste ist die Zylinderkopf-Sektormethode (CHS). Die drei hellblauen Nummern (01 01 00) spezifizieren die CHS Position, wo die Partition anfängt und die drei dunkelblauen Zahlen (0f FF e0) spezifizieren, wo sie endet. Sektoren sind die kleinste Maßeinheit und Zylinder die größte Maßeinheit des Plattenplatzes. Oder anders gesagt, es gibt eine bestimmte Anzahl von Sektoren pro Kopf und so viele Köpfe pro Zylinder (dies ist wichtig, wenn Sie mit diesen Werten rechnen wollen).
Nun extrahieren wir die tatsächlichen Werte von den obigen hex Zahlen. Das wird etwas heikel, und ich weiß nicht, ob ich es gut erklären kann. Der Kopfwert ist einfach, es ist der Wert des ersten Byte, der zwischen 0 und 255 (dezimal) liegen kann. Um die anderen zwei Werte zu erhalten, müssen wir die hex Zahlen in binäre Zahlen umwandeln. Die Sektorzahl ist die untereren sechs Bit des zweiten Byte und kann einen Wert von 1 bis 63 haben. Um den Zylinder Wert zu erhalten, nehmen wir die verbleibenden zwei Bits vom zweiten Byte und fügen sie dem oberen Ende der Bits vom dritten Byte hinzu. Diese 10 Bits lassen einen Zylinderwert von 0 bis 1023 zu. Ich zeige das nun mit den CHS Werten des Beispiel.
Startposition der Partition
1. Byte 2. Byte 3. Byte
010100
01Kopf 1
00000001 00000000Byte umgewandelt in Bits
XX000001Sektor 1
00-----> 00000000
0000000000 Zylinder 0
Endposition der Partition
1. Byte 2. Byte 3. Byte
0fffe0
0fKopf 15
11111111 11100000Bytes umgewandelt in Bits
XX111111Sektor 63
11-----> 11100000
1111100000 Zylinder 992
Da eine Partition immer auf einer Zylindergrenze endet, können wir sagen, dass die Laufwerksgeometrie 63 Sektoren pro Kopf und 16 Köpfe pro Zylinder ist (Kopf 0 mitzählend). Also fängt die Partition am ersten Sektor des zweiten Kopfes(erinnern Sie sich an Kopf 0) am ersten Zylinder an. Da es 63 Sektoren pro Kopf gibt, fängt die Partition am 64. Sektor an. Um zu sehen an welchem Sektor die Partition endet, würden wir das Produkt aus 993 Zylinder (erinnern Sie sich daran, dass es einen Zylinder 0 gibt) und 16 Köpfen und 63 Sektoren bilden. Dieses ergibt 100944.
Die Zylinderkopf-Sektormethode funktioniert nur auf Laufwerken bis zu 8 Gigabyte, weil das die maximale Größe ist, die mit den drei Bytes spezifiziert werden kann. Um dies zu erhalten, wird eine zweite Methode des Spezifizierens der Partitionsposition angewendet. Es wird Logical Block Addressing genannt, und es verwendet die letzten acht Bytes des Partitionstabelleneintrags. Diese Bytes geben die Position der Partition an, indem sie die Sektorenanzahl vom Anfang des Laufwerks zählen, was viel einfacher ist. Die vier Bytes in Grün (3f 00 00 00) geben die Sektorenanzahl vor der Partition an und die folgenden vier Bytes (b1 45 0f 00) geben die Länge der Partition an.
8001 01 00 060f FF e0 3f 00 00 00 b1 45 0f 00
Wir müssen nur eine Sache wissen, um diese Bytes zu verstehen. Sie sind in der Ordnung „little endian“ . Das heißt, dass der niedrigste „Stellenwert“ im ersten Byte steht. Um sie wie gewöhnliche Zahlen zu verwenden, müssen wir die Abfolge der Bytes nur umkehren. Aus 3f 00 00 00 wird 0000003f und aus b1 45 0f 00 wird 000f45b1. Jetzt können wir diese Zahlen in Dezimalzahlen umwandeln. Dieses besagt, dass es 63 Sektoren vor der Partition gibt, welche am 64. Sektor anfängt und 1000881 Sektoren lang ist. Daher endet die Partition am Sektor 1000944. Beachten Sie, dass dies das gleiche Resultat ist, welches wir mit der CHS Berechnung erhielten.
Das letzte Teil des Puzzles
Im Partitionstabelleneintrag erklärt die hex Nummer 06 (im Violett) das Dateisystems der Partition und ob zu deren Lokalisierung der Zylinder, Kopf, Sektor (CHS) oder das Large Block Adressiersystem verwendet (LBA) werden soll. Hier ist eine kurze Auflistung der Dateisysteme.
- 01
- DOS-Dateisystem mit 12 Bit Dateibelegungstabelle
- 06
- DOS-Dateisystem mit 16 Bit Dateibelegungstabelle und Verwendung des CHS Systems zur Anzeige der Partitionsposition
- 0e
- DOS-Dateisystem mit 16 Bit Dateibelegungstabelle und Verwendung des LBA Systems zur Anzeige der Partitionsposition
- 0b
- DOS-Dateisystem mit 32 Bit Dateibelegungstabelle und LBA wird fast immer verwendet. Wenn die Partition jedoch in den ersten 8GB der Festplatte liegt, müssen die CHS Zahlen richtig eingestellt werden, da andernfalls, wenn die Partition hinter der 8GB Grenze zu liegen kommt, die CHS Zahlen auf ihren Maximalwert eingestellt werden sollten.
- 07
- NTFS
- 81
- Linux
- 83
- Linux ext2fs
- 82
- Linux swap
Es gibt noch viele andere Dateisysteme, aber diese sind die meist benutzten.
Die Webseiten, in denen ich meine Informationen gefunden habe, können das vielleicht noch besser erklären.
http://home.att.net/%7Erayknights/pc_boot/w95b_mbr.htm
http://www.bitzenbytes.com/Content-Arcanum-18-1-14.html
und einige wikipedia Artikel.