Tabela de partição GUID

Nota: Não confundir a sigla GPT para Generative Pre-trained Transformer, uma arquitetura de inteligência artificial.

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.

Diagrama ilustrando o layout do esquema de tabelas de partição GUID. Neste exemplo, cada bloco lógico (LBA) possui 512 bytes, e cada entrada de partição é de 128 bytes. Os endereços LBA que são negativos indicam a posição a partir do final do volume, com -1 sendo o último bloco com endereçamento possível.

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.[1]

Recursos

editar

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.,[2] "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.[3]

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

editar

MBR de proteção (LBA 0)

editar

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).[4]

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.[4] 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.[5]

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.[4]

MBR híbrido (LBA 0 + GPT)

editar

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.[4]

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

editar

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

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)

editar

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

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:[necessário esclarecer]

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

editar

UNIX e sistemas do tipo UNIX

editar
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+[6]

IA-32, x86-64 Sim Sim Algumas ferramentas de distribuição, como fdisk, não funcionam com GPT.

Novas ferramentas como gdisk,[7] 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)[8] 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

editar

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

editar

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

editar
SO associado Tipo de partição Identificador Único Global (GUID(em inglês))[1]
(Nenhum) Entrada não usada 00000000-0000-0000-0000-000000000000
Esquema de partição MBR 024DEE41-33E7-11D3-9D69-0008C781F39F
Partição do sistema EFI C12A7328-F81F-11D2-BA4B-00A0C93EC93B
Partição de Boot da BIOS 21686148-6449-6E6F-744E-656564454649
Microsoft Windows Partição reservada pela Microsoft E3C9E316-0B5C-4DB8-817D-F92DF00215AE
Partição básica de dados[2] EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
Gerenciador de disco lógico metadata partition 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
Partição de dados do Gerenciador de disco lógico AF9B60A0-1431-4F62-BC68-3311714A69AD
Ambiente de Resgate do Windows DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
HP-UX Partição de dados 75894C1E-3AEB-11D3-B7C1-7B03A0000000
Partição de serviço E2A1E728-32E3-11D6-A682-7B03A0000000
Linux Data partition[2] EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
Partição RAID A19D880F-05FC-4D3B-A006-743F0F84911E
Partição Swap 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
Partição do Gerenciador volume lógico (LVM) E6D6D379-F507-44C2-A23C-238F2A3DF928
Reservado 8DA63339-0007-60C0-C436-083AC8230908
FreeBSD Partição de Boot 83BD6B9D-7F41-11DC-BE0B-001560B84F0F
Partição de dados 516E7CB4-6ECF-11D6-8FF8-00022D09712B
Partição Swap 516E7CB5-6ECF-11D6-8FF8-00022D09712B
Partição Unix File System (UFS) 516E7CB6-6ECF-11D6-8FF8-00022D09712B
Partição Vinum volume manager 516E7CB8-6ECF-11D6-8FF8-00022D09712B
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
Apple UFS 55465300-0000-11AA-AA11-00306543ECAC
ZFS[3] 6A898CC3-1DD2-11B2-99A6-080020736631
Partição RAID da Apple 52414944-0000-11AA-AA11-00306543ECAC
Partição RAID da Apple RAID, desconectada 52414944-5F4F-11AA-AA11-00306543ECAC
Partição Boot da Apple 426F6F74-0000-11AA-AA11-00306543ECAC
Rótulo da Apple 4C616265-6C00-11AA-AA11-00306543ECAC
Partição de resgate da TV Apple 5265636F-7665-11AA-AA11-00306543ECAC
Solaris Partição de Boot 6A82CB45-1DD2-11B2-99A6-080020736631
Partição Raíz 6A85CF4D-1DD2-11B2-99A6-080020736631
Partição Swap 6A87C46F-1DD2-11B2-99A6-080020736631
Partição cópia de segurança 6A8B642B-1DD2-11B2-99A6-080020736631
Partição /usr[3] 6A898CC3-1DD2-11B2-99A6-080020736631
Partição /var 6A8EF2E9-1DD2-11B2-99A6-080020736631
Partição /home 6A90BA39-1DD2-11B2-99A6-080020736631
Setor alternado 6A9283A5-1DD2-11B2-99A6-080020736631
Partição Reservada 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
NetBSD[4] Partição Swap 49F48D32-B10E-11DC-B99B-0019D1879648
Partição FFS 49F48D5A-B10E-11DC-B99B-0019D1879648
Partição LFS 49F48D82-B10E-11DC-B99B-0019D1879648
Partição RAID 49F48DAA-B10E-11DC-B99B-0019D1879648
Partição concatenada 2DB519C4-B10F-11DC-B99B-0019D1879648
Partição encriptada 2DB519EC-B10F-11DC-B99B-0019D1879648
  1. 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.
  2. a b Linux e Windows usam os mesmo GUIDs para suas partições de dados.
  3. a b O GUID para/usr no Solaris é usado como um GUID genérico para ZFS no Mac OS X.
  4. ^ 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.

Referências

  1. «Windows and GPT FAQ». Microsoft 
  2. «Technical Note TN2166: Secrets of the GPT». Apple 
  3. «Western Digital's Advanced Format: The 4K Sector Transition Begins». Anandtech 
  4. a b c d Smith, Roderick W. (3 de julho de 2012). «Make the Most of Large Drives with GPT and Linux». IBM. Consultado em 29 de maio de 2013 
  5. «Technical Note TN2166: Secrets of the GPT». Developer.Apple.com. Apple. 6 de novembro de 2006. Consultado em 16 de abril de 2014 
  6. «Ubuntu on MacBook». Ubuntu Community Documentation 
  7. Smith, Rod. «GPT fdisk for Linux» 
  8. «Myths and Facts About Intel Macs». rEFIt 

Ver também

editar

Ligações externas

editar