GUID Partition Table (GPT), zu deutsch GUID-Partitionstabelle (von ), ist ein Standard für das Format von Partitionstabellen auf Datenträgern wie beispielsweise Festplatten. Die Spezifikation ist Teil des UEFI-Standards, der ausgehend von Großrechnern etwa seit dem Jahr 2000 auch auf PCs seit rund 2010 das BIOS ersetzte. GPT ist dabei der Nachfolger der Partitionstabelle des Master Boot Record. GUID-Partitionstabellen können unter Einschränkungen auch auf Computern mit einem BIOS als Firmware verwendet werden.

Aufbau 300px|mini|Schematische Darstellung einer GPT. Jeder LBA-Block entspricht einem Sektor der Festplatte und ist 512 Bytes groß. Negative Zahlen stehen für eine Position vom Ende des Datenträgers an gemessen, wobei LBA −1 der letzte adressierbare Block ist.

Entsprechend dem GPT-Schema besteht ein Datenträger aus den folgenden Bereichen: Master Boot Record (MBR) in Sektor 0 (dem ersten, 512 Bytes großen Datenblock), dessen spezielle Konfiguration den Einsatz der Platte auch unter MBR-Betriebssystemen erlaubt und vor Veränderungen durch nicht-GPT-taugliche MBR-Partitionierungstools schützt (Schutz-MBR; von ) primäre GUID-Partitionstabelle (GPT), bestehend aus Header und Partitionseinträgen Partitionen sekundäre GPT, bestehend aus Header und Partitionseinträgen

Die sekundäre GUID-Partitionstabelle 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 beide bzw. welche der beiden GPT fehlerhaft sind.

MBR-Partitionstabelle 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 nicht kennen, zugegriffen werden soll (daher auch ). Als Partitionskennung wird der Wert EE16 für einen Schutz-MBR (mit nachfolgender GUID-Partitionstabelle) oder EF16 bei einer EFI-Systempartition verwendet.

Header der GUID-Partitionstabelle Im zweiten Sektor/Block (LBA 1) befindet sich der Header der primären GPT und im letzten Sektor/Block (LBA −1) befindet sich der Header der sekundären 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 (U)EFI Specification (englisch) schreiben ein Minimum von 16.384 Bytes für die Partitionstabelle vor, so dass 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 Hexeditor 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 (von Offset 0 bis Header-Größe, dieses Feld selbst wird bei der Berechnung auf 0 gesetzt) 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 Partitionen (Letzter LBA der primären Partitionstabelle + 1, normalerweise 34) 48 8 bytes Letzter benutzbarer LBA (Erster LBA der sekundären Partitionstabelle – 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 Die Partitionseinträge werden im LBA 2 bis LBA 33 (sekundäre GPT: 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 Eindeutige Partitions-GUID 32 8 Bytes Beginn der Partition (erster LBA – Little-Endian) 40 8 Bytes Ende der Partition (letzter LBA – inklusive) 48 8 Bytes Attribute (siehe folgende Tabelle) 56 72 Bytes Partitionsname (36 UTF-16LE-Zeichen) insg. 128 Bytes

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) 60 Nur lesen (Read-only) 62 Versteckt (Hidden) 63 Nicht automatisch mounten (= keinen Laufwerksbuchstaben zuweisen)

Systempartition Für startfähige Medien, die zum Booten eines Systems verwendet werden können, ist eine spezielle Partition vorgesehen: (). Eine System-Firmware nach dem EFI-Standard sucht bei externen Medien auf dem FAT-Dateisystem der EFI-Systempartition nach Bootloadern und bietet im EFI-Bootmenü alle kompatiblen Einträge zur Auswahl an. Theoretisch wird FAT12/16/32 unterstützt, praktisch kommt jedoch durchwegs FAT32 zum Einsatz. Bei internen Startmedien, etwa der eingebauten Festplatte, muss ein installiertes System den jeweiligen EFI-Bootloader im NVRAM als Eintrag hinzufügen. Der Standardeintrag lässt sich mit Dienstprogrammen verändern, im Bootmenü werden alle konfigurierten Bootloader angezeigt.

Partitionstyp-GUIDs