01 - MBR (Master Boot Record) vs GPT (GUID Partition Table)
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:
-
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.imgdo GRUB). -
A Tabela de Partições ($64 \text{ bytes}$): O banco de dados estrutural do disco, localizado no offset
0x01BE. -
Assinatura Mágica ($2 \text{ bytes}$): Os bytes
0x55e0xAAno offset0x01FE, 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:
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:
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:
-
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. -
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 (
fdiskouparted). 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 desearche 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ísicaSATA 1para a portaSATA 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 GUID21686148-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.