GUID Partition Table
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]
Inhaltsverzeichnis |
Aufbau [Bearbeiten]
Entsprechend dem GPT-Schema besteht ein Datenträger aus den folgenden Bereichen:
- MBR, deren spezielle Konfiguration den Einsatz der Platte auch unter MBR-Betriebs-Systemen 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 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, ob und ggf. welche der GPT konsistent 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. Die 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 legacy MBR mit folgendem EFI-Header bzw. EF16 bei einem „reinen“ EFI-Dateisystemen eingetragen.[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ä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 [Bearbeiten]
| 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[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 | |
| 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 [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.[6] 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 physikalischen Sektor-Größe von 512 Byte die 2-TB-Grenze nicht überschreiten konnten.[7] 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 [Bearbeiten]
- ↑ 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 (PDF; 119 kB) Abgerufen am 18. Mai 2012.
- ↑ Keine valide UUID, sondern einfach der String „!haHdInotNeedEFI“ in Hexadezimaldarstellung.
- ↑ 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
| Acorn-Partitionstabelle | Acorn |
| Apple Partition Map | Apple Macintosh (m68k) | Apple Macintosh (PowerPC) |
| Atari Partition Table | Atari |
| Disklabel | Alpha (OSF Disklabel) | BSD | SGI (SGI Disklabel) | Sun Microsystems (Sun Disklabel) |
| GUID Partition Table | Apple Macintosh (IA-32) | Disklabel (IA-32) | IA-32-PC (UEFI) | Itanium (IA-64) |
| Master Boot Record | Disklabel (IA-32) | IBM-PC-kompatibel (BIOS) |
| Rigid Disk | Amiga |
| Ultrix Partition Table | Ultrix |
| Volume Table Of Contents | Disklabel |
Zugriff auf Partitionen
Obwohl einige Betriebssysteme auch Datenspeicher mit anderen Partitionstabellen verwenden können, kann eine bestimmte Rechnerarchitektur meist nur von der hier aufgeführten Partitionstabelle starten.