GUID Partition Table
GUID Partition Table (GPT), zu deutsch GUID-Partitionstabelle (von: 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 das BIOS in PCs ersetzen soll. GPT ist dabei der Nachfolger der Master-Boot-Record-Partitionstabellen. GUID-Partitionstabellen können aber auch mit heutigen BIOS-Versionen verwendet werden.[1]
Aufbau
Entsprechend dem GPT-Schema besteht ein Datenträger aus den folgenden Bereichen:
- MBR (Master Boot Record, als Schutz vor Veränderungen durch alte Partitionierungstools)
- primäre GPT, bestehend aus Header und Partitionseinträgen
- Partitionen
- sekundäre GPT, bestehend aus Partitionseinträgen und Header
Die sekundäre GPT am Ende des Datenträgers ist eine Kopie der primären GPT am Anfang des Datenträgers. Durch diese Redundanz kann im Fehlerfall die Partitionstabelle wiederhergestellt werden. Da in der GPT eine Prüfsumme eingetragen wird, kann festgestellt werden, welche der beiden GPT konsistent ist.
MBR-Partitionstabelle
Im ersten Sektor/Block des Datenträgers (LBA 0) befindet sich der Master Boot Record (MBR) mit einer klassischen MBR-Partitionstabelle und einem Eintrag, der den Rest des Datenträgers belegt. Für ein Betriebssystem, das nur MBR- aber keine GPT-Partitionstabellen lesen kann, erscheint der gesamte Platz auf dem Datenträger als belegt. Dieser MBR stellt einen Schutz für den Inhalt des Datenträgers dar, falls auf diesen mit alten Partitionierungstools, die das GPT-Schema nicht kennen, zugegriffen werden soll. Als Partitionskennung wird der Wert EE16 für einen legacy MBR mit folgendem EFI-Header bzw. EF16 bei einem „reinen“ EFI-Dateisystemen eingetragen.[2]
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 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. Daher macht es keinen Sinn den Header, z. B. mit einem Hex-Editor, zu bearbeiten, da die Checksumme ungültig und das System instabil bis unbrauchbar wird.
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
Die Partitionseinträge werden im LBA 2 bis LBA 33 (sekundäres 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 Code-Einheit) |
* | 128 | Insgesamt |
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 (bei Win, kein Laufwerksbuchstabe zuweisen) |
Partitionstyp-GUIDs
Betriebssystem | Partitionstyp | GUID |
---|---|---|
(Kein Betriebssystem) | Unbenutzt | 00000000-0000-0000-0000-000000000000 |
MBR | 024DEE41-33E7-11D3-9D69-0008C781F39F | |
EFI-Systempartition (ESP) | C12A7328-F81F-11D2-BA4B-00A0C93EC93B | |
BIOS-Bootpartition | 21686148-6449-6E6F-744E-656564454649 | |
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 | |
RAID partition | A19D880F-05FC-4D3B-A006-743F0F84911E | |
Swap partition | 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F | |
Partition für Linux-LVM | E6D6D379-F507-44C2-A23C-238F2A3DF928 | |
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 | |
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
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 Zettabyte adressiert und diese in beliebig viele Partitionen aufgeteilt werden können.
Unterstützung in Betriebssystemen
Für Betriebssysteme, die auf der IA64-Architektur (überwiegend Großrechner) aufbauen, ist die Unterstützung von GPT zwingend notwendig, da diese Rechner EFI 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 auf einer GPT-Festplatte nur mit Einschränkungen installiert werden. Unter anderem lesen sie nur den Master Boot Record (MBR), um Partitionierungsdaten zu erhalten. Es stehen somit nur maximal drei Partitionen zur Verfügung, da der MBR nicht mehr als vier Einträge zulässt, die erste Partition aber für die EFI-Firmware reserviert ist und erweiterte Partitionen, die als Container mehrere logische Partitionen enthalten können, von GPT nicht mehr unterstützt werden. (Siehe: Verständlichere Erklärung, aber unter Vorbehalt)
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 formatierten 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.[5] 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 die 2-TB-Grenze nicht überschreiten konnten.[6] Da der Einsatz solcher Partitionen damals noch hauptsächlich bei Servern anzutreffen war, ergaben sich solche 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
- ↑ a b Zeitschrift c’t Nr. 04/2011, S. 170ff. – Linux kann ohne gesonderte BIOS-Unterstützung GPT verwenden und von GPT-Partition booten
- ↑ List of partition identifiers for PCs. Technische Universität Eindhoven, abgerufen am 18. April 2012.
- ↑ http://www.uefi.org/home/ (U)EFI Specification (englisch)
- ↑ e09127r3 EDD-4 Hybrid MBR boot code annex. Abgerufen am 18. Mai 2012.
- ↑ c’t 2/2009 RAID-System: 4 TByte in einem Gehäuse, S. 54
- ↑ Microsoft technet GUID-Partitionstabelle http://technet.microsoft.com/de-de/library/cc773223.aspx