# Master Boot Record

Um Master Boot Record (MBR), em português Registro Mestre de Inicialização, é um tipo especial de setor de inicialização no início de dispositivos de armazenamento em massa particionados de computadores, como discos fixos ou unidades removíveis destinadas para uso em sistemas compatíveis com IBM PC e demais. O conceito de MBRs foi introduzido ao público em 1983 com o PC DOS 2.0.
O MBR armazena as informações sobre como as partições lógicas, contendo sistemas de arquivos, são organizadas nessa mídia. O MBR também contém código executável para funcionar como um carregador para o sistema operacional instalado - geralmente passando o controle para o segundo estágio do carregador ou em conjunto com o registro de inicialização de volume (VBR) de cada partição. Esse código MBR é geralmente chamado de carregador de inicialização (boot loader).
A organização da tabela de partições no MBR limita o espaço máximo de armazenamento endereçável de um disco a 2 TiB (2$^{32}$ × 512 bytes). Abordagens para elevar levemente esse limite presumindo que a aritmética de 33 bits ou setores de 4096 bytes não seja oficialmente suportada, pois quebra a compatibilidade com carregadores de inicialização existentes e com a maioria dos sistemas operacionais e ferramentas de sistema compatíveis com MBR e podem causar sérios danos aos dados quando usados ​​fora de ambientes de sistemas controlados de forma próxima. Portanto, o esquema de particionamento baseado em MBR está em processo de ser substituído pelo esquema de tabela de partição GUID (GPT) em novos computadores. Um GPT pode coexistir com um MBR para fornecer alguma forma limitada de compatibilidade com versões anteriores de sistemas mais antigos.
Os MBRs não estão presentes em mídia não particionada, como disquetes, superdisquetes ou outros dispositivos de armazenamento configurados para se comportarem como tal. Em um superfloppy, toda a mídia é tratada como uma única partição.

## Estrutura

Estrutura do Master Boot Record : :
| Endereço | Endereço | Descrição | Descrição | Tamanho em bytes |
| Hex | Dec | Descrição | Descrição | Tamanho em bytes |
| 0000 | 0 | Código de arranque do SO | Código de arranque do SO | 440 (max. 446) |
| 01B8 | 440 | Assinatura opcional | Assinatura opcional | 4 |
| 01BC | 444 | normalmente nulo ; 0x0000 | normalmente nulo ; 0x0000 | 2 |
| 01BE | 446 | Tabela de partições primarias (Quatro entradas de 16 bytes (IBM Partition Table scheme)) | Tabela de partições primarias (Quatro entradas de 16 bytes (IBM Partition Table scheme)) | 64 |
| 01FE | 510 | 55h | MBR signature; 0x55AA | 2 |
| 01FF | 511 | AAh | MBR signature; 0x55AA | 2 |
| Tamanho total do MBR : 440 + 4 + 2 + 64 + 2 = | Tamanho total do MBR : 440 + 4 + 2 + 64 + 2 = | Tamanho total do MBR : 440 + 4 + 2 + 64 + 2 = | Tamanho total do MBR : 440 + 4 + 2 + 64 + 2 = | 512 |
O MBR contém 512 bytes de informação da estrutura organizacional do disco (partições, código de arranque do sistema operativo, e assinatura desse código). Destes, 446 bytes são reservados para o setor de boot (boot loader), enquanto os outros 64 bytes guardam a tabela de partição e os dois últimos a assinatura, também chamada de Número Mágico.
O Boot Loader, também chamado de bootstrap, é um pequeno código chamado pela BIOS para a inicialização do Sistema Operacional. Esse código varre os 64 bytes subsequentes - ocupados pela Tabela de Partição - em busca de uma flag (ou sinalizador de inicialização) que indique qual partição deve ser iniciada primeiro (geralmente a que contém o SO). Ao encontrar a partição ativa, o boot loader acessa o Boot Sector (usualmente o VBR), presente no inicio da partição, que é o responsável por inicializar o cerne (Kernel) do sistema operacional ou qualquer outro programa previamente definido.
A Tabela de Partição contém códigos identificativos do tipo da partição e alguns dados sobre a mesma (se é a partição ativa - leia-se, de arranque -, tipo de sistema de ficheiros, posição no disco, tamanho, etc.).

## MBR e a inicialização do sistema

Ao comprar um novo HD, ele precisa primeiro ser formatado antes de poder instalar qualquer sistema operacional.
Os programas de particionamento salvam o particionamento na tabela de partição, gravada no início do HD. Esta tabela contém informações sobre o tipo, endereço de início e final de cada partição. Depois do particionamento, vem a formatação de cada partição, onde é escolhido o sistema de arquivos que será usado em cada uma.
A inicialização de um sistema PC segue os seguintes passos:
* POST (Power On Self Test, um pequeno teste de intercomunicação dos componentes da placa mãe),
* aquisição dos dados do BIOS e reprogramação do suporte E/S,
* leitura do primeiro sector (MBR) do 1º disco do 1º canal da controladora (por exemplo, IDE 0/Master).
Ao instalar o sistema operacional, é gravado mais um componente: o gerenciador de boot (boot manager, abreviação:BootMGR), responsável por carregar o sistema durante o boot.
Tanto o gerenciador de boot quanto a tabela de particionamento do HD são salvos no primeiro setor do HD (a famosa trilha MBR), que contém apenas 512 bytes. Destes, 446 bytes são reservados para o setor de boot, enquanto os outros 64 bytes guardam a tabela de partição e os dois últimos a assinatura.
Ao trocar de sistema operacional, a MBR é sobrescrita com um novo gerenciador de boot, mas a tabela de particionamento só é modificada ao criar ou deletar partições. Caso, por qualquer motivo, os 64 bytes da tabela de particionamento sejam sobrescritos ou danificados, perde-se o acesso a todas as partições do HD. O HD fica parecendo vazio, como se tivesse sido completamente apagado. Apesar disso, é quase sempre possível recuperar as partições (e os dados dentro delas) usando um programa de recuperação.
Para manter dois ou mais sistemas operacionais instalados em um mesmo HD é necessário instalar um boot manager, um pequeno programa que ficará residente na trilha MBR e será carregado cada vez que o micro é ligado. O boot manager exibe então uma tela perguntando qual sistema operacional deve ser inicializado. A maior parte dos sistemas operacionais atuais trazem algum boot manager. O Windows NT/2000/XP por exemplo traz o NTLDR, que permite o dual boot com o Windows 95 ou 98, enquanto no Linux temos o Lilo e o GRUB, que podem ser usados para combinar Linux e Windows, ou mesmo várias versões diferentes do Linux, de acordo com a configuração.

## Limitações

Somente quatro partições primárias podem existir. Para colmatar (ou contornar) esta falha no desenho do MBR, criou-se o conceito de partição estendida, dentro das quais se podem criar até 63 sub-partições (lógicas) cuja Tabela de Partições se encontra descrita em alguns lugares dentro de toda a partição estendida.
Não se pode inserir uma partição primária entre duas partições lógicas.