# GUID Partition Table

Il GUID Partition Table (GPT), in informatica, è uno standard per la definizione della tabella delle partizioni (in inglese partition table) su una unità di memoria (unità di memoria a stato solido o disco fisso). È parte dello standard Extensible Firmware Interface (EFI). L'EFI utilizza il GPT laddove il BIOS utilizza il Master Boot Record (MBR).

## Caratteristiche

Mentre il MBR inizia con il Master Boot Code, che contiene un file eseguibile che ha lo scopo di identificare e avviare la partizione attiva, il GPT utilizza le potenzialità offerte dall'EFI per realizzare queste funzionalità. Per motivi di protezione e compatibilità l'unità inizia con un riferimento MBR, cui segue il GPT stesso con la tabella delle partizioni.
Il GPT utilizza l'indirizzamento a blocchi logici (LBA, acronimo inglese di Logical block addressing) anziché l'indirizzamento di tipo cilindro-testina-settore (CHS, cylinder-head-sector) utilizzato dal MBR. Le informazioni per la compatibilità con il MBR sono contenute nello LBA 0, l'intestazione GPT si trova nello LBA 1, a cui segue la tabella delle partizioni vera e propria. Nel sistema operativo Windows a 64-bit, vengono riservati 16.384 bytes, o 32 settori per il GPT, lasciando lo LBA 34 come primo settore utilizzabile dell'unità.
Il GPT è ridondante, poiché scrive l'intestazione e la tabella delle partizioni sia all'inizio che alla fine dell'unità.

## Compatibilità MBR (LBA 0)

Lo scopo principale del MBR all'inizio dell'unità (LBA 0) è quello di evitare alle applicazioni per unità MBR di non riconoscere ed eventualmente sovrascrivere unità GPT. A tale scopo, viene indicata una singola partizione, che comprende l'intera unità GPT. Il System ID per la partizione viene fissato al valore 0xEE, indicando che il sistema usa il GPT. L'EFI ignora il MBR. I sistemi operativi a 32-bit che non gestiscono unità GPT riconoscono questo ID e mostrano all'utente l'unità GPT come inaccessibile. I sistemi operativi più obsoleti in generale riconosceranno sull'unità una singola partizione di tipo sconosciuto, senza spazio libero; in questo modo vengono generalmente rifiutate le modifiche dell'unità, a meno che l'utente non richieda esplicitamente e confermi la cancellazione della partizione. In questo modo, vengono prevenute cancellazioni accidentali dell'unità.

## Intestazione della tabella delle partizioni (LBA 1)

L'intestazione della tabella delle partizioni (LBA 1) definisce quali blocchi dell'unità sono utilizzabili dall'utente. Definisce inoltre il numero e la dimensione degli elementi della tabella delle partizioni. Su una macchina con Windows Server 2003 a 64-bit, vi sono 128 elementi riservati, ognuno di 128 bytes. Perciò possono essere create al massimo 128 partizioni.
L'intestazione contiene il GUID (Globally Unique Identifier, in inglese) dell'unità. Memorizza la propria dimensione e posizione (sempre LBA 1) e la dimensione e posizione della intestazione e della tabella GPT secondaria (sempre nell'ultimo settore dell'unità). È importante notare che contiene anche una checksum CRC32 per sé e per la tabella delle partizioni, che viene verificata dai processi EFI all'avvio. Poiché l'EFI utilizza e verifica questa checksum, è sconsigliato utilizzare editor esadecimali per modificare il contenuto del GPT, dal momento che queste modifiche potrebbero invalidare la checksum. In questo caso, l'EFI dovrebbe sovrascrivere il GPT primario con il secondario, o, se entrambi contenessero checksum non valide, non sarebbe in grado di accedere all'unità.

## Descrizione della partizione (LBA 2-33)

Le righe della tabella delle partizioni (LBA 2-33) sono semplici e chiare. Per ogni riga, i primi 16 bytes identificano il GUID del tipo di partizione (un esempio di GUID di un EFI System Partition è {C12A7328-F81F-11D2-BA4B-00A0C93EC93B}), mentre i successivi 16 bytes contengono il GUID univoco della partizione. All'interno di ogni riga sono anche memorizzati i LBA (ognuno di 64 bit) che individuano l'inizio e la fine della partizione considerata, oltre al nome e agli attributi di quest'ultima.

## GUID per tipo di partizione

| Sistema Operativo | Tipo di partizione | Globally-Unique Identifier (GUID) |
| (None) | Unused entry | 00000000-0000-0000-0000-000000000000 |
| (None) | MBR partition scheme | 024DEE41-33E7-11D3-9D69-0008C781F39F |
| (None) | EFI System Partition | C12A7328-F81F-11D2-BA4B-00A0C93EC93B |
| Windows | Microsoft Reserved Partition | E3C9E316-0B5C-4DB8-817D-F92DF00215AE |
| Windows | Basic Data Partition | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 |
| Windows | Logical Disk Manager metadata partition | 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3 |
| Windows | Logical Disk Manager data partition | AF9B60A0-1431-4F62-BC68-3311714A69AD |
| HP-UX | Data partition | 75894C1E-3AEB-11D3-B7C1-7B03A0000000 |
| HP-UX | Service Partition | E2A1E728-32E3-11D6-A682-7B03A0000000 |
| Linux | Data partition | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 |
| Linux | RAID partition | A19D880F-05FC-4D3B-A006-743F0F84911E |
| Linux | Swap partition | 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F |
| Linux | Logical Volume Manager (LVM) partition | E6D6D379-F507-44C2-A23C-238F2A3DF928 |
| Linux | Reserved | 8DA63339-0007-60C0-C436-083AC8230908 |
| FreeBSD | Data partition | 516E7CB4-6ECF-11D6-8FF8-00022D09712B |
| FreeBSD | Swap partition | 516E7CB5-6ECF-11D6-8FF8-00022D09712B |
| FreeBSD | Unix File System (UFS) partition | 516E7CB6-6ECF-11D6-8FF8-00022D09712B |
| FreeBSD | Vinum volume manager partition | 516E7CB8-6ECF-11D6-8FF8-00022D09712B |
| macOS | Hierarchical File System (HFS+) partition | 48465300-0000-11AA-AA11-00306543ECAC |
| macOS | Apple UFS | 55465300-0000-11AA-AA11-00306543ECAC |
| macOS | Apple RAID partition | 52414944-0000-11AA-AA11-00306543ECAC |
| macOS | Apple RAID partition, offline | 52414944-5F4F-11AA-AA11-00306543ECAC |
| macOS | Apple Boot partition | 426F6F74-0000-11AA-AA11-00306543ECAC |
| macOS | Apple Label | 4C616265-6C00-11AA-AA11-00306543ECAC |
| macOS | Apple TV Recovery partition | 5265636F-7665-11AA-AA11-00306543ECAC |
| Solaris | Boot partition | 6A82CB45-1DD2-11B2-99A6-080020736631 |
| Solaris | Root partition | 6A85CF4D-1DD2-11B2-99A6-080020736631 |
| Solaris | Swap partition | 6A87C46F-1DD2-11B2-99A6-080020736631 |
| Solaris | Backup partition | 6A8B642B-1DD2-11B2-99A6-080020736631 |
| Solaris | /usr partition | 6A898CC3-1DD2-11B2-99A6-080020736631 |
| Solaris | /var partition | 6A8EF2E9-1DD2-11B2-99A6-080020736631 |
| Solaris | /home partition | 6A90BA39-1DD2-11B2-99A6-080020736631 |
| Solaris | EFI_ALTSCTR | 6A9283A5-1DD2-11B2-99A6-080020736631 |
| Solaris | Reserved partition | 6A945A3B-1DD2-11B2-99A6-080020736631 |
| Solaris | Reserved partition | 6A9630D1-1DD2-11B2-99A6-080020736631 |
| Solaris | Reserved partition | 6A980767-1DD2-11B2-99A6-080020736631 |
| Solaris | Reserved partition | 6A96237F-1DD2-11B2-99A6-080020736631 |
| Solaris | Reserved partition | 6A8D2AC7-1DD2-11B2-99A6-080020736631 |
Nota: Linux e Windows usano lo stesso GUID per le loro rispettive partizioni dati
Nota: I GUID in questa tabella sono riportati con la convenzione di ordinamento dei byte di tipo little-endian. Per esempio, il GUID per una EFI System partition (Esp) viene qui riportato come C12A7328-F81F-11D2-BA4B-00A0C93EC93B, che corrisponde alla sequenza di 16 bytes 28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B (solo i primi 3 blocchi hanno i byte invertiti).