[[:it|{{ :xeon.png?40|}}]] =====Extended Boot Record==== Da im __[[:it:mbr|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<<((http://de.wikipedia.org/wiki/Verkettete_Liste)) 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<<((http://de.wikipedia.org/wiki/Byte-Reihenfolge)) 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 >>__[[:it:hd_geometrie|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:** [[:it:mbr|-> Master Boot Record (MBR)]] [[:win:advanced_format_HD|-> Advanced Format Festplatten in der Praxis]] [[:it:hd_geometrie|-> Festplattengeometrie]] [[:it:cluster|-> Cluster: Windows Einheit auf Datenträgern]] [[:it:ssd_disk|-> Die neue Festplattengeneration Solid-State-Disk (SSD)]] --- //pronto 2013/01/19 14:51// {{keywords>mbr ebr master extended boot record fdisk lba sektor sector chs disk}}