Home Comunidade Eventos YouTube Networks Desafios // produtos Academy News CTI | CVE Contato

01 - MBR (Master Boot Record) vs GPT (GUID Partition Table)

video explicativo
Video explicativoEspaco reservado para o video desta anotação — adicione video: https://youtu.be/... no frontmatter da nota.

1. A Necessidade Ontológica do Particionamento

Um dispositivo de armazenamento de bloco (seja um disco magnético rígido clássico ou uma matriz de portas lógicas NAND em um SSD NVMe) apresenta-se ao sistema computacional como uma vastidão linear e ininterrupta de setores físicos. O hardware não possui o conceito intrínseco de separação de dados corporativos, sistemas operacionais múltiplos ou áreas de recuperação.

Para que o firmware e o bootloader consigam localizar dados estruturados, é imperativa a aplicação de uma camada de abstração de dados (metadados) logo nos primeiros setores do disco. Esta estrutura funciona como a cartografia matemática do armazenamento, fatiando a topologia física em contêineres lógicos e independentes chamados partições. Historicamente, a evolução desta camada reflete o crescimento exponencial da densidade de armazenamento e a superação de gargalos de endereçamento em nível de bits, materializada na dicotomia entre as arquiteturas MBR e GPT.

2. A Arquitetura MBR (Master Boot Record)

O padrão MBR (Master Boot Record) foi introduzido em 1983 com o PC DOS 2.0 e permaneceu como a espinha dorsal da computação compatível com IBM PC por mais de três décadas. Sua arquitetura é um testemunho das restrições de memória e processamento da era dos processadores de 16 bits operando em Modo Real.

A Anatomia do LBA 0

Em um disco inicializado em MBR, toda a infraestrutura crítica de partições e o código inicial do bootloader estão espremidos cirurgicamente no primeiríssimo setor físico do disco, conhecido como LBA 0 (Logical Block Addressing 0), que possui invariavelmente o tamanho fixo de $512 \text{ bytes}$.

Este setor é fragmentado em três regiões estritas:

  1. Código de Bootstrap ($446 \text{ bytes}$): A região inicial contendo as instruções em linguagem de máquina (o Estágio 1 do bootloader, como o boot.img do GRUB).

  2. A Tabela de Partições ($64 \text{ bytes}$): O banco de dados estrutural do disco, localizado no offset 0x01BE.

  3. Assinatura Mágica ($2 \text{ bytes}$): Os bytes 0x55 e 0xAA no offset 0x01FE, que atestam para o BIOS que o setor é válido e executável.

O Limite Matemático e Estrutural

O gargalo terminal do MBR reside no tamanho e no formato de sua Tabela de Partições de $64 \text{ bytes}$. O esquema designa exatamente $16 \text{ bytes}$ para descrever cada partição individual. Matematicamente ($64 / 16 = 4$), isso restringe o disco a um limite máximo de 4 partições primárias.

Dentro dos $16 \text{ bytes}$ do registro da partição, o endereçamento físico é feito através de dois mecanismos concorrentes:

  • A tríade CHS (Cylinder-Head-Sector): Ocupa 3 bytes para o início e 3 bytes para o fim da partição. Limitado historicamente a configurações mecânicas que logo se tornaram obsoletas.

  • O Endereçamento LBA de 32 bits: Ocupa 4 bytes para o endereço do LBA inicial e 4 bytes para contabilizar o número total de setores da partição.

É o limite de $32 \text{ bits}$ do LBA que sela o destino da arquitetura MBR. Um inteiro sem sinal de 32 bits pode mapear um valor máximo de $2^{32} - 1$ setores. Assumindo o tamanho clássico de setor de $512 \text{ bytes}$, o cálculo do limite máximo de endereçamento é rígido:

formula
$$(2^{32}) \times 512 \text{ bytes} = 2.199.023.255.552 \text{ bytes}$$

Isso impõe a barreira inflexível de 2.2 Terabytes. Nenhum sistema operacional, firmware ou artifício de software operando sob o padrão MBR puro consegue ler ou alocar logicamente o espaço de um disco físico que exceda essa capacidade.

O Paliativo EBR (Extended Boot Record)

Para contornar o limite de 4 partições primárias, a engenharia de software criou as Partições Estendidas. O MBR sacrifica uma das suas 4 entradas primárias (geralmente identificada pelo Type ID 0x05 ou 0x0F) e a aponta para uma lista encadeada (linked list) de registros de partições em outras áreas do disco, chamadas de Partições Lógicas. Este mecanismo introduziu extrema fragilidade estrutural: a corrupção de um único elo na cadeia EBR resulta na perda em cascata de todas as partições lógicas subsequentes.

3. A Ruptura: GPT (GUID Partition Table)

À medida que os discos ultrapassaram a barreira dos Terabytes e as instabilidades matemáticas do MBR tornaram-se evidentes, a Intel, através da iniciativa EFI (que mais tarde culminou na UEFI), reescreveu a topologia de particionamento através do padrão GPT (GUID Partition Table). O GPT descarta inteiramente o modelo de espaço confinado, adotando uma estrutura modular, com redundância criptográfica rudimentar e endereçamento expansivo de $64 \text{ bits}$.

O Layout Linear da Estrutura GPT

O esquema GPT distribui suas estruturas de forma espalhada pelo disco, abandonando a concentração perigosa no LBA 0.

LBA 0: O MBR Protetor (Protective MBR)

O primeiro milagre arquitetural do GPT é a compatibilidade reversa passiva. O GPT não sobrepõe o LBA 0; ele aloca um MBR falso ali. Este MBR Protetor contém uma única partição (identificada pelo Type ID 0xEE) que declara ocupar todo o tamanho do disco (até o limite de 2.2TB).

O objetivo primário do Protective MBR é enganar utilitários de disco legados do MS-DOS ou Windows XP que não compreendem a estrutura GPT. Ao ler o LBA 0, o software obsoleto assume que o disco inteiro está preenchido por uma partição desconhecida, impedindo que ferramentas arcaicas reescrevam e destruam acidentalmente as estruturas GPT subsequentes.

LBA 1: O Cabeçalho Primário (Primary GPT Header)

O coração da tabela reside no LBA 1. O Cabeçalho GPT possui a assinatura em ASCII "EFI PART" e contém a inteligência sobre o layout das partições. É aqui que a resiliência é implementada:

  • O Cabeçalho armazena o próprio tamanho, a revisão da especificação e o número total de entradas de partição suportadas.

  • Checksums de Integridade: O Cabeçalho GPT armazena verificações matemáticas de redundância cíclica (CRC32) não apenas para si mesmo, mas para o Array de Entradas de Partição inteiro. Se o firmware ou o kernel Linux detectarem uma incompatibilidade entre o array no disco e o valor CRC32, eles recusam-se a montar o sistema de arquivos silenciosamente e disparam rotinas de recuperação.

LBA 2 ao LBA 33: O Array de Partições

Diferente do MBR e seus 4 slots minúsculos, o cabeçalho GPT aponta para uma matriz que aloca, por padrão, $128 \text{ entradas}$ de partições. Cada entrada possui um tamanho de $128 \text{ bytes}$ (ao invés dos míseros 16 bytes do MBR).

A estrutura de $128 \text{ bytes}$ permite endereçamento LBA de $64 \text{ bits}$ reais. O limite matemático do tamanho de um disco (ou partição) salta exponencialmente para:

formula
$$(2^{64}) \times 512 \text{ bytes} = 9.4 \times 10^{21} \text{ bytes} \approx 9.4 \text{ Zettabytes}$$

Este valor torna o GPT virtualmente à prova de obsolescência matemática para os padrões contemporâneos de silício e meios magnéticos.

O Cabeçalho Secundário (Backup GPT)

A maior fragilidade do MBR era ser um Ponto Único de Falha (Single Point of Failure). Se os primeiros $512 \text{ bytes}$ sofressem corrupção de bloco físico (bad block), todos os dados do disco tornavam-se órfãos.

A especificação GPT exige que o particionador copie as entradas e construa um Cabeçalho GPT Secundário e um Array Reverso nos últimos exatos LBAs físicos do disco (ex: se o disco tem N LBAs, a cópia reside nos LBAs de $N-32$ a $N$). Em caso de colapso estrutural no início do disco provocado por um bootloader corrompido, o kernel Linux (via ferramentas como gdisk) é capaz de ler a tabela final e restaurar perfeitamente os primeiros setores.

4. O Uso Extensivo de Identificadores (GUIDs)

O modelo MBR utilizava um único byte hexadecimal para identificar o tipo de sistema de arquivos contido em uma partição. Isso permitia apenas $2^{8} = 256$ códigos possíveis, resultando em sobreposição e caos mercadológico (onde a IBM, a Microsoft e o Kernel Linux frequentemente brigavam pelos mesmos códigos, como 0x83 para o Linux Native e 0x82 para Linux Swap).

A arquitetura GPT soluciona a escassez de identificadores utilizando a matemática dos identificadores globais exclusivos (GUID ou UUID, estruturas numéricas de $128 \text{ bits}$).

Cada entrada de partição de $128 \text{ bytes}$ no array GPT armazena dois GUIDs separados e críticos:

  1. Partition Type GUID: Um identificador universal que revela a finalidade absoluta da partição, sem espaço para colisões. Por exemplo, a Partição de Sistema EFI (ESP) é estritamente definida globalmente como C12A7328-F81F-11D2-BA4B-00A0C93EC93B. A partição Linux Swap é 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F.

  2. Unique Partition GUID: Um número serial de $128 \text{ bits}$ gerado pseudo-aleatoriamente no milissegundo em que a partição é criada pelo utilitário (fdisk ou parted). Essa é a garantia de que duas partições jamais terão o mesmo identificador na mesma máquina. É esse UUID que o GRUB2 armazena em suas variáveis dinâmicas de search e repassa para a Kernel Command Line (root=PARTUUID=...), garantindo que o kernel localize a raiz de seu sistema operacional, independentemente de se o disco foi trocado da porta física SATA 1 para a porta SATA 2.

5. O Fosso de Implementação e o Bootloader

A transição tectônica entre essas tabelas obriga os utilitários de carregamento de sistema a adaptarem seu comportamento de instalação e injeção de código, alterando o relacionamento espacial entre o software e o disco.

  • GRUB2 sob MBR: O bootloader oculta seu microkernel gigante no Post-MBR Gap (do setor 1 ao 2047). É uma área sem leis, onde a dependência repousa apenas na suposição cega de que os utilitários de particionamento modernos deixarão o primeiro Megabyte do disco vazio para alinhamento.

  • GRUB2 sob GPT em hardware Legado (BIOS): Como o GPT não possui "áreas mortas não-documentadas" e o array de partições engole o LBA 1 até o 33, instalar GRUB com BIOS legado em um disco GPT exige intervenção arquitetural. O administrador deve criar explicitamente uma pequena partição de $1 \text{ a } 2 \text{ Megabytes}$ com a flag estrita bios_grub (código de tipo GUID 21686148-6449-6E6F-744E-656564454649). O GRUB escreve blocos brutos dentro dela para simular o antigo comportamento do Post-MBR Gap.

  • GRUB2 sob GPT em UEFI: A simbiose perfeita ditada pelos padrões atuais. O bootloader não sobrepõe setores físicos ou áreas escuras do disco. A Tabela GPT possui uma Partição EFI (ESP) dedicada com um sistema de arquivos normal (FAT32), onde os arquivos binários do bootloader descansam de forma visível, gerenciável e imune a sobrescritas destrutivas baseadas em blocos brutos.