GPT

Aus Foxwiki
Die (GPT)GUID Partition Table wurde im Rahmen von der UEFI-Spezifikation entwickelt und tritt als Begriff oft zusammen mit diesem BIOS-Nachfolger auf. 

Die GPT hebt einige Einschränkung des Master Boot Records auf, unter anderem, dass die maximale Größe einer Partition auf 2,2 TByte limitiert ist.

Vorteile der GPT

Folgende Vorteile ergeben sich durch die GPT:[1]

  • GPT benutzt zur Adressierung 64-bit Werte (Logical Block Adresses (LBA)), womit bis zu 9,4 Zettabyte adressiert werden können.[2]
  • Unterstützung von mehreren Partitionen - bei den meisten Konfiguration 128. Für MBR-Partitionen ist die Anzahl an primären Partitionen auf 4 limitiert.
  • Bereitstellung eines Primären und eines Backup GUID Partition Table (GPT) Headers.[3] Durch diesen Mechanismus, als auch durch die unten genannten CRC-Checksummen, wird die Sicherheit der Partitions-Metadaten erhöht. Z.B. kann beim versehentlichen Löschen des GPT Headers zu Beginn des Devices noch auf den Backup GPT Header zurückgegriffen werden.
  • Verwendung eines Protective MBR an der LBA 0 zur Gewährleistung der Abwärtskompatibilität für Werkzeuge, die nicht mit GPT umgehen können. Dieser Protective MBR des Partitions-Typs "0xee" veranlasst z.B. fdisk dazu, auf GNU Parted zu verweisen:
:~$ sudo fdisk -l /dev/sdc
WARNING: GPT (GUID Partition Table) detected on '/dev/sdc'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sdc: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders, total 156301488 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: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1   156301487    78150743+  ee  GPT
  • Einsatz von CRC32 Checksummen zur Gewährleistung der Integrität der GPT Header. Durch die Checksummen kann z.B. erkannt werden, wenn durch fehlerhafte Sektoren der Bereich des GPT Headers beschädigt wird.
  • Verwendung von GUIDs, um Partitionen eindeutig zu identifizieren, und Type GUIDs für die Kennzeichnung des Zwecks der Partition (anstatt wie beim MBR auf 1-Byte-Codes zu setzen). Es folgt als Beispiel die Ausgabe des gdisk-Programms für eine EFI System Partition:[4]
Partition number (1-4): 1
Partition GUID code: C12A7328-F81F-11D2-BA4B-00A0C93EC93B (EFI System)
Partition unique GUID: A81C2DB8-E808-4853-A67B-3982C65C23C2
First sector: 34 (at 17.0 KiB)
Last sector: 293002 (at 143.1 MiB)
Partition size: 292969 sectors (143.1 MiB)
Attribute flags: 0000000000000000
Partition name: ''
  • Jede Partition kann zusätlich einen 36-Zeichen langen, lesbaren Namen erhalten

Nachteile der GPT

Die Nachteile bzw. Probleme der GPT beziehen sich vor allem auf das Thema Kompatibilität. Ältere Betriebssysteme wie z.B. Windows XP 32-bit können mit der GPT nicht umgehen. Etwas kniffelig wird es des weiteren bei der Einrichtung eines Dual-Boot-Systems mit Windows unter UEFI und einem Linux, welches im BIOS-Modus starten soll.

Aufbau der GPT

Datei:Guid-partition-table.png
Ein Beispiel für den Aufbau einer GPT. Quelle: UEFI Specification 2.3, S. 100 (uefi.org)

Wie bereits erwähnt enthält der erste logische Block (LBA 0) einen Protective MBR, um die Kompatibilität zu Tools zu gewähren, die das GPT-Format nicht beherrschen. Zu Beginn des zweiten logischen Blocks (LBA 1) befindet sich die erste Instanz des GPT Headers, die zweite findet sich am letzten logischen Block wieder (vgl. Abb. rechts).

GPT Header

Der GPT Header definiert jene Bereiche an LBAs, die von Partition Entrys genutzt werden können. Ein Entry erhält dabei immer einen First Usable LBA und einen Last Usable LBA, in denen die Daten der zugehörigen Partition abgelegt werden müssen. Zur Identifikation des Headers und seinen Einträgen steht eine Disk GUID bereit, die zur eindeutigen Identifikation des Devices genutzt werden kann:

Disk /dev/sdc: 156301488 sectors, 74.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): F8FAC3BE-EB16-49DD-A4B4-E3C1472E2D9B
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 156301454
Partitions will be aligned on 1-sector boundaries
Total free space is 16 sectors (8.0 KiB)

Nach den Header Informationen folgen die Einträge zur Beschreibung der einzelnen Partitionen (s.a. Abb. rechts, die violett markierten Bereiche). Das sog. "Partition Entry Array" (dessen Beginn im Header durch den Eintrag "PartitionEntryLBA" vermerkt ist) ist eine Array, dessen Einträge auf die Start und Ende LBAs der Partitionen verweist. Zur Sicherstellung der Integrität dieses Arrays befindet sich im GPT Header außerdem eine CRC32 Checksumme.

Zusätzlich zu den LBAs enthält ein Partition Entry eine Unique Partition GUID zur eindeutigen Identifikation der Partition. Der Zweck der Partition wird durch die Partition Type GUID festgelegt, dies entspricht den OS Type Feldern des MBR.[5] Hier z.B. die GUIDs einer Linux Software RAID Partition:

[...]
Partition GUID code: A19D880F-05FC-4D3B-A006-743F0F84911E (Linux RAID)
Partition unique GUID: A50EFBF2-BA83-425D-94E0-378523EBE091
[...]

Einige Type GUIDs wurden im Zuge der Spezifikation bereits vergeben:

  • Unbenutzter Eintrag: 00000000-0000-0000-0000-000000000000
  • EFI System Partition (ESP): C12A7328-F81F-11D2-BA4B-00A0C93EC93B
  • Legacy MBR Partition: 024DEE41-33E7-11D3-9D69-0008C781F39F

Kurz noch einmal die wichtigsten Teile des GPT Headers und des Partition Entries:[1]

  • Header
    • Eine Signatur und eine Revision Number spezifizieren das Datenformat des Partition Headers
    • Die Größe des Headers sowie die CRC32 Checksumme der GPT Header Struktur
    • Disk GUID: GUID für die eindeutige Identifikation der Disk
    • Start LBA des GUID Partition Entry Arrays
    • CRC32 Checksumme des Partition Entry Arrays
    • Das Partition Entry Array zur Beschreibung der einzelnen Partitionen
  • Entry
    • Partition Type GUID: Unique ID, die den Zweck der Partition beschreibt
    • Unique Partition GUID: GUID, die für jeden Partitionseintrag eindeutig ist
    • Start und End LBA
    • Ein lesbarer Partitionsname

Betriebssystem-Unterstützung

Linux

Da die GPT im Zuge der UEFI-Spezifikation erarbeitet wurde gibt es bei der Verwendung von GPT mit UEFI keine Hindernisse. Bei der Verwendung eines traditionellen BIOS mit GPT gibt es unter Linux folgendes zu beachten:

  • GRUB 2 benötigt beim Booten mit BIOS und GPT eine BIOS Boot partition, auf der sich die GRUB relevanten Teile befinden werden.[6][7]

Das Booten mit UEFI und GPT wird vor allem durch den aktuellen Grub 2 unterstützt.[8] Fedora entwickelte außerdem einen gepatchten Grub Legacy der diese Funktionalität anbietet. Ab Fedora 16 erstellt der Installer auch für BIOS-Systeme automatisch die Partition im GPT-Format.[9]

Windows

Die Unterstützung von GPT für Windows ergibt sich wie folgt:[10]

  • Windows XP x64 kann GPT-Datenträger nur als Datenpartition benutzen.
    • Die 32-bit Version verwendet nur den Protective MBR, auf die Partition kann nicht zugegriffen werden, da sie nicht gemounted wird. Der Datenzugriff kann über Applikationen erfolgen.
  • Ab Windows Server 2003 Service Pack 1 können alle Windows Server Versionen GPT-Partitionen als Datenträger verwenden. Zum Booten von einem GPT-Datenträger wird ein 64-bit Itanium-System benötigt.
  • Windows 7, Windows Vista und Windows Server 2008 können GPT-Partitionen als Datenträger verwenden. Zum Booten wird ein 64-bit System mit UEFI benötigt.

Einzelnachweise

  1. 1,0 1,1 UEFI Specification 2.3.1 (uefi.org)
  2. AMI - An Introduction to UEFI (embedded.communities.intel.com)
  3. Windows and GPT FAQ (msdn.microsoft.com)
  4. gsdisk bei ubuntuusers (ubuntuusers.de)
  5. Partition Type Entries (win.tue.nl)
  6. ubuntuusers GRUB-Grundlagen (wiki.ubuntuusers.de)
  7. Official Grub Manual (gnu.org)
  8. Booting from GPT (rodsbooks.com)
  9. Fedora 16 Release Notes (docs.fedoraproject.org)
  10. Windows and GPT FAQ - Windows Disk Support (msdn.microsoft.com)

Vorlage:Gschoenberger

en:GUID Partition Table