GUID Partition Table

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

GUID Partition Table (GPT), zu deutsch GUID-Partitionstabelle (von englisch Globally Unique Identifier), ist ein Standard für das Format von Partitionstabellen auf Festplatten oder anderen Datenträgern. Die Spezifikation ist Teil des UEFI-Standards, der ausgehend von Großrechnern etwa seit dem Jahr 2000 zunehmend das BIOS auch in PCs ersetzt. GPT ist dabei der Nachfolger der Master-Boot-Record (MBR)-Partitionstabellen. GUID-Partitionstabellen können nur unter Einschränkungen auch mit vorigen BIOS-Versionen verwendet werden.[1]

Aufbau[Bearbeiten]

Schematische Darstellung einer GPT. Jeder LBA-Block entspricht einem Sektor der Festplatte und ist 512 Bytes groß.

Entsprechend dem GPT-Schema besteht ein Datenträger aus den folgenden Bereichen:

  • MBR, dessen spezielle Konfiguration den Einsatz der Platte auch unter MBR-Betriebssystemen erlaubt und vor Veränderungen durch MBR-Partitionierungstools schützt
  • primäre GPT, bestehend aus Header und Partitionseinträgen
  • Partitionen
  • sekundäre GPT, bestehend aus Header und Partitionseinträgen

Die sekundäre GPT am Ende des Datenträgers ist teilweise eine Kopie der primären GPT am Anfang des Datenträgers: Die Inhalte der Felder für die Positionen des eigenen und des alternativen GPT Headers sind vertauscht und die Adresse der Partitionstabelle verweist auf die Kopie der Partitionstabelle am Ende der Platte vor dem alternativen Header. Damit haben beide GPT Header auch eine unterschiedliche CRC32-Prüfsumme. Durch die enthaltene Redundanz kann im Fehlerfall die Partitionstabelle wiederhergestellt werden. Da in der GPT eine Prüfsumme eingetragen wird, kann festgestellt werden, ob und ggf. welche der beiden GPT fehlerhaft ist.

MBR-Partitionstabelle[Bearbeiten]

Im ersten Sektor/Block des Datenträgers (LBA 0) befindet sich der MBR mit einer klassischen MBR-Partitionstabelle und einem Eintrag, der den Rest des Datenträgers als belegt kennzeichnet. Für ein Partitionierungstool, das nur MBR- aber keine GPT-Partitionstabellen lesen kann, erscheint daher der gesamte Platz auf dem Datenträger als belegt. Der MBR einer GPT-Festplatte stellt somit einen Schutz für den Inhalt des Datenträgers dar, falls auf diesen mit Partitionierungstools, die das GPT-Schema noch nicht kennen, zugegriffen werden soll (daher auch englisch protective MBR). Als Partitionskennung wird der Wert EE16 für einen Schutz-MBR (mit nachfolgender GUID-Partitionstabelle) oder EF16 bei einer EFI-Systempartition verwendet.[2]

Header der GUID-Partitionstabelle[Bearbeiten]

Im zweiten Sektor/Block (LBA 1) befindet sich der Header der primären GPT und im letzten Sektor/Block (LBA −1) befindet sich der sekundäre Backup-GPT. Der Header selbst beschreibt u. a. die nutzbaren Blöcke des Datenträgers, die Position des eigenen Headers und des sekundären Backup-Headers sowie die Anzahl und Größe der Partitionseinträge. Die EFI-Spezifikationen[3] schreiben ein Minimum von 16 384 Bytes für die Partitionstabelle vor, sodass es Platz für 128 Einträge gibt. Weiterhin werden der Header selbst und die Partitionseinträge mit CRC32-Prüfsummen abgesichert, die von der Firmware, dem Bootloader oder dem Betriebssystem überprüft werden müssen. Wird daher der Header z. B. mit einem Hex-Editor verändert, macht dies die Checksumme ungültig und das System wird instabil oder sogar unbrauchbar.

Im Header der GPT sind folgende Informationen abgelegt:

Offset Länge Inhalt
0 8 bytes Signatur ("EFI PART", 45h 46h 49h 20h 50h 41h 52h 54h)
8 4 bytes Revision (00h 00h 01h 00h)
12 4 bytes Header-Größe - Little Endian (5Ch 00h 00h 00h entspricht 92 bytes)
16 4 bytes Header-CRC32-Prüfsumme
20 4 bytes Reservierter Bereich - muss Null (0) sein
24 8 bytes Position des eigenen LBA (dieses Headers)
32 8 bytes Position des Backup-LBA (des anderen Headers)
40 8 bytes Erster benutzbarer LBA für Partitionseinträge (bei der primären Partitionstabelle ist dies der letzter LBA + 1, normalerweise 34)
48 8 bytes Letzter benutzbarer LBA für Partitionseinträge (bei der sekundären Partitionstabelle ist dies der letzte LBA - 1, normalerweise Datenträgergröße - 34)
56 16 bytes Datenträger-GUID (als Referenz siehe auch UUID bei UNIXe)
72 8 bytes Start-LBA der Partitionstabelle
80 4 bytes Anzahl der Partitionseinträge (Partitionen)
84 4 bytes Größe eines Partitionseintrags (normalerweise 128)
88 4 bytes Partitionstabellen-CRC32-Prüfsumme
92 * Reservierter Bereich; muss mit Nullen, für den Rest des Blocks, belegt sein (420 Bytes bei einem 512-byte LBA)

Partitionseintrag[Bearbeiten]

Die Partitionseinträge werden im LBA 2 bis LBA 33 (sekundärer Header: LBA-33 bis LBA-2) abgelegt. Jeder Partitionseintrag umfasst 128 Byte. Somit können pro logischem Block vier Partitionseinträge abgelegt werden. (Diese in der Spezifikation vorgeschriebene Mindestanzahl von 32 Sektoren für Partitionseinträge kann bei Bedarf beliebig erhöht werden, so dass die maximal mögliche Anzahl an Partitionen prinzipiell nur durch den zur Verfügung stehenden Plattenplatz beschränkt wird.)

Im Partitionseintrag selbst sind folgende Daten hinterlegt:

Offset Länge Inhalt
0 16 Bytes Partitionstyp-GUID
16 16 Bytes Einzigartige Partitions-GUID
32 8 Bytes Beginn der Partition (erster LBA - Little-Endian)
40 8 Bytes Ende der Partition (letzter LBA - inclusive)
48 8 Bytes Attribute (siehe folgende Tabelle)
56 72 Bytes Partitionsname (36 UTF-16LE Zeichen)
128 Bytes insgesamt

Die einzelnen Einträge sind verhältnismäßig einfach aufgebaut. Die ersten 16 Bytes beschreiben den Partitionstyp. Die Partitionstyp-GUID für eine EFI-Systempartition ist z.B. {C12A7328-F81F-11D2-BA4B-00A0C93EC93B}. Es folgen 16 Bytes mit der Partitions-GUID. Dann folgen die Nummer des ersten und des letzten LBA-Sektors der Partition, 8 Bytes mit Attributen und der Name der Partition (36 Unicode-Zeichen lang).

Microsoft definiert folgende Attributeinträge:

Bit Inhalt
0 Systempartition
1 vor EFI verstecken
2 Legacy BIOS bootfähig (analog MBR 80h Active flag)[4]
60 Nur lesen (Read-only)
62 Versteckt (Hidden)
63 Nicht automatisch mounten (= keinen Laufwerksbuchstaben zuweisen)

Partitionstyp-GUIDs[Bearbeiten]

Betriebssystem Partitionstyp GUID
(Kein Betriebssystem) Unbenutzt 00000000-0000-0000-0000-000000000000
Intel Fast Flash (iFFS) Partition (Intel Rapid Start) D3BFE2DE-3DAF-11DF-BA40-E3A556D89593
MBR 024DEE41-33E7-11D3-9D69-0008C781F39F
EFI-Systempartition (ESP) C12A7328-F81F-11D2-BA4B-00A0C93EC93B
BIOS-Bootpartition 21686148-6449-6E6F-744E-656564454649[5]
Windows von Microsoft reservierte Partition (MSR) E3C9E316-0B5C-4DB8-817D-F92DF00215AE
Microsoft Wiederherstellungspartition DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
Basic Data Partition EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
Logical Disk Manager Partition für Meta-Daten 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
Logical Disk Manager Partition für Daten AF9B60A0-1431-4F62-BC68-3311714A69AD
HP-UX Partition für HP-UX-LVM 75894C1E-3AEB-11D3-B7C1-7B03A0000000
Service Partition E2A1E728-32E3-11D6-A682-7B03A0000000
Linux Data partition (veraltet) EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
Data partition (neu) 0FC63DAF-8483-4772-8E79-3D69D8477DE4
/home partition (systemd) 933AC7E1-2EB4-4F13-B844-0E14E2AEF915
RAID partition A19D880F-05FC-4D3B-A006-743F0F84911E
Swap partition 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
Partition für Linux-LVM E6D6D379-F507-44C2-A23C-238F2A3DF928
„plain” dm-crypt Partition 7FFEC5C9-2D00-49B7-8941-3EA10A5586B7[6][7]
LUKS Partition CA7D7CCB-63ED-4C53-861C-1742536059CC[8][9]
Reserved 8DA63339-0007-60C0-C436-083AC8230908
FreeBSD Data partition 516E7CB4-6ECF-11D6-8FF8-00022D09712B
Swap partition 516E7CB5-6ECF-11D6-8FF8-00022D09712B
Unix File System (UFS) partition 516E7CB6-6ECF-11D6-8FF8-00022D09712B
Partition für FreeBSD-LVM (Vinum) 516E7CB8-6ECF-11D6-8FF8-00022D09712B
ZFS partition 516E7CBA-6ECF-11D6-8FF8-00022D09712B
Mac OS X Partition für Hierarchical File System (HFS+) 48465300-0000-11AA-AA11-00306543ECAC
Partition für UFS 55465300-0000-11AA-AA11-00306543ECAC
Partition für CoreStorage (verschlüsselt) 53746F72-6167-11AA-AA11-00306543ECAC
Identisch mit der Partition eines Fusion Drive 53746F72-6167-11AA-AA11-00306543ECAC
Partition für Boot-Unterstützung 426F6F74-0000-11AA-AA11-00306543ECAC
Partition für Software-RAID 52414944-0000-11AA-AA11-00306543ECAC
Partition für Apple TV Recovery 5265636F-7665-11AA-AA11-00306543ECAC
Solaris Boot partition 6A82CB45-1DD2-11B2-99A6-080020736631
Root partition 6A85CF4D-1DD2-11B2-99A6-080020736631
Swap partition 6A87C46F-1DD2-11B2-99A6-080020736631
Backup partition 6A8B642B-1DD2-11B2-99A6-080020736631
/usr partition 6A898CC3-1DD2-11B2-99A6-080020736631
/var partition 6A8EF2E9-1DD2-11B2-99A6-080020736631
/home partition 6A90BA39-1DD2-11B2-99A6-080020736631
EFI_ALTSCTR 6A9283A5-1DD2-11B2-99A6-080020736631
Reservierte Partition 6A945A3B-1DD2-11B2-99A6-080020736631
6A9630D1-1DD2-11B2-99A6-080020736631
6A980767-1DD2-11B2-99A6-080020736631
6A96237F-1DD2-11B2-99A6-080020736631
6A8D2AC7-1DD2-11B2-99A6-080020736631

Begrenzungen[Bearbeiten]

Die GPT verwendet Logical Block Addressing (LBA) mit 64 Bit umfassenden Einträgen, sodass (bei 512 Byte Sektorgröße) Festplatten bis zu einer Gesamtgröße von 8 Zebibyte adressiert und diese in beliebig viele Partitionen aufgeteilt werden können.

Unterstützung in Betriebssystemen[Bearbeiten]

Für Betriebssysteme, die auf der IA64-Architektur (überwiegend Großrechner) aufbauen, ist die Unterstützung von GPT zwingend notwendig, da diese Rechner statt des BIOS das UEFI zum Booten verwenden. Darunter fallen die entsprechenden IA64-Versionen von FreeBSD, HP-UX, Linux, NetBSD, OpenVMS und Microsoft Windows. Auch Mac OS X unterstützt es seit Umstellung der Apple Macintosh auf Intel-Prozessoren Anfang 2006, sowie die seit Anfang 2005 verfügbare, für die IA64-Architektur angepasste Version von Solaris.

Die Versionen von Microsoft Windows XP, die noch für die 32-Bit-Intel i386-Architektur entwickelt wurden, können dagegen auf einer GPT-Festplatte nur mit Einschränkungen installiert und betrieben werden. Unter anderem lesen sie nur den MBR, nicht aber die GPT, um Partitionierungsdaten zu erhalten. Es stehen aber im MBR von GPT-Platten maximal drei primäre Partitionen zur Verfügung, da der MBR nicht mehr als vier Einträge zulässt, wovon die erste Partition bereits für die EFI-Firmware reserviert ist. Außerdem werden erweiterte Partitionen, die als Container mehrere logische Partitionen enthalten können, von GPT nicht mehr unterstützt.

Bis zum Erscheinen von Windows Vista Anfang 2007 richteten sich die 64-Bit-Windows-Versionen vornehmlich an Server-Betreiber und professionelle Anwender (z. B. CAD oder Grafik/Design). Dazu zählt auch die bereits 2005 erschienene Windows XP Professional x64 Edition. Bei deren Erscheinen war die umfassende GPT-Unterstützung durch entsprechende 64-Bit-Treiber nur bei ausgesuchter Hardware vorhanden. Mit Erscheinen von Vista wurde die Verfügbarkeit von 64-Bit-Treibern generell besser, sodass diese in der Regel ebenfalls die x64-Version von XP unterstützen.

Das Fachmagazin c’t konnte in der Anfangsphase der Einführung während des Tests einer 4 TB großen, mit GPT partitionierten Festplatte feststellen, dass zahlreiche Festplattentreiber namhafter Hersteller beim Schreiben auf Bereiche jenseits von 2 TB die Daten statt an der gewünschten Stelle am Anfang der Festplatte ablegten, so dass es zu massiven Datenverlusten oder gar zum Verlust der Formatierung der Festplatte kam.[10] Das Problem trat anscheinend speziell bei den 32-Bit-Versionen von Windows XP auf, die zwar teilweise schon Unterstützung für GPT mit sich führten, jedoch aufgrund ihres 32-Bit-Treiberdesigns bei der früher üblichen physischen Sektor-Größe von 512 Byte die 2-TB-Grenze nicht überschreiten konnten.[11] Da der Einsatz solcher Partitionen damals noch hauptsächlich bei Servern anzutreffen war, ergaben sich diese Probleme am ehesten dann, wenn die Festplatten eines solchen Systems mit anderen Rechnern ausgetauscht wurden.

Ein 64-Bit-Linux kann – ganz ohne UEFI oder gesonderte BIOS-Unterstützung – mit GRUB2 von einer GPT-Partition booten. Es ist also kein UEFI dazu notwendig – die Kopplung von GPT an (U)EFI ist somit nicht zwingend.[1]

Quellen[Bearbeiten]

  1. a b Zeitschrift c’t Nr. 04/2011, S. 170ff. – Linux kann ohne gesonderte BIOS-Unterstützung GPT verwenden und von GPT-Partition booten
  2. List of partition identifiers for PCs. Technische Universität Eindhoven. Abgerufen am 18. April 2012.
  3. http://www.uefi.org/home/ (U)EFI Specification (englisch)
  4. e09127r3 EDD-4 Hybrid MBR boot code annex (PDF; 119 kB) Abgerufen am 18. Mai 2012.
  5. Keine valide UUID, sondern einfach der String „!haHdInotNeedEFI“ in Hexadezimaldarstellung.
  6. http://www.saout.de/pipermail/dm-crypt/2014-January/003855.html
  7. http://www.saout.de/pipermail/dm-crypt/2014-January/003859.html
  8. http://www.saout.de/pipermail/dm-crypt/2014-January/003855.html
  9. http://www.saout.de/pipermail/dm-crypt/2014-January/003859.html
  10. c’t 2/2009 RAID-System: 4 TByte in einem Gehäuse, S. 54
  11. Microsoft technet GUID-Partitionstabelle http://technet.microsoft.com/de-de/library/cc773223.aspx