# Tabela de partição GUID

A tabela de partição GUID (do inglês GUID partition table, ou GPT) é um tipo padrão de layout de tabela de partição usado em um dispositivo de armazenamento físico, como uma unidade de disco rígido ou uma unidade de estado sólido, usando um identificador único global chamado de GUID. Embora seja parte do padrão Unified Extensible Firmware Interface (UEFI) (a proposta de substituição da Intel para o BIOS da IBM), ela também é utilizada em alguns sistemas BIOS devido às limitações da tabela de partição MBR (Master Boot Record), que usam 32 bits para armazenamento do LBA (endereçamento de bloco lógico) e informações de tamanho em um setor de disco de, tradicionalmente, 512 bytes.
Todos os sistemas operacionais modernos suportam GPT. Alguns, incluindo o macOS e o Windows, suportam a inicialização a partir de partições GPT apenas em sistemas com firmware UEFI e com arquitetura 64 bits, porém o FreeBSD e a maioria das distribuições Linux podem inicializar a partir de partições GPT em sistemas tanto com interface de firmware BIOS herdado e UEFI.
O Windows XP e versões anteriores do Windows não podem (sem modificações) ler ou escrever em unidades formatadas com uma tabela de partição GUID, no entanto, o Windows Vista, o Windows 7, o Windows 8 e o Windows 10 possuem esta capacidade.

## Recursos

Atualmente, esquemas de tabela de partição baseados em MBR inserem a informação de particionamento no registro mestre de inicialização (da sigla MBR - Master Boot Record(em inglês)) (que no sistema de BIOS também é o recipiente para o código que inicia o processo de inicialização dos discos). Em GPT, informações da tabela de partição são armazenadas no cabeçalho do GPT, mas para manter a compatibilidade a entrada MBR é mantida como primeiro setor do disco, seguido de um cabeçalho de tabelas de partições primárias, o início efetivo do GPT.
Assim como nos MBRs mais recentes, o GPT utiliza endereçamento de bloco lógico (LBA (em inglês)) no lugar do histórico endereçamento cilindro-cabeça-setor (CHS - Cylinder-Head-Sector(em inglês)) dos MBRs originais. Informações MBRs de compatibilidade são armazenadas no LBA 0, o cabeçalho do GPT está no LBA 1, e é seguido da tabela de partição. No Microsoft Windows 64-bits, 16.384 bytes, ou 32 setores, são reservados para o GPT, deixando o LBA 34 como o primeiro setor útil em o disco.
Segundo a Apple Inc., "Não assuma que o tamanho do bloco sempre será 512 bytes." Dispositivos de armazenamento modernos, tais como dispositivos de armazenamento de estado sólido podem conter LBAs de 1024 bytes e algumas unidades de disco magneto ótico (mo) usam setores de 2048 bytes (drives MO, que geralmente não são particionados). Fabricantes de discos rígidos estão planejando a transição para setores de 4096 bytes, para 2010, as primeiras dessas unidades empregarão firmware que apresentará a ilusão de setores de 512 bytes para o SO.
Discos que inicializam Macs Intel são normalmente formatados com uma tabela de partição GUID, e não com os Mapas de partição Apple.
O GPT também fornece redundância. O cabeçalho e tabela de partição GPT são escritos em ambos início e final do disco.

## Variantes do MBR
### MBR de proteção (LBA 0)

Para compatibilidade limitada com versões anteriores, o espaço do MBR herdado ainda está reservado na especificação da GPT, mas agora é usado de forma a impedir que os utilitários de disco baseados em MBR reconheçam e, possivelmente, substituam os discos da GPT. Isso é conhecido como MBR protetor ou MBR de proteção (do inglês protective MBR).
Um único partition type de EEh, que abrange toda a unidade GPT (onde "toda" significa na verdade a quantidade da unidade que pode ser representada em um MBR), é indicada e a identifica como GPT. Sistemas operacionais e ferramentas que não podem ler discos GPT geralmente reconhecem o disco como contendo uma partição de tipo desconhecido e sem espaço vazio e geralmente se recusam a modificar o disco, a menos que o usuário solicite e confirme explicitamente a exclusão desta partição. Isso minimiza apagamentos acidentais. Além disso, os sistemas operacionais compatíveis com GPT podem verificar o MBR protetor e, se o tipo de partição incluída não for do tipo EEh ou se houver várias partições definidas no dispositivo de destino, o sistema operacional poderá recusar-se a manipular a tabela de partições.
Se o tamanho real do disco exceder o tamanho máximo da partição representável, usando as entradas LBA de 32 bits herdadas, na tabela de partições MBR, o tamanho gravado dessa partição será cortado no máximo, ignorando o restante do disco. Isso equivale a um tamanho máximo relatado de 2 TiB, assumindo um disco com 512 bytes por setor (veja 512e). Isso resultaria em 16 TiB com 4 setores KiB (4Kn), mas como muitos sistemas operacionais e ferramentas mais antigos são codificados para um tamanho de setor de 512 bytes ou estão limitados a cálculos de 32 bits, exceder o limite de 2 TiB pode causar problemas de compatibilidade.

### MBR híbrido (LBA 0 + GPT)

Em sistemas operacionais que oferecem suporte à inicialização baseada em GPT por meio de serviços de BIOS em vez de UEFI, o primeiro setor também pode ser usado para armazenar o primeiro estágio do código do carregador de inicialização, mas modificado para reconhecer partições GPT. O carregador de inicialização no MBR não deve assumir um tamanho de setor de 512 bytes.

## Cabeçalho de tabela de partição (LBA 1)

O cabeçalho da tabela de partição define os blocos do disco que podem ser utilizado pelo usuário (os blocos utilizáveis). Ele também define o número e o tamanho das entradas de partição que compõem a tabela de partição. No Windows Server 2003 64-bits, existem 128 entradas de partição reservadas, cada uma com 128 bytes de comprimento. Assim, 128 partições podem ser criadas. (A especificação EFI exige que um mínimo de 16.384 bytes seja reservado para a tabela de partição, de modo que esta de origem a partição de 128 registros).
O cabeçalho contém o Identificador Único Global (GUID(em inglês)) do disco. Ele grava seu próprio tamanho e a localização (sempre LBA 1) além do tamanho e localização do cabeçalho GPT secundário e tabela secundária (sempre os últimos setores no disco). É importante também que ele contenha a soma de verificação CRC32 para si e para a tabela de partição, que podem ser verificados pelo firmware, gestor e/ou sistema operacional na inicialização. Devido a isso, os editores hexa não devem ser utilizados para modificar o conteúdo do GPT, tal modificação tornaria a soma de verificação inválida. Neste caso, o GPT primário pode ser substituído com o secundário, ou, se ambos GPTs contiverem soma de verificação inválidas, não será possível acessar o disco.
Formato da Tabela de Partição :
| Deslocamento | # comprimento | Conteúdos |
| 0 | 8 bytes | Signature ("EFI PART", 45 46 49 20 50 41 52 54) |
| 8 | 4 bytes | Revision (For version 1.0, the value is 00 00 01 00) |
| 12 | 4 bytes | Header size (in bytes, usually 5C 00 00 00 meaning 92 bytes) |
| 16 | 4 bytes | CRC32 of header (0 to header size), with this field zeroed during calculation |
| 20 | 4 bytes | reserved, must be zero |
| 24 | 8 bytes | Current LBA (location of this header copy) |
| 32 | 8 bytes | Backup LBA (location of the other header copy) |
| 40 | 8 bytes | First usable LBA for partitions (primary partition table last LBA + 1) |
| 48 | 8 bytes | Last usable LBA (secondary partition table first LBA - 1) |
| 56 | 16 bytes | Disk GUID (also referred as UUID on UNIXes) |
| 72 | 8 bytes | Partition entries starting LBA (always 2 in primary copy) |
| 80 | 4 bytes | Number of partition entries |
| 84 | 4 bytes | Size of a partition entry (usually 128) |
| 88 | 4 bytes | CRC32 of partition array |
| 92 | * | reserved, must be zeroes for the rest of the block (420 bytes for a 512-byte LBA) |
| LBA Size | TOTAL | TOTAL |
Os valores para LBAs atuais e a cópia de segurança do cabeçalho principal devem ser o segundo setor do disco (1) e o último setor do disco, respectivamente. O cabeçalho secundário no final do disco identifica sua própria tabela de entradas de partição, que situa-se antes daquele cabeçalho.

## Entradas de partição (LBA 2–33)

Entradas de partição são simples e diretas. Os primeiros 16 bytes designam o tipo de partição GUID. Por exemplo, o GUID para uma partição de sistema EFI é (C12A7328-F81F-11D2-BA4B-00A0C93EC93B). Os 16 bytes seguintes aos primeiros contêm um GUID exclusivo para a partição. Os LBAs de 64-bits iniciais e finais também são registrados aqui, e o espaço é destinado para nomes de partição e atributos. Como é a natureza e a finalidade dos GUIDs, nenhum registo central é necessário para assegurar a unicidade do designadores de tipo de partição GUID.
Formato de entradas de partição GUID :
| Deslocamento | Comprimento | Conteúdos |
| 0 | 16 bytes | Tipo de partição GUID |
| 16 | 16 bytes | Partição única GUID |
| 32 | 8 bytes | Primeiro LBA (little endian) |
| 40 | 8 bytes | Último LBA (inclusivo, geralmente ímpar) |
| 48 | 8 bytes | Marcador de atributos (ex. o bit 60 significa somente-leitura) |
| 56 | 72 bytes | Nome da partição (36 códigos de unidade UTF-16LE) |
| 128 | TOTAL | TOTAL |
Segundo a Apple, "Não faça hardwire com o tamanho atual da entrada de partição (128 bytes)." o Microsoft TechNet diz que os atributos são divididos em duas partes: os 4 bytes inferiores representando atributos independentes da partição, e os 4 bytes superiores que são dependentes do tipo de partição. Microsoft usa os seguinte bits em geral:
Atributos da Partição :
| Bit | Conteúdo |
| 0 | partição do sistema (ferramentas de partição de disco devem preservar a partição como está) |
| 60 | somente-leitura |
| 62 | oculta |
| 63 | não monte automaticamente (ex. não designe uma letra de drive) |

## Sistemas operacionais suportados
### UNIX e sistemas do tipo UNIX

Detalhes do suporte GPT em sistemas UNIX e do tipo UNIX :
| Família do Sistema Operacional | Versão ou edição | Arquitetura | Suporte de leitura e escrita | Suporte de boot | Nota |
| FreeBSD | desde da 7.0 | IA-32, x86-64,ARM | Sim | Sim | Em uma configuração híbrida MBR, ambos identificadores de partição GPT e MBR podem ser utilizados. |
| Linux | Maioria das distribuições x86 Fedora 8+ e Ubuntu 8.04+ | IA-32, x86-64 | Sim | Sim | Algumas ferramentas de distribuição, como fdisk, não funcionam com GPT. Novas ferramentas como gdisk, grub.96+ patches e grub2 foram habilitados para o GPT. Limitado a 256 partições por disco. |
| macOS | Desde da 10.4.0 (alguns recursos desde da 10.4.6) | IA-32, x86-64, PowerPC, Apple Silicon | Sim | Sim | Apenas Macintosh baseados em Intel e Apple Silicon podem inicializar a partir de GPT |
| MidnightBSD | Desde da 0.4-CURRENTE | IA-32, x86-64 | Sim | Necessário BIOS | Em uma configuração híbrida MBR, ambos identificadores de partição GPT e MBR podem ser utilizados. |
| NetBSD | Desde da 6.0 | x86, x86-64 | Sim | Sim | |
| OpenBSD | Desde da 5.9 | x86_64 | Sim | Necessário UEFI | |
| Solaris | Desde do Solaris 10 | IA-32, x86-64, SPARC | Sim | Sim | |
| HP-UX | Desde do HP-UX 11.20 | IA-64 | Sim | Sim | |

### Windows: versões de 32 bits

O Windows 7 e versões anteriores não suportam UEFI em plataformas de 32 bits, e portanto, não permitem a inicialização de partições GPT.
Detalhes do suporte GPT em versões de 32 bits do Windows :
| Versão do SO | Arquitetura | Suporte de leitura e escrita | Suporte de boot | Nota |
| Windows XP | IA-32 | Não | Não | |
| Windows Server 2003 | IA-32 | Não | Não | |
| Windows Server SP1 | IA-32 | Sim | Não | MBR tem prioridade em configuração híbrida |
| Windows Vista | IA-32 | Sim | Não | MBR tem prioridade em configuração híbrida |
| Windows Server 2008 | IA-32 | Sim | Não | MBR tem prioridade em configuração híbrida |
| Windows 7 | IA-32 | Sim | Não | MBR tem prioridade em configuração híbrida |
| Windows 8 | IA-32 | Sim | Necessário UEFI | MBR tem prioridade em configuração híbrida |
| Windows 8.1 | IA-32 | Sim | Necessário UEFI | MBR tem prioridade em configuração híbrida |
| Windows 8.1 | IA-32 | Sim | Necessário UEFI | MBR tem prioridade em configuração híbrida |
| Windows 10 | IA-32 | Sim | Necessário UEFI | MBR tem prioridade em configuração híbrida |

### Windows: Edições de 64 bits

Limitado à 128 partições por disco
Detalhes do suporte GPT em versões de 64 bits do Windows :
| Versão do SO | Arquitetura | Suporte de leitura e escrita | Suporte de boot | Nota |
| Windows XP Professional x64 Edition Windows Server 2003 | x64 | Sim | Não | MBR tem prioridade em configuração híbrida |
| Windows Server 2003 | IA-64 | Sim | Sim | MBR tem prioridade em configuração híbrida |
| Windows Vista | x64 | Sim | Necessário UEFI | MBR tem prioridade em configuração híbrida |
| Windows Server 2008 | x64 | Sim | Necessário UEFI | MBR tem prioridade em configuração híbrida |
| Windows Server 2008 | IA-64 | Sim | Sim | MBR tem prioridade em configuração híbrida |
| Windows 7 | x64 | Sim | Necessário UEFI | MBR tem prioridade em configuração híbrida |
| Windows Server 2008 R2 | IA-64 | Sim | Sim | MBR tem prioridade em configuração híbrida |
| Windows 8 Windows Server 2012 | x64 | Sim | Necessário UEFI | MBR tem prioridade em configuração híbrida |
| Windows 8.1 | x64 | Sim | Necessário UEFI | MBR tem prioridade em configuração híbrida |
| Windows 10 | x64 | Sim | Necessário UEFI | MBR tem prioridade em configuração híbrida |
| Windows Server 2016 | x64 | Sim | Necessário UEFI | MBR tem prioridade em configuração híbrida |

## Tipos de partição GUID

| SO associado | Tipo de partição | Identificador Único Global (GUID(em inglês)) |
| (Nenhum) | Entrada não usada | 00000000-0000-0000-0000-000000000000 |
| (Nenhum) | Esquema de partição MBR | 024DEE41-33E7-11D3-9D69-0008C781F39F |
| (Nenhum) | Partição do sistema EFI | C12A7328-F81F-11D2-BA4B-00A0C93EC93B |
| (Nenhum) | Partição de Boot da BIOS | 21686148-6449-6E6F-744E-656564454649 |
| Microsoft Windows | Partição reservada pela Microsoft | E3C9E316-0B5C-4DB8-817D-F92DF00215AE |
| Microsoft Windows | Partição básica de dados | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 |
| Microsoft Windows | Gerenciador de disco lógico metadata partition | 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3 |
| Microsoft Windows | Partição de dados do Gerenciador de disco lógico | AF9B60A0-1431-4F62-BC68-3311714A69AD |
| Microsoft Windows | Ambiente de Resgate do Windows | DE94BBA4-06D1-4D40-A16A-BFD50179D6AC |
| HP-UX | Partição de dados | 75894C1E-3AEB-11D3-B7C1-7B03A0000000 |
| HP-UX | Partição de serviço | E2A1E728-32E3-11D6-A682-7B03A0000000 |
| Linux | Data partition | EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 |
| Linux | Partição RAID | A19D880F-05FC-4D3B-A006-743F0F84911E |
| Linux | Partição Swap | 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F |
| Linux | Partição do Gerenciador volume lógico (LVM) | E6D6D379-F507-44C2-A23C-238F2A3DF928 |
| Linux | Reservado | 8DA63339-0007-60C0-C436-083AC8230908 |
| FreeBSD | Partição de Boot | 83BD6B9D-7F41-11DC-BE0B-001560B84F0F |
| FreeBSD | Partição de dados | 516E7CB4-6ECF-11D6-8FF8-00022D09712B |
| FreeBSD | Partição Swap | 516E7CB5-6ECF-11D6-8FF8-00022D09712B |
| FreeBSD | Partição Unix File System (UFS) | 516E7CB6-6ECF-11D6-8FF8-00022D09712B |
| FreeBSD | Partição Vinum volume manager | 516E7CB8-6ECF-11D6-8FF8-00022D09712B |
| FreeBSD | Partição ZFS | 516E7CBA-6ECF-11D6-8FF8-00022D09712B |
| Mac OS X | Partição Sistema de arquivos hierárquico (HFS+(em inglês)) | 48465300-0000-11AA-AA11-00306543ECAC |
| Mac OS X | Apple UFS | 55465300-0000-11AA-AA11-00306543ECAC |
| Mac OS X | ZFS | 6A898CC3-1DD2-11B2-99A6-080020736631 |
| Mac OS X | Partição RAID da Apple | 52414944-0000-11AA-AA11-00306543ECAC |
| Mac OS X | Partição RAID da Apple RAID, desconectada | 52414944-5F4F-11AA-AA11-00306543ECAC |
| Mac OS X | Partição Boot da Apple | 426F6F74-0000-11AA-AA11-00306543ECAC |
| Mac OS X | Rótulo da Apple | 4C616265-6C00-11AA-AA11-00306543ECAC |
| Mac OS X | Partição de resgate da TV Apple | 5265636F-7665-11AA-AA11-00306543ECAC |
| Solaris | Partição de Boot | 6A82CB45-1DD2-11B2-99A6-080020736631 |
| Solaris | Partição Raíz | 6A85CF4D-1DD2-11B2-99A6-080020736631 |
| Solaris | Partição Swap | 6A87C46F-1DD2-11B2-99A6-080020736631 |
| Solaris | Partição cópia de segurança | 6A8B642B-1DD2-11B2-99A6-080020736631 |
| Solaris | Partição /usr | 6A898CC3-1DD2-11B2-99A6-080020736631 |
| Solaris | Partição /var | 6A8EF2E9-1DD2-11B2-99A6-080020736631 |
| Solaris | Partição /home | 6A90BA39-1DD2-11B2-99A6-080020736631 |
| Solaris | Setor alternado | 6A9283A5-1DD2-11B2-99A6-080020736631 |
| Solaris | Partição Reservada | 6A945A3B-1DD2-11B2-99A6-080020736631 |
| Solaris | Partição Reservada | 6A9630D1-1DD2-11B2-99A6-080020736631 |
| Solaris | Partição Reservada | 6A980767-1DD2-11B2-99A6-080020736631 |
| Solaris | Partição Reservada | 6A96237F-1DD2-11B2-99A6-080020736631 |
| Solaris | Partição Reservada | 6A8D2AC7-1DD2-11B2-99A6-080020736631 |
| NetBSD | Partição Swap | 49F48D32-B10E-11DC-B99B-0019D1879648 |
| NetBSD | Partição FFS | 49F48D5A-B10E-11DC-B99B-0019D1879648 |
| NetBSD | Partição LFS | 49F48D82-B10E-11DC-B99B-0019D1879648 |
| NetBSD | Partição RAID | 49F48DAA-B10E-11DC-B99B-0019D1879648 |
| NetBSD | Partição concatenada | 2DB519C4-B10F-11DC-B99B-0019D1879648 |
| NetBSD | Partição encriptada | 2DB519EC-B10F-11DC-B99B-0019D1879648 |
* ↑ Os GUIDs nesta tabela estão escritos presumindo uma ordenação de bytes little endian. Exemplo, o GUID para uma partição de sistema EFI é escrito como C12A7328-F81F-11D2-BA4B-00A0C93EC93B aqui, que corresponde a sequência de 16 bytes 28 73 2A C1 1F F8 D2 11 BA 4B 00 A0 C9 3E C9 3B — apenas os três primeiros blocos sofreram permuta de bytes.
* $^a$ $^b$ Linux e Windows usam os mesmo GUIDs para suas partições de dados.
* $^a$ $^b$ O GUID para/usr no Solaris é usado como um GUID genérico para ZFS no Mac OS X.
* $^^$ Definições estão em /src/sys/sys/disklabel_gpt.h. O NetBSD já utilizou os GUIDs do FreeBSD antes de criar GUIDs específicos para si.