Registro mestre de inicialização - Master boot record

Um registro mestre de inicialização ( MBR ) é um tipo especial de setor de inicialização no início de dispositivos de armazenamento em massa de computador particionado , como discos fixos ou unidades removíveis destinadas ao uso com sistemas compatíveis com IBM PC e além. O conceito de MBRs foi apresentado publicamente em 1983 com o PC DOS 2.0 .

O MBR contém as informações sobre como as partições lógicas, contendo sistemas de arquivos, são organizadas nesse meio. O MBR também contém código executável para funcionar como carregador do sistema operacional instalado - geralmente passando o controle para o segundo estágio do carregador ou em conjunto com o registro de inicialização do volume de cada partição (VBR). Esse código MBR é geralmente conhecido como carregador de boot.

A organização da tabela de partição no MBR limita o espaço máximo de armazenamento endereçável de um disco particionado a 2  TiB (2 32  × 512 bytes) . Abordagens para aumentar ligeiramente este limite assumindo aritmética de 32 bits ou setores de 4096 bytes não são oficialmente suportados, já que quebram fatalmente a compatibilidade com carregadores de inicialização existentes e a maioria dos sistemas operacionais e ferramentas de sistema compatíveis com MBR, e podem causar séria corrupção de dados quando usados ​​externamente de ambientes de sistema estreitamente controlados. Portanto, o esquema de particionamento baseado em MBR está sendo 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 para sistemas mais antigos.

Os MBRs não estão presentes em mídias não particionadas, como disquetes , super- disquetes ou outros dispositivos de armazenamento configurados para se comportar como tal.

Visão geral

O suporte para mídia particionada e, portanto, o registro mestre de inicialização (MBR), foi introduzido com o IBM PC DOS 2.0 em março de 1983 para oferecer suporte ao disco rígido de 10 MB do então novo IBM Personal Computer XT , ainda usando o sistema de arquivos FAT12 . A versão original do MBR foi escrita por David Litton da IBM em junho de 1982. A tabela de partição suportava até quatro partições primárias , das quais o DOS só podia usar uma. Isso não mudou quando o FAT16 foi introduzido como um novo sistema de arquivos com o DOS 3.0. O suporte para uma partição estendida , um tipo de partição primária especial usado como contêiner para conter outras partições, foi adicionado com o DOS 3.2, e as unidades lógicas aninhadas dentro de uma partição estendida vieram com o DOS 3.30. Como o MS-DOS, PC DOS, OS / 2 e Windows nunca foram habilitados para inicializar a partir deles, o formato MBR e o código de inicialização permaneceram quase inalterados em funcionalidade, exceto em algumas implementações de terceiros, ao longo das eras do DOS e OS / 2 até 1996.

Em 1996, o suporte para endereçamento de bloco lógico (LBA) foi introduzido no Windows 95B e DOS 7.10 para oferecer suporte a discos maiores que 8 GB. Os carimbos de data / hora do disco também foram introduzidos. Isso também refletiu a ideia de que o MBR deve ser independente do sistema operacional e do sistema de arquivos. No entanto, essa regra de design foi parcialmente comprometida em implementações mais recentes da Microsoft do MBR, que impõem o acesso CHS para os tipos de partição FAT16B e FAT32 0x06 / 0x0B , enquanto o LBA é usado para 0x0E / 0x0C .

Apesar da documentação às vezes pobre de certos detalhes intrínsecos do formato MBR (que ocasionalmente causava problemas de compatibilidade), ele foi amplamente adotado como um padrão da indústria de fato, devido à ampla popularidade dos computadores compatíveis com PC e sua natureza semi-estática ao longo de décadas . Isso foi ao ponto de ser suportado por sistemas operacionais de computador para outras plataformas. Às vezes, isso era uma adição a outros padrões pré-existentes ou de plataforma cruzada para bootstrap e particionamento.

As entradas de partição MBR e o código de inicialização MBR usado em sistemas operacionais comerciais, no entanto, são limitados a 32 bits. Portanto, o tamanho máximo do disco suportado em discos que usam setores de 512 bytes (sejam reais ou emulados) pelo esquema de particionamento MBR (sem aritmética de 33 bits) é limitado a 2 TiB. Consequentemente, um esquema de particionamento diferente deve ser usado para discos maiores, pois eles se tornaram amplamente disponíveis desde 2010. O esquema de particionamento MBR está, portanto, em processo de ser substituído pela Tabela de Partição GUID (GPT). A abordagem oficial faz pouco mais do que garantir a integridade dos dados, empregando um MBR de proteção . Especificamente, ele não fornece compatibilidade com sistemas operacionais que também não oferecem suporte ao esquema GPT. Enquanto isso, várias formas de MBRs híbridos foram projetadas e implementadas por terceiros para manter partições localizadas nos primeiros 2 TiB físicos de um disco em ambos os esquemas de particionamento "em paralelo" e / ou para permitir que sistemas operacionais mais antigos inicializem por GPT partições também. A natureza não padronizada atual dessas soluções causa vários problemas de compatibilidade em determinados cenários.

O MBR consiste em 512 ou mais bytes localizados no primeiro setor da unidade.

Pode conter um ou mais dos seguintes:

Particionamento de disco

IBM PC DOS 2.0 introduziu o FDISKutilitário para configurar e manter partições MBR. Quando um dispositivo de armazenamento é particionado de acordo com este esquema, seu MBR contém uma tabela de partição que descreve os locais, tamanhos e outros atributos de regiões lineares chamadas de partições.

As próprias partições também podem conter dados para descrever esquemas de particionamento mais complexos, como registros de inicialização estendidos (EBRs), disklabels BSD ou partições de metadados do Logical Disk Manager .

O MBR não está localizado em uma partição; ele está localizado em um primeiro setor do dispositivo (deslocamento físico 0), precedendo a primeira partição. (O setor de inicialização presente em um dispositivo não particionado ou em uma partição individual é chamado de registro de inicialização de volume .) Nos casos em que o computador está executando uma sobreposição de BIOS DDO ou gerenciador de inicialização , a tabela de partição pode ser movida para algum outro físico localização no dispositivo; por exemplo, o Ontrack Disk Manager frequentemente colocava uma cópia do conteúdo original do MBR no segundo setor, depois se ocultava de qualquer sistema operacional ou aplicativo inicializado subsequentemente, de modo que a cópia do MBR era tratada como se ainda residisse no primeiro setor.

Layout do setor

Por convenção, há exatamente quatro entradas da tabela de partição primária no esquema da tabela de partição MBR, embora alguns sistemas operacionais e ferramentas do sistema tenham estendido isso para cinco (Partições ativas avançadas (AAP) com PTS-DOS 6.60 e DR-DOS 7.07), oito ( AST e NEC MS-DOS 3.x, bem como Storage Dimensions SpeedStor ), ou até dezesseis entradas (com Ontrack Disk Manager ).

Estrutura de um MBR genérico clássico
Endereço Descrição Tamanho
( bytes )
0x0000 (0) Área de código de bootstrap 446
0x01BE (446) Entrada de partição №1 Tabela de partição
(para partições primárias)
16
0x01CE (462) Entrada de partição №2 16
0x01DE (478) Entrada de partição №3 16
0x01EE (494) Entrada de partição №4 16
0x01FE (510) 0x55 Assinatura de inicialização 2
0x01FF (511) 0xAA
Tamanho total: 446 + 4 × 16 + 2 512

Estrutura de um MBR padrão moderno
Endereço Descrição Tamanho
( bytes )
0x0000 (0) Área do código de bootstrap (parte 1) 218
0x00DA (218) 0x0000 Carimbo de data / hora do disco (opcional; Windows 95B / 98 / 98SE / ME (MS-DOS 7.1–8.0). Como alternativa, pode servir como assinatura do carregador OEM com NEWLDR) 2
0x00DC (220) Unidade física original ( 0x80- 0xFF) 1
0x00DD (221) Segundos (0-59) 1
0x00DE (222) Minutos (0-59) 1
0x00DF (223) Horas (0-23) 1
0x00E0 (224) Área do código de bootstrap (parte 2, entrada do código em 0x0000) 216 (ou 222)
0x01B8 (440) Assinatura de disco de 32 bits Assinatura de disco (opcional; UEFI , Linux, família Windows NT e outros sistemas operacionais) 4
0x01BC (444) 0x0000( 0x5A5Ase protegido contra cópia) 2
0x01BE (446) Entrada de partição №1 Tabela de partição
(para partições primárias)
16
0x01CE (462) Entrada de partição №2 16
0x01DE (478) Entrada de partição №3 16
0x01EE (494) Entrada de partição №4 16
0x01FE (510) 0x55 Assinatura de inicialização 2
0x01FF (511) 0xAA
Tamanho total: 218 + 6 + 216 + 6 + 4 × 16 + 2 512

Estrutura de AAP MBR
Endereço Descrição Tamanho
( bytes )
0x0000 (0) Área de código de bootstrap 428
0x01AC (428) 0x78 Assinatura AAP (opcional) 2
0x01AD (429) 0x56
0x01AE (430) Unidade física AAP ( 0x80- 0xFE; 0x00: não utilizado; 0x01- 0x7F, 0xFF: reservados) Registro AAP (opcional) ( entrada de partição AAP nº 0 com semântica especial) 1
0x01AF (431) Endereço CHS (início) da partição AAP / arquivo de imagem ou VBR / EBR 3
0x01B2 (434) Reservado para o tipo de partição AAP ( 0x00se não for usado) (opcional) 1
0x01B3 (435) Reservado para o endereço final do CHS em AAP (opcional; o byte no deslocamento 0x01B5também é usado para a soma de verificação MBR (PTS DE, BootWizard); 0x000000se não for usado) 3
0x01B6 (438) Inicie o LBA do arquivo de imagem AAP ou VBR / EBR ou setores relativos da partição AAP (copiado para compensar no setor carregado sobre a entrada "setores ocultos" de um BPB DOS 3.31 (ou emulação dele) para também suportar a inicialização EBR) +01Chex 4
0x01BA (442) Reservado para setores em AAP (opcional; 0x00000000se não for usado) 4
0x01BE (446) Entrada de partição №1 Tabela de partição
(para partições primárias)
16
0x01CE (462) Entrada de partição №2 16
0x01DE (478) Entrada de partição №3 16
0x01EE (494) Entrada de partição №4 16
0x01FE (510) 0x55 Assinatura de inicialização 2
0x01FF (511) 0xAA
Tamanho total: 428 + 2 + 16 + 4 × 16 + 2 512

Estrutura de NEWLDR MBR
Endereço Descrição Tamanho
( bytes )
0x0000 (0) JMPS ( ) / tamanho do registro NEWLDR (frequentemente / / para código começa em / / ) EBhex0x0A0x160x1C0x000C0x00180x001E Registro NEWLDR (opcional) 2
0x0002 (2) " NEWLDR" assinatura 6
0x0008 (8) CARREGADOR unidade física e bandeira boot ( 0x80- 0xFE, 0x00- 0x7E, 0xFF, 0x7F) (se não for usado, este e seguindo 3 bytes deve ser tudo 0) 1
0x0009 (9) Endereço CHS do setor de inicialização LOADER ou arquivo de imagem (fe IBMBIO.LDR ) ( 0x000000se não for usado) 3
0x000C (12) DL mínimo permitido , caso contrário, tire da tabela de partição ( 0x80: padrão;: 0x00sempre use DL;: 0xFFsempre use a entrada da tabela) 1
0x000D (13) Reservado (default: 0x000000) 3
0x0010 (16) LBA do setor de inicialização LOADER ou arquivo de imagem (opcional; 0x00000000se não for usado) 4
0x0014 (20) Compensação de correção da unidade de inicialização VBR (padrão 0x0000se não for usado, senão ou ) 0024hex01FDhex 2
0x0016 (22) Checksum ( 0x0000se não for usado) 2
0x0018 (24) Assinatura do carregador OEM (" MSWIN4" para REAL / 32 , consulte também deslocamento , corresponde à etiqueta OEM no deslocamento em VBRs (opcional) +0DAhex+003hex 6
Varia Área do código de bootstrap (entrada do código em 0x0000) Varia
0x01AC (428) 0x78 Assinatura AAP (opcional) 2
0x01AD (429) 0x56
0x01AE (430) Entrada de partição AAP №0 com semântica especial Registro AAP (opcional) 16
0x01BE (446) Entrada de partição №1 Tabela de partição
(para partições primárias)
16
0x01CE (462) Entrada de partição №2 16
0x01DE (478) Entrada de partição №3 16
0x01EE (494) Entrada de partição №4 16
0x01FE (510) 0x55 Assinatura de inicialização 2
0x01FF (511) 0xAA
Tamanho total: 30 + 398 + 2 + 16 + 4 × 16 + 2 512

Estrutura de AST / NEC MS-DOS e SpeedStor MBR
Endereço Descrição Tamanho
( bytes )
0x0000 (0) Área de código de bootstrap 380
0x017C (380) 0x5A Assinatura AST / NEC (opcional; não para SpeedStor) 2
0x017D (381) 0xA5
0x017E (382) Entrada de partição №8 Tabela de partição expandida AST / NEC
(opcional; também para SpeedStor)
16
0x018E (398) Entrada de partição №7 16
0x019E (414) Entrada de partição №6 16
0x01AE (430) Entrada de partição №5 16
0x01BE (446) Entrada de partição №4 Tabela de partição
(para partições primárias)
16
0x01CE (462) Entrada de partição №3 16
0x01DE (478) Entrada de partição №2 16
0x01EE (494) Entrada de partição №1 16
0x01FE (510) 0x55 Assinatura de inicialização 2
0x01FF (511) 0xAA
Tamanho total: 380 + 2 + 4 × 16 + 4 × 16 + 2 512

Estrutura do Ontrack Disk Manager MBR
Endereço Descrição Tamanho
( bytes )
0x0000 (0) Área de código de bootstrap 252
0x00FC (252) 0xAA Assinatura DM (opcional) 2
0x00FD (253) 0x55
0x00FE (254) Entrada de partição Tabela de partição expandida DM
(opcional)
16
0x010E (270) Entrada de partição 16
0x011E (286) Entrada de partição 16
0x012E (302) Entrada de partição 16
0x013E (318) Entrada de partição 16
0x014E (334) Entrada de partição 16
0x015E (350) Entrada de partição 16
0x016E (366) Entrada de partição 16
0x017E (382) Entrada de partição 16
0x018E (398) Entrada de partição 16
0x019E (414) Entrada de partição 16
0x01AE (430) Entrada de partição 16
0x01BE (446) Entrada de partição №1 Tabela de partição
(para partições primárias)
16
0x01CE (462) Entrada de partição №2 16
0x01DE (478) Entrada de partição №3 16
0x01EE (494) Entrada de partição №4 16
0x01FE (510) 0x55 Assinatura de inicialização 2
0x01FF (511) 0xAA
Tamanho total: 252 + 2 + 12 × 16 + 4 × 16 + 2 512

Entradas da tabela de partição

Layout de uma entrada de partição de 16 bytes (todos os campos de vários bytes são little-endian )
Offset
(bytes)

Comprimento do campo
Descrição
0x00 1 byte Status ou unidade física (o bit 7 definido é para ativo ou inicializável, MBRs antigos aceitam apenas 0x80 , 0x00 significa inativo e 0x01 - 0x7F significa inválido)
0x01 3 bytes Endereço CHS do primeiro setor absoluto na partição. O formato é descrito por três bytes, veja as próximas três linhas.
0x01 1 byte
h 7-0 cabeça
x x x x x x x x
0x02 1 byte
c 9–8 s 5–0 setor nos bits 5–0; bits 7–6 são bits altos de cilindro
x x x x x x x x
0x03 1 byte
c 7–0 bits 7-0 do cilindro
x x x x x x x x
0x04 1 byte Tipo de partição
0x05 3 bytes Endereço CHS do último setor absoluto na partição. O formato é descrito por 3 bytes, consulte as próximas 3 linhas.
0x05 1 byte
h 7-0 cabeça
x x x x x x x x
0x06 1 byte
c 9–8 s 5–0 setor nos bits 5–0; bits 7–6 são bits altos de cilindro
x x x x x x x x
0x07 1 byte
c 7–0 bits 7-0 do cilindro
x x x x x x x x
0x08 4 bytes LBA do primeiro setor absoluto na partição
0x0C 4 bytes Número de setores na partição

Um artefato da tecnologia de disco rígido da era do PC XT , a tabela de partição subdivide um meio de armazenamento usando unidades de cilindros , cabeças e setores ( endereçamento CHS ). Esses valores não correspondem mais aos seus homônimos nas unidades de disco modernas, além de serem irrelevantes em outros dispositivos, como unidades de estado sólido , que não possuem fisicamente cilindros ou cabeçotes.

No esquema CHS, os índices de setor (quase) sempre começaram com o setor 1 em vez do setor 0 por convenção, e devido a um erro em todas as versões do MS-DOS / PC DOS até incluir 7.10, o número de cabeçotes é geralmente limitado para 255 em vez de 256. Quando um endereço CHS é muito grande para caber nesses campos, a tupla (1023, 254, 63) é normalmente usada hoje, embora em sistemas mais antigos, e com ferramentas de disco mais antigas, o valor do cilindro muitas vezes envolve módulo a barreira CHS perto de 8 GB, causando ambiguidade e riscos de corrupção de dados. (Se a situação envolver um MBR "protetor" em um disco com GPT, a especificação de Interface de Firmware Extensível da Intel requer que a tupla (1023, 255, 63) seja usada.) O valor do cilindro de 10 bits é registrado dentro de dois bytes em ordem para facilitar a realização de chamadas para as rotinas de acesso de disco do BIOS INT 13h original / legado , onde 16 bits eram divididos em partes de setor e cilindro, e não em limites de byte.

Devido aos limites do endereçamento CHS, foi feita uma transição para o uso de LBA, ou endereçamento de bloco lógico . Tanto o comprimento da partição quanto o endereço inicial da partição são valores de setor armazenados nas entradas da tabela de partição como quantidades de 32 bits. O tamanho do setor costumava ser considerado fixo em 512 (2 9 ) bytes, e uma ampla gama de componentes importantes, incluindo chipsets , setores de inicialização , sistemas operacionais , motores de banco de dados , ferramentas de particionamento , backup e utilitários de sistema de arquivos e outros softwares tinham esse valor difícil -coded. Desde o final de 2009, unidades de disco que empregam setores de 4.096 bytes ( 4Kn ou formato avançado ) estão disponíveis, embora o tamanho do setor para algumas dessas unidades ainda tenha sido relatado como 512 bytes para o sistema host por meio da conversão no disco rígido firmware da unidade e referido como unidades de emulação 512 ( 512e ).

Como os endereços e tamanhos de bloco são armazenados na tabela de partição de um MBR usando 32 bits, o tamanho máximo, bem como o endereço inicial mais alto, de uma partição usando unidades com setores de 512 bytes (reais ou emulados) não pode exceder 2 TiB -512 bytes (2 199 023 255 040 bytes ou4 294 967 295 (2 32 −1) setores × 512 (2 9 ) bytes por setor). O alívio dessa limitação de capacidade foi uma das principais motivações para o desenvolvimento do GPT.

Uma vez que as informações de particionamento são armazenadas na tabela de partição MBR usando um endereço de bloco inicial e um comprimento, pode, em teoria, ser possível definir partições de forma que o espaço alocado para um disco com setores de 512 bytes forneça um tamanho total próximo de 4 TiB, se todas as partições exceto uma estiverem localizadas abaixo do limite de 2 TiB e a última for atribuída como começando ou perto do bloco 2 32 -1 e especificar o tamanho até 2 32 -1, definindo assim uma partição que requer 33 em vez de 32 bits para o endereço do setor a ser acessado. No entanto, na prática, apenas alguns sistemas operacionais habilitados para LBA-48 , incluindo Linux, FreeBSD e Windows 7, que usam endereços de setor de 64 bits internamente, realmente suportam isso. Devido às restrições de espaço de código e à natureza da tabela de partição MBR para suportar apenas 32 bits, setores de inicialização, mesmo se habilitados para suportar LBA-48 em vez de LBA-28 , costumam usar cálculos de 32 bits, a menos que sejam especificamente projetados para suportar a faixa de endereços completa do LBA-48 ou destinam-se à execução apenas em plataformas de 64 bits. Qualquer código de inicialização ou sistema operacional que use endereços de setor de 32 bits internamente faria com que os endereços fossem interrompidos ao acessar essa partição e, assim, resultaria em séria corrupção de dados em todas as partições.

Para discos que apresentam um tamanho de setor diferente de 512 bytes, como unidades externas USB , também existem limitações. Um tamanho de setor de 4096 resulta em um aumento de oito vezes no tamanho de uma partição que pode ser definida usando MBR, permitindo partições de até 16 TiB (2 32  × 4096 bytes) de tamanho. As versões do Windows mais recentes que o Windows XP suportam os tamanhos de setor maiores, bem como o Mac OS X, e o Linux tem suportado tamanhos de setor maiores desde 2.6.31 ou 2.6.32, mas existem problemas com carregadores de boot, ferramentas de particionamento e implementações de BIOS de computador certas limitações, uma vez que muitas vezes são programados para reservar apenas 512 bytes para buffers de setor, fazendo com que a memória seja substituída para tamanhos de setor maiores. Isso também pode causar um comportamento imprevisível e, portanto, deve ser evitado quando a compatibilidade e a conformidade com os padrões forem um problema.

Quando um dispositivo de armazenamento de dados foi particionado com o esquema GPT, o registro mestre de inicialização ainda conterá uma tabela de partição, mas seu único propósito é indicar a existência do GPT e evitar programas utilitários que entendam apenas o esquema da tabela de partição MBR de criar quaisquer partições no que, de outra forma, considerariam espaço livre no disco, apagando assim acidentalmente o GPT.

Inicialização do sistema

Em computadores compatíveis com IBM PC , o firmware de inicialização (contido no ROM BIOS ) carrega e executa o registro mestre de inicialização. O PC / XT (tipo 5160) usava um microprocessador Intel 8088 . Para permanecerem compatíveis, todos os sistemas de arquitetura x86 começam com o microprocessador em um modo operacional conhecido como modo real . O BIOS lê o MBR do dispositivo de armazenamento para a memória física e, em seguida, direciona o microprocessador para o início do código de inicialização. Como o BIOS é executado em modo real, o processador está em modo real quando o programa MBR começa a ser executado e, portanto, espera-se que o início do MBR contenha código de máquina em modo real .

Como a rotina de inicialização do BIOS carrega e executa exatamente um setor do disco físico, ter a tabela de partição no MBR com o código de inicialização simplifica o design do programa MBR. Ele contém um pequeno programa que carrega o Volume Boot Record (VBR) da partição de destino. O controle é então passado para este código, que é responsável por carregar o sistema operacional real. Este processo é conhecido como carregamento em cadeia .

Programas de código MBR populares foram criados para inicializar PC DOS e MS-DOS , e códigos de inicialização semelhantes continuam sendo amplamente utilizados. Esses setores de inicialização esperam que o FDISKesquema da tabela de partição esteja em uso e verifica a lista de partições na tabela de partição incorporada do MBR para encontrar a única que está marcada com o sinalizador ativo . Em seguida, carrega e executa o registro de inicialização do volume (VBR) da partição ativa.

Existem implementações alternativas de código de inicialização, algumas das quais são instaladas por gerenciadores de inicialização , que operam de várias maneiras. Algum código MBR carrega código adicional para um gerenciador de inicialização da primeira trilha do disco, que assume ser espaço "livre" que não está alocado a nenhuma partição de disco e o executa. Um programa MBR pode interagir com o usuário para determinar qual partição em qual unidade deve inicializar e pode transferir o controle para o MBR de uma unidade diferente. Outro código MBR contém uma lista de localizações de disco (geralmente correspondendo ao conteúdo de arquivos em um sistema de arquivos ) do restante do código do gerenciador de inicialização para carregar e executar. (O primeiro depende de um comportamento que não é universal em todos os utilitários de particionamento de disco, principalmente aqueles que lêem e gravam GPTs. O último requer que a lista incorporada de locais de disco seja atualizada quando são feitas alterações que realocariam o restante do código. )

Em máquinas que não usam processadores x86 ou em máquinas x86 com firmware não BIOS, como firmware Open Firmware ou Extensible Firmware Interface (EFI), esse design é inadequado e o MBR não é usado como parte do bootstrap do sistema. Em vez disso, o firmware EFI é capaz de compreender diretamente o esquema de particionamento GPT e o formato do sistema de arquivos FAT , e carrega e executa programas mantidos como arquivos na partição do sistema EFI . O MBR estará envolvido apenas na medida em que possa conter uma tabela de partição para fins de compatibilidade se o esquema de tabela de partição GPT tiver sido usado.

Há algum código de substituição MBR que emula o bootstrap do firmware EFI, o que torna as máquinas não EFI capazes de inicializar a partir de discos usando o esquema de particionamento GPT. Ele detecta um GPT, coloca o processador no modo de operação correto e carrega o código compatível com EFI do disco para concluir esta tarefa.

Identidade do disco

Informações contidas na tabela de partição de um disco rígido externo, conforme aparecem no programa utilitário QtParted , em execução no Linux

Além do código de inicialização e de uma tabela de partição, os registros mestre de inicialização podem conter uma assinatura de disco . Este é um valor de 32 bits que se destina a identificar exclusivamente o meio de disco (em oposição à unidade de disco - os dois não são necessariamente os mesmos para discos rígidos removíveis).

A assinatura do disco foi introduzida pelo Windows NT versão 3.5, mas agora é usada por vários sistemas operacionais, incluindo o kernel Linux versão 2.6 e posterior. As ferramentas do Linux podem usar a assinatura de disco do NT para determinar de qual disco a máquina foi inicializada.

O Windows NT (e sistemas operacionais posteriores da Microsoft) usa a assinatura do disco como um índice para todas as partições em qualquer disco já conectado ao computador sob aquele sistema operacional; essas assinaturas são mantidas nas chaves do Registro do Windows , principalmente para armazenar os mapeamentos persistentes entre partições de disco e letras de unidade. Também pode ser usado em arquivos BOOT.INI do Windows NT (embora a maioria não o faça), para descrever a localização de partições inicializáveis ​​do Windows NT (ou posterior). Uma chave (entre muitas), em que as assinaturas de disco do NT aparecem em um registro do Windows 2000 / XP, é:

HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices\

Se a assinatura de um disco armazenada no MBR fosse A8 E1 B9 D2 (nessa ordem) e sua primeira partição correspondesse à unidade lógica C: no Windows, os REG_BINARYdados sob o valor-chave \DosDevices\C:seriam:

A8 E1 B9 D2 00 7E 00 00 00 00 00 00

Os primeiros quatro bytes são chamados de assinatura de disco. (Em outras chaves, esses bytes podem aparecer na ordem inversa daquela encontrada no setor MBR.) Eles são seguidos por mais oito bytes, formando um número inteiro de 64 bits, em notação little-endian , que são usados ​​para localizar o deslocamento de byte desta partição. Neste caso, 00 7E corresponde ao valor hexadecimal 0x7E00 (32.256 ). Partindo do pressuposto de que a unidade em questão relata um tamanho de setor de 512 bytes, a divisão desse deslocamento de byte por 512 resulta em 63, que é o número do setor físico (ou LBA) contendo o primeiro setor da partição (ao contrário da contagem de setores usada no valor dos setores das tuplas CHS, que conta a partir de um , o valor absoluto ou do setor LBA começa a contar a partir de zero ).

Se este disco tivesse outra partição com os valores 00 F8 93 71 02 após a assinatura do disco (sob, por exemplo, o valor da chave \DosDevices\D:), ele começaria no deslocamento de byte 0x00027193F800 (10.495.457.280 ), que também é o primeiro byte do setor físico20.498.940 .

A partir do Windows Vista , a assinatura do disco também é armazenada no armazenamento BCD ( Boot Configuration Data ) e o processo de inicialização depende disso. Se a assinatura do disco mudar, não puder ser encontrada ou houver um conflito, o Windows não consegue inicializar. A menos que o Windows seja forçado a usar a parte sobreposta do endereço LBA da entrada Advanced Active Partition como assinatura de pseudo-disco, o uso do Windows é conflitante com o recurso Advanced Active Partition do PTS-DOS 7 e DR-DOS 7.07, em particular se seu código de inicialização está localizado fora dos primeiros 8 GB do disco, de modo que o endereçamento LBA deve ser usado.

Considerações de programação

O MBR teve origem no PC XT . Os computadores compatíveis com IBM PC são little-endian , o que significa que o processador armazena valores numéricos que abrangem dois ou mais bytes na memória, o byte menos significativo primeiro. O formato do MBR na mídia reflete essa convenção. Assim, a assinatura MBR aparecerá em um editor de disco como a sequência 55 AA.

A sequência de inicialização no BIOS carregará o primeiro MBR válido que encontrar na memória física do computador no endereço 0x0000 : 0x7C00 . A última instrução executada no código BIOS será um "salto" para aquele endereço a fim de direcionar a execução para o início da cópia MBR. A validação primária para a maioria dos BIOSes é a assinatura no deslocamento 0x01FE , embora um implementador de BIOS possa escolher incluir outras verificações, como verificar se o MBR contém uma tabela de partição válida sem entradas referentes a setores além da capacidade relatada do disco.

Para o BIOS, os discos removíveis (por exemplo, disquete) e os discos fixos são essencialmente os mesmos. Para ambos, o BIOS lê o primeiro setor físico da mídia na RAM no endereço absoluto 0x7C00 , verifica a assinatura nos últimos dois bytes do setor carregado e, se a assinatura correta for encontrada, transfere o controle para o primeiro byte de o setor com uma instrução de salto (JMP). A única distinção real que o BIOS faz é que (por padrão, ou se a ordem de inicialização não for configurável) ele tenta inicializar a partir do primeiro disco removível antes de tentar inicializar a partir do primeiro disco fixo. Da perspectiva do BIOS, a ação do MBR ao carregar um registro de inicialização de volume na RAM é exatamente a mesma que a ação de um registro de inicialização de volume de disquete carregando o código-objeto de um carregador de sistema operacional na RAM. Em qualquer um dos casos, o programa carregado pelo BIOS realiza o trabalho de carregar um sistema operacional em cadeia.

Enquanto o código do setor de inicialização do MBR espera ser carregado no endereço físico 0x0000 : 0x7C00 , toda a memória do endereço físico 0x0000 : 0x0501 (endereço 0x0000 : 0x0500 é o último usado por um BIOS Phoenix) para 0x0000 : 0x7FFF , posteriormente relaxado para 0x0000 : 0xFFFF (e às vezes até 0x9000 : 0xFFFF ) ‍ — ‌o fim dos primeiros 640 KB ‍ — ‌está disponível em modo real. A INT 12h chamada de interrupção do BIOS pode ajudar a determinar quanta memória pode ser alocada com segurança (por padrão, ele simplesmente lê o tamanho da memória base em KB do segmento : localização de deslocamento 0x0040 : 0x0013 , mas pode ser interceptado por outro software de pré-inicialização residente como Sobreposições de BIOS, código RPL ou vírus para reduzir a quantidade relatada de memória disponível, a fim de evitar que outro software de estágio de inicialização, como setores de inicialização, os substitua).

Os últimos 66 bytes do MBR de 512 bytes são reservados para a tabela de partição e outras informações, portanto, o programa do setor de inicialização do MBR deve ser pequeno o suficiente para caber em 446 bytes de memória ou menos.

O código MBR examina a tabela de partição, seleciona uma partição adequada e carrega o programa que executará o próximo estágio do processo de inicialização, geralmente usando chamadas de BIOS INT 13h . O código de bootstrap MBR carrega e executa (um carregador de boot - ou dependente do sistema operacional) o código de registro de boot de volume localizado no início da partição "ativa". O registro de inicialização do volume caberá em um setor de 512 bytes, mas é seguro para o código MBR carregar setores adicionais para acomodar carregadores de inicialização maiores que um setor, desde que eles não façam suposições sobre o tamanho do setor. Na verdade, pelo menos 1 KB de RAM está disponível no endereço 0x7C00 em todas as máquinas IBM XT e AT, portanto, um setor de 1 KB pode ser usado sem problemas. Como o MBR, um registro de inicialização de volume normalmente espera ser carregado no endereço 0x0000 : 0x7C00 . Isso deriva do fato de que o design de registro de inicialização de volume se originou em mídia não particionada, onde um registro de inicialização de volume seria carregado diretamente pelo procedimento de inicialização do BIOS; conforme mencionado acima, o BIOS trata MBRs e registros de inicialização de volume (VBRs) exatamente da mesma forma. Como este é o mesmo local onde o MBR é carregado, uma das primeiras tarefas de um MBR é se realocar em outro lugar na memória. O endereço de realocação é determinado pelo MBR, mas geralmente é 0x0000 : 0x0600 (para MS-DOS / PC DOS, OS / 2 e código MBR do Windows) ou 0x0060 : 0x0000 (a maioria dos MBRs DR-DOS). (Mesmo que ambos os endereços segmentados resolvam para o mesmo endereço de memória física em modo real, para o Apple Darwin inicializar, o MBR deve ser realocado para 0x0000 : 0x0600 em vez de 0x0060 : 0x0000 , uma vez que o código depende do ponteiro DS: SI para a entrada de partição fornecida pelo MBR, mas se refere erroneamente a ela por meio de 0x0000 : SI apenas.) É importante não realocar para outros endereços na memória porque muitos VBRs assumirão um determinado layout de memória padrão ao carregar seu arquivo de inicialização.

O campo Status em um registro de tabela de partição é usado para indicar uma partição ativa. Os MBRs em conformidade com o padrão permitirão apenas uma partição marcada como ativa e usarão isso como parte de uma verificação de integridade para determinar a existência de uma tabela de partição válida. Eles exibirão uma mensagem de erro, se mais de uma partição tiver sido marcada como ativa. Alguns MBRs não padrão não tratarão isso como uma condição de erro e apenas usarão a primeira partição marcada na linha.

Tradicionalmente, os valores diferentes de 0x00 (não ativo) e 0x80 (ativo) eram inválidos e o programa de bootstrap exibia uma mensagem de erro ao encontrá-los. No entanto, as especificações Plug and Play BIOS e BIOS Boot Specification (BBS) permitiram que outros dispositivos também se tornassem inicializáveis ​​desde 1994. Consequentemente, com a introdução do MS-DOS 7.10 (Windows 95B) e superior, o MBR começou a tratar um conjunto bit 7 como flag ativo e mostrou uma mensagem de erro para os valores 0x01 .. 0x7F apenas. Ele continuou a tratar a entrada como unidade de unidade física a ser usada ao carregar o VBR da partição correspondente mais tarde, agora também aceitando outras unidades de inicialização diferentes de 0x80 como válidas; no entanto, o MS-DOS não fez uso dessa extensão por si só. Armazenar o número real da unidade física na tabela de partição normalmente não causa problemas de compatibilidade com versões anteriores, uma vez que o valor será diferente de 0x80 apenas em unidades diferentes da primeira (que não foram inicializáveis ​​antes, de qualquer maneira). No entanto, mesmo com sistemas habilitados para inicializar a partir de outras unidades, a extensão pode ainda não funcionar universalmente, por exemplo, depois que a atribuição do BIOS das unidades físicas for alterada quando as unidades forem removidas, adicionadas ou trocadas. Portanto, de acordo com a BIOS Boot Specification (BBS), é uma prática recomendada para um MBR moderno que aceita o bit 7 como sinalizador ativo transmitir o valor DL ​​originalmente fornecido pelo BIOS em vez de usar a entrada na tabela de partição.

BIOS para interface MBR

O MBR é carregado na localização de memória 0x0000 : 0x7C00 e com os seguintes registros de CPU configurados quando o carregador de bootstrap anterior (normalmente o IPL no BIOS) passa a execução para ele saltando para 0x0000 : 0x7C00 no modo real da CPU .

  • CS : IP = 0x0000 : 0x7C00 (fixo)
Alguns BIOSes da Compaq usam erroneamente 0x07C0 : 0x0000 . Embora isso resolva para o mesmo local na memória de modo real, não é padrão e deve ser evitado, uma vez que o código MBR assumindo certos valores de registro ou não escrito para ser relocável pode não funcionar de outra forma.
  • DL = unidade de unidade de inicialização ( discos fixos / unidades removíveis : 0x80 = primeiro, 0x81 = segundo, ..., 0xFE ; disquetes / superfloppies : 0x00 = primeiro, 0x01 = segundo, ..., 0x7E ; os valores 0x7F e 0xFF são reservados para ROM / unidades remotas e não deve ser usado no disco).
DL é suportado por BIOS da IBM, bem como pela maioria dos outros BIOS. Sabe-se que o BIOS do Toshiba T1000 não suporta isso de forma adequada, e alguns antigos BIOSes Wyse 286 usam valores DL maiores ou iguais a 2 para discos fixos (refletindo assim os números de unidade lógica no DOS em vez dos números de unidade física do BIOS). Sticks USB configurados como drives removíveis normalmente recebem uma atribuição de DL = 0x80 , 0x81 , etc. No entanto, alguns BIOSes raros os apresentaram erroneamente como DL = 0x01 , como se fossem configurados como superfloppies.
Um BIOS compatível com o padrão atribui números maiores ou iguais a 0x80 exclusivamente para discos fixos / unidades removíveis e, tradicionalmente, apenas os valores 0x80 e 0x00 eram passados ​​como unidades de unidade física durante a inicialização. Por convenção, apenas discos fixos / unidades removíveis são particionados, portanto, o único valor DL ​​que um MBR poderia ver tradicionalmente era 0x80 . Muitos MBRs foram codificados para ignorar o valor DL ​​e trabalhar com um valor conectado (normalmente 0x80 ).
O Plug and Play BIOS Specification e BIOS Boot Specification (BBS) permitem que outros dispositivos se tornem inicializáveis ​​também desde 1994. Este último recomenda que o código MBR e VBR deve usar DL em vez de padrões internamente conectados. Isso também garantirá a compatibilidade com várias atribuições não padrão (consulte os exemplos acima), no que diz respeito ao código MBR.
Os CD-ROMs inicializáveis ​​que seguem a especificação El Torito podem conter imagens de disco montadas pelo BIOS para ocorrer como disquete ou super-disquete nesta interface. Os valores DL de 0x00 e 0x01 também podem ser usados ​​por extensões de BIOS dos Serviços de extensão de interface de tempo de execução de área protegida (PARTIES) e Trusted Computing Group (TCG) no modo confiável para acessar partições PARTIES de outra forma invisíveis, arquivos de imagem de disco localizados por meio do Boot Engineering Extension Record (CERVEJA) no último setor físico de uma área protegida de host (HPA) de um disco rígido . Embora projetado para emular disquetes ou superfloppies, o código MBR que aceita esses valores DL não padrão permite o uso de imagens de mídia particionada pelo menos no estágio de inicialização dos sistemas operacionais.
  • DH bit 5 = 0: dispositivo suportado por INT 13h ; mais: não importa (deve ser zero). DH é suportado por alguns BIOS da IBM.
  • Alguns dos outros registros podem conter também certos valores de registro (DS, ES, SS = 0x0000 ; SP = 0x0400 ) com BIOS de ROM IBM originais, mas isso não é nada confiável, pois outros BIOS podem usar outros valores. Por esta razão, o código MBR da IBM, Microsoft, Digital Research, etc. nunca tirou vantagem disso. Depender desses valores de registro em setores de inicialização também pode causar problemas em cenários de inicialização em cadeia.

Os sistemas com BIOS Plug-and-Play ou suporte BBS fornecerão um ponteiro para dados PnP além de DL:

  • DL = unidade de inicialização (veja acima)
  • ES : DI = aponta para " $PnP" estrutura de verificação de instalação
Esta informação permite que o carregador de boot no MBR (ou VBR, se transmitido) interaja ativamente com o BIOS ou uma sobreposição de BIOS PnP / BBS residente na memória para configurar a ordem de boot, etc., no entanto, esta informação é ignorada pela maioria dos MBRs e VBRs padrão. Idealmente, ES: DI é passado para o VBR para uso posterior pelo sistema operacional carregado, mas os sistemas operacionais habilitados para PnP normalmente também têm métodos de fallback para recuperar o ponto de entrada do BIOS PnP posteriormente para que a maioria dos sistemas operacionais não dependa disso .

Interface MBR para VBR

Por convenção, um MBR em conformidade com o padrão passa a execução para um VBR carregado com sucesso, carregado na localização de memória 0x0000 : 0x7C00 , saltando para 0x0000 : 0x7C00 no modo real da CPU com os seguintes registros mantidos ou especificamente configurados:

  • CS: IP = 0x0000 : 0x7C00 (constante)
  • DL = unidade de inicialização (veja acima)
MS-DOS 2.0-7.0 / PC DOS 2.0-6.3 MBRs não passam o valor DL ​​recebido na entrada, mas eles usam a entrada de status de inicialização na entrada da tabela de partição da partição primária selecionada como unidade de unidade de inicialização física. Uma vez que é, por convenção, 0x80 na maioria das tabelas de partição MBR, ele não mudará as coisas, a menos que o BIOS tente inicializar a partir de um dispositivo físico diferente do primeiro disco fixo / unidade removível na linha. Essa também é a razão pela qual esses sistemas operacionais não podem inicializar a partir de um segundo disco rígido, etc. Algumas ferramentas FDISK permitem marcar partições em discos secundários como "ativas" também. Nesta situação, sabendo que esses sistemas operacionais não podem inicializar outras unidades de qualquer maneira, alguns deles continuam a usar o valor tradicionalmente fixo de 0x80 como marcador ativo, enquanto outros usam valores correspondentes à unidade de unidade física atualmente atribuída ( 0x81 , 0x82 ), permitindo assim inicializar outras unidades, pelo menos em teoria. Na verdade, isso funcionará com muitos códigos MBR, que usam um determinado bit 7 da entrada de status de inicialização como sinalizador ativo em vez de insistir em 0x80 ; no entanto, os MBRs do MS-DOS / PC DOS são conectados para aceitar o valor fixo de 0x80 apenas. Armazenar o número real da unidade física na tabela de partição também causará problemas, quando a atribuição de BIOS das unidades físicas for alterada, por exemplo, quando as unidades forem removidas, adicionadas ou trocadas. Portanto, para um MBR normal aceitando o bit 7 como sinalizador ativo e, de outra forma, apenas usando e passando para o VBR, o valor DL ​​originalmente fornecido pelo BIOS permite flexibilidade máxima. MS-DOS 7.1 - 8.0 MBRs foram alterados para tratar o bit 7 como sinalizador ativo e quaisquer valores 0x01 .. 0x7F como inválidos, mas eles ainda usam a unidade de unidade física da tabela de partição em vez de usar o valor DL ​​fornecido pelo BIOS. MBRs estendidos DR-DOS 7.07 tratam o bit 7 como sinalizador ativo e usam e passam o valor BIOS DL por padrão (incluindo valores não padrão 0x00 .. 0x01 usados ​​por alguns BIOSes também para mídia particionada), mas eles também fornecem um NEWLDR especial bloco de configuração para oferecer suporte a métodos alternativos de inicialização em conjunto com LOADER e REAL / 32, bem como para alterar o comportamento de detalhes do MBR, para que também possa trabalhar com valores de unidade recuperados da tabela de partição (importante em conjunto com LOADER e AAPs, consulte NEWLDR offset 0x000C), converta as unidades de unidade não padrão Wyse 0x02 .. 0x7F para 0x80 .. 0xFD e, opcionalmente, corrija o valor da unidade (armazenado no deslocamento 0x019no Extended BIOS Parameter Block (EBPB) ou no deslocamento do setor 0x01FD ) em carregou VBRs antes de passar a execução para eles (consulte NEWLDR offset 0x0014) - isso também permite que outros carregadores de boot usem NEWLDR como um carregador de cadeia, configurem sua imagem na memória imediatamente e "encapsulem" o carregamento de VBRs, EBRs ou AAPs por meio de NEWLDR.
  • O conteúdo de DH e ES: DI deve ser preservado pelo MBR para suporte completo Plug-and-Play (veja acima), no entanto, muitos MBRs, incluindo aqueles do MS-DOS 2.0 - 8.0 / PC DOS 2.0 - 6.3 e Windows NT / 2000 / XP, não. (Isso não é surpreendente, uma vez que essas versões do DOS são anteriores ao padrão BIOS Plug-and-Play e os padrões e convenções anteriores não indicavam requisitos para preservar qualquer registro diferente de DL.) Alguns MBRs definem DH como 0.

O código MBR passa informações adicionais para o VBR em muitas implementações:

  • DS: SI = aponta para a entrada da tabela de partição MBR de 16 bytes (no MBR realocado) correspondente ao VBR ativado. O PC-MOS 5.1 depende disso para inicializar se nenhuma partição na tabela de partição for marcada como inicializável. Em conjunto com LOADER, os setores de inicialização multiusuário DOS e REAL / 32 usam isso para localizar o setor de inicialização da partição ativa (ou outro carregador de bootstrap como IBMBIO.LDR em uma posição fixa no disco) se o arquivo de inicialização (LOADER.SYS) puder não ser encontrado. O PTS-DOS 6.6 e o S / DOS 1.0 usam isso em conjunto com o recurso Advanced Active Partition (AAP). Além do suporte para LOADER e AAPs, o DR-DOS 7.07 pode usar isso para determinar o método de acesso INT 13h necessário ao usar seu código CHS / LBA VBR duplo e atualizará o campo da unidade de inicialização / sinalizador de status na entrada da partição de acordo com o valor DL ​​efetivamente usado. Darwin bootloaders (da Apple boot1h, boot1ue David Elliott boot1fat32) dependem este ponteiro, bem como, mas além disso, eles não usam DS, mas suponho que a ser definida para 0x0000 vez. Isso causará problemas se essa suposição estiver incorreta. O código MBR do OS / 2, MS-DOS 2.0 a 8.0, PC DOS 2.0 a 7.10 e Windows NT / 2000 / XP também fornecem essa mesma interface, embora esses sistemas não a utilizem. Os MBRs do Windows Vista / 7 não fornecem mais este ponteiro DS: SI. Enquanto algumas extensões dependem apenas da própria entrada da tabela de partição de 16 bytes, outras extensões podem exigir que toda a tabela de partição de 4 (ou 5 entradas) esteja presente também.
  • DS: BP = opcionalmente aponta para a entrada da tabela de partição MBR de 16 bytes (no MBR realocado) correspondente ao VBR ativado. É idêntico ao ponteiro fornecido pelo DS: SI (veja acima) e é fornecido pelo MS-DOS 2.0-8.0, PC DOS 2.0-7.10, Windows NT / 2000 / XP / Vista / 7 MBRs. No entanto, não é compatível com a maioria dos MBRs de terceiros.

No DR-DOS 7.07, uma interface estendida pode ser fornecida opcionalmente pelo MBR estendido e em conjunto com o LOADER:

  • AX = assinatura mágica indicando a presença desta extensão NEWLDR ( 0x0EDC )
  • DL = unidade de inicialização (veja acima)
  • DS: SI = aponta para a entrada da tabela de partição MBR de 16 bytes usada (veja acima)
  • ES: BX = início do setor de inicialização ou imagem do setor NEWLDR (normalmente 0x7C00 )
  • CX = reservado

Em conjunto com a GPT, uma proposta de MBR híbrida da Enhanced Disk Drive Specification (EDD) 4 recomenda outra extensão para a interface:

  • EAX = 0x54504721 (" !GPT")
  • DL = unidade de inicialização (veja acima)
  • DS: SI = aponta para uma estrutura de transferência de MBR híbrida, consistindo em uma entrada de tabela de partição MBR fictícia de 16 bytes (com todos os bits definidos, exceto para o sinalizador de inicialização no deslocamento 0x00 e o tipo de partição no deslocamento 0x04 ) seguido por dados adicionais. Isso é parcialmente compatível com a extensão DS: SI mais antiga discutida acima, se apenas a entrada de partição de 16 bytes, e não toda a tabela de partição, for exigida por essas extensões mais antigas.
Como os sistemas operacionais mais antigos (incluindo seus VBRs) não suportam esta extensão nem são capazes de abordar setores além da barreira de 2 TiB, um carregador de boot híbrido habilitado para GPT ainda deve emular a entrada da tabela de partição MBR fictícia de 16 bytes se a partição de boot está localizado nos primeiros 2 TiB.
  • ES: DI = aponta para " $PnP" estrutura de verificação de instalação (veja acima)

Edição e substituição de conteúdo

Embora seja possível manipular os bytes no setor MBR diretamente usando vários editores de disco , existem ferramentas para gravar conjuntos fixos de código funcional no MBR. Desde o MS-DOS 5.0, o programa FDISKinclui a opção /MBR, que reescreverá o código MBR. No Windows 2000 e no Windows XP , o Console de recuperação pode ser usado para gravar um novo código MBR em um dispositivo de armazenamento usando seu fixmbrcomando. No Windows Vista e no Windows 7 , o Recovery Environment pode ser usado para escrever um novo código MBR usando o BOOTREC /FIXMBRcomando. Alguns utilitários de terceiros também podem ser usados ​​para editar diretamente o conteúdo das tabelas de partição (sem exigir nenhum conhecimento de editores hexadecimais ou de disco / setor), como MBRWizard .

ddtambém é um comando POSIX comumente usado para ler ou gravar em qualquer local em um dispositivo de armazenamento, MBR incluído. No Linux , ms-sys pode ser usado para instalar um MBR do Windows. Os projetos GRUB e LILO contam com ferramentas de escrita de código para o setor MBR, nomeadamente grub-installe lilo -mbr. O console interativo GRUB Legacy pode gravar no MBR, usando os comandos setupe embed, mas GRUB2 atualmente requer grub-installa execução de dentro de um sistema operacional.

Vários programas são capazes de criar um " backup " da tabela de partição primária e das partições lógicas na partição estendida.

O Linux sfdisk(em um SystemRescueCD ) é capaz de salvar um backup da tabela de partição primária e estendida. Ele cria um arquivo que pode ser lido em um editor de texto ou pode ser usado pelo sfdisk para restaurar a tabela de partição primária / estendida. Um exemplo de comando para fazer backup da tabela de partição sfdisk -d /dev/hda > hda.oute restaurar é sfdisk /dev/hda < hda.out. É possível copiar a tabela de partição de um disco para outro desta forma, útil para configurar o espelhamento, mas o sfdisk executa o comando sem solicitar / avisos usando sfdisk -d /dev/sda | sfdisk /dev/sdb.

Veja também

Notas

Referências

Leitura adicional

links externos