Extended Boot Record

Da im Master Boot Record (MBR) nur Platz für vier (primäre) Partitionen ist, kann dort eine erweiterte Partition angelegt werden, welche dann die zusätzlichen logischen Laufwerke adressiert. Der Partitionstyp einer erweiterten Partition ist »0x05«. Entgegen der viel verbreiteten Meinung, dass eine erweiterte Partition die bzw alle logischen Laufwerke beinhaltet, wird in der im »MBR« abgelegten Partitionstabelle der erweiterten Partition lediglich die nächste erweiterte Partitionstabelle adressiert. Dieser »Extended Boot Record (EBR)«, enhält dann die Adresse des ersten logischen Laufwerks und den nächsten »EBR«. Das ganze kann dann im Prinzip immer so weitergehen und wird lediglich durch den Platz auf der Platte bzw. durch die verfügbaren Buchstaben für die Laufwerke unter Windows limitiert. Demnach können durch diese »verkettete Liste«1) im Prinzip beliebig viele logische Partition adressiert werden.

Jedem logischem Laufwerk geht demnach ein »EBR« voraus und die Adresse des ersten »EBR« ist im »MBR« hinterlegt:

# dd if=/dev/sda bs=512 count=1 | hexdump -C
---snip---
000001b0  00 00 00 00 00 00 00 00  70 5c 05 00 00 00 80 20  |........p\..... |
000001c0  21 00 83 93 29 2a 00 08  00 00 00 68 0a 00 00 b4  |!…)*…..h….|
000001d0  09 2a 05 fe ff ff fe 77  0a 00 02 80 35 01 00 00  |.*.....w....5...|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|

Die Adresse »0xfe770a00« wird auf diesem System (x86) in »Little Endian«2) interpretiert und ergibt »0xa77fe« bzw »68607810« was man auch im System mit zB »fdisk« überprüfen kann:

# fdisk -lu

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00055c70

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      684031      340992   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2          686078    20969471    10141697    5  Extended
/dev/sda5          686080     8030207     3672064   83  Linux
/dev/sda6         8032256    11599871     1783808   83  Linux
/dev/sda7        11601920    12781567      589824   82  Linux swap / Solaris
/dev/sda8        12783616    13416447      316416   83  Linux
/dev/sda9        13418496    20969471     3775488   83  Linux

An der Adresse »68607810« befindet sich nun der erste »EBR« der im Prinzip eigentlich nur das folgende logische Laufwerk und die Adresse es nächsten »EBR« (relativ zum Anfang der erweiterten Partition) beschreibt:

# dd if=/dev/sda bs=512 count=1 skip=686078 | hexdump -C
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 b4  |................|
000001c0  0b 2a 83 da 67 f3 02 00  00 00 00 10 70 00 00 da  |.*..g.......p...|
000001d0  68 f3 05 0e bc d2 02 10  70 00 00 78 36 00 00 00  |h.......p..x6...|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|

Im ebenfalls 512 Byte großen »EBR« findet man nun zwei Partitionstabellen, welche nach dem gleichen Prinzip aufgebaut sind, wie die im »MBR«. Hier wird der Startsektor des folgenden logischen Laufwerks (relativ zum Anfang der erweiterten Partition) und die Gesamtlänge in Sektoren definiert. Die zweite Partitionstabelle adressiert den nächsten »EBR« (relativ zum Anfang der erweiterten Partition).

Die erste Partitionstabelle: »00 b4 0b 2a 83 da 67 f3 02 00 00 00 00 10 70 00« beschreibt das folgende logische Laufwerk:

  • 0x00: Das erste Byte setzt das Bootflag. »0x00« bedeutet, von dieser Partition kann nicht gebootet werden.
  • 0xb40b2a: Der »CHS« Eintrag des ersten Sektors der Partition. Dieser Eintrag wird nicht mehr benutzt um die Partition anzusprechen.
  • 0x83: Gibt den Partitionstyp an. »0x83« bedeutet Linux.
  • 0xda67f3: Gibt den letzten Sektor im »CHS« System an. Dieser Eintrag wird nicht mehr benutzt.
  • 0x02000000: Gibt den ersten Sektor, relativ zum Anfang der erweiterten Partition an. In »Little Endian« ergibt dieser Wert »0x02« bzw »210«. Das bedeutet es müssen zum Startsektor der erweiterten Partition »686078« zwei Sektoren hinzu addiert werden, um zum Anfang dieses logischen Laufwerks zu kommen → »686080«.
  • 0x00107000: Gibt die Gesamtzahl der Sektoren der Partition an.

Die zweite Partitiontabelle: »00 da 68 f3 05 0e bc d2 02 10 70 00 00 78 36 00« gibt die Position des nächsten »EBR« an. Im Prinzip gliedern sich die Werte wie in der ersten Partitionstabelle auch, der jedoch für die Adressierung des nächsten »EBR« interessante Wert ist der Startsektor:

  • 0x021070: Gibt den Sektor des nächsten »EBR«, relativ zum Startsektor der erweiterten Partition an. Dieser Wert in »Little Endian« ergibt »0x701002« resp. »734413010«, dazu addiert wird der Startsektor der erweiterten Partition »68607810« und erhalten als Ergebnis den Startsektor des nächsten »EBR«: »803020810«

# dd if=/dev/sda bs=512 count=1 skip=8030208 | hexdump -C
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 fb  |................|
000001c0  49 f3 83 0e bc d2 00 08  00 00 00 70 36 00 00 0e  |I..........p6...|
000001d0  bd d2 05 9d c2 1b 02 88  a6 00 00 08 12 00 00 00  |................|
000001e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

Und so weiter und so fort. Das System kann durch die Auswertung des »MBR« und der folgenden »EBRs« die Gesamtaufteilung des Datenträgers ermitteln. Tools wie »fdisk«, »parted« oder »gdisk« greifen ebenso auf diese Werte zu, wie der Betriebssystemkernel um Ihnen die Aufteilung anzuzeigen bzw das System danach anzusprechen.

Verwandte Artikel:
-> Master Boot Record (MBR)
-> Advanced Format Festplatten in der Praxis
-> Festplattengeometrie
-> Cluster: Windows Einheit auf Datenträgern
-> Die neue Festplattengeneration Solid-State-Disk (SSD)

pronto 2013/01/19 14:51

it/ebr.txt (5339 views) · Zuletzt geändert: 2013/01/19 22:48 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0