Índice da Página
O que é registro mestre de inicialização(MBR)?
O Master Boot Record é o mesmo para praticamente todos os sistemas operacionais. Ele está localizado no primeiro Setor do Disco Rígido, no Cilindro 0, Cabeça 0, Setor 1. É o primeiro código que seu computador executa depois de verificar todo o seu hardware (POST) e ativar o controle de carregamento do software sobre o disco rígido. Ele também contém a tabela de partições, que define as diferentes seções do seu disco rígido. Basicamente, se algo acontecer a esta pequena seção de 512 bytes, seu disco rígido terá morte cerebral.
Desvio | Descrição | Tamanho |
000h | Código Executável (Iniciar o PC) | 446 bytes |
1BEh | Entrada da 1ª partição (consulte a próxima tabela) | 16 bytes |
1CEh | Entrada da 2ª Partição | 16 bytes |
1DEh | Entrada da 3ª Partição | 16 bytes |
1EEh | Entrada da 4ª Partição | 16 bytes |
1FEh | Assinatura do registro de inicialização (55hAAh) | 2 bytes |
- Entrada de partição (parte do MBR)
Desvio | Descrição | Tamanho |
00h | Estado Atual da Partição (00h=Inativo, 80h=Ativo) | 1 Byte |
01h | Início da Partição - Cabeça | 1 Byte |
02h | Início da Partição - Cilindro/Setor (Veja Abaixo) | 1 Word |
04h | Tipo de partição (veja a lista abaixo) | 1 Byte |
05h | Fim da Partição - Cabeçalho | 1 Byte |
06h | Fim da Partição - Cilindro/Setor | 1 Word |
08h | Número de setores entre o MBR e o primeiro setor na partição | 1 Double Word |
0Ch | Número de Setores na Partição | 1 Double Word |
- Codificação de Cilindro/Setor
Acho que na época dos discos rígidos de 10 MB e 8086, o código era caro. Então eles fizeram tudo o que podiam para preservar o espaço. Infelizmente agora temos que conviver com isso, mas felizmente eles criaram novas maneiras de traduzir o sistema para que o limite de 1024 cilindros (2 ^ 10) não seja um problema muito grande, pelo menos para computadores mais novos. Os mais antigos geralmente precisam de algum tipo de programa de sobreposição de disco para fazê-los ver todo o disco rígido.
De qualquer forma, para tirar o setor disso, você precisa aplicar uma máscara AND ($ 3F) a ele. Para obter o Cilindro, você pega o byte alto e OR com o byte baixo que foi E mascarado com ($C0) e depois deslocado para a esquerda dois. Não é muito fácil de explicar, então vou apenas mostrar como fiz com duas rotinas que fiz (em Pascal) para Codificar e Decodificar o Cilindro/Setor. Esperançosamente, mesmo que você não conheça Pascal, você será capaz de lê-lo.
Function CylSecEncode(Cylinder, Sector: Word): Word;
Begin
CylSecEncode: = (Lo(Cylinder) shl 8) or (Hi(Cylinder) shl 6) or Sector;
End;
Procedure CylSecDecode(Var Cylinder, Sector: Word; CylSec : Word);
Begin
Cylinder: = Hi(CylSec) or ((Lo(CylSec) and $C0) shl 2);
Sector: = (CylSec and $3F);
End;
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
Bits do Cilindro 7 a 0 | Bits de Cilindro 9+8 | Bits de setor 5 a 0 |
Listagem de tipos de partição
Há mais do que apenas estes mostrados, mas incluí apenas aqueles relevantes para os sistemas operacionais MS.
Valor | Descrição |
00h | Desconhecido ou nada |
01h | FAT de 12 bits |
04h | FAT de 16 bits (partição menor que 32 MB) |
05h | Partição estendida do MS-DOS |
06h | FAT de 16 bits (partição maior que 32 MB) |
0Bh | FAT de 32 bits (partição até 2048 GB) |
0Ch | O mesmo que 0BH, mas usa LBA 1 13h Extensões |
0Eh | O mesmo que 06H, mas usa LBA 1 13h Extensões |
0Fh | O mesmo que 05H, mas usa LBA 1 13h Extensões |
Ler Múltiplas Partições
Embora ter várias partições no FAT32 não seja tão provável quanto no FAT16, ainda funciona da mesma maneira. A primeira partição é a partição primária e todo o resto é armazenado na partição estendida. É um pouco complicado quando se trata de ler essas partições extras (não muito, apenas um pouco).
O primeiro registro na tabela de partições mostra onde está a partição Primária (qual é o seu tamanho, onde começa e onde termina). A segunda entrada na tabela de partição mostra onde está toda a partição estendida (que pode incluir mais do que apenas uma partição).
Para ler mais partições, vá para onde diz que a partição estendida começa e leia o primeiro setor. Ele age exatamente como o MBR. Ficará em branco onde deveria estar o código, e na tabela de partições terá como primeira entrada a próxima Partição do Drive, e se houver mais, haverá outra partição Estendida, como antes.
No entanto, todas as referências a números de setor são feitas usando o novo ponto MBR como referência, tornando-o uma unidade virtual. Caso isso não faça muito sentido (e, a propósito, explico coisas que posso entender se não fizer), deixe-me mostrar como uma unidade com três partições é configurada.
MBR de Toda a Unidade
Entrada nº 1 - aponta para a partição nº 1
Entrada nº 2 - aponta para toda a partição estendida
Você leria o primeiro setor dessa partição estendida e veria outra estrutura MBR.
MBR de Partição Estendida
Entrada nº 1 - aponta para a partição nº 2
Entrada nº 2 - aponta para o restante da partição estendida após a partição nº 2
Agora, todas as referências a números de setor (mais especificamente a entrada em Offset 08h) nessas entradas não seriam referenciadas a partir do início da unidade, mas a partir do início da partição estendida. No entanto, os números CHS (cilindro, cabeçote, setor) ainda estariam corretos.
Mais uma vez, você leria o primeiro setor dessa partição estendida e veria o próximo MBR.
MBR do Resto da Partição Estendida
Entrada nº 1 - aponta para a partição nº 3
Nenhuma entrada #2, já que esta foi a última partição
Se houvesse outra partição, o padrão continuaria como antes, até que a última fosse alcançada.
Informações do registro de inicialização FAT32
Esta informação está localizada no primeiro setor de cada partição.
Desvio | Descrição | Tamanho |
00h | Código de salto + NOP | 3 Bytes |
03h | Nome do OEM (provavelmente MSWIN4.1) | 8 Bytes |
0Bh | Bytes por setor | 1 Word |
0Dh | Setores por cluster | 1 Byte |
0Eh | Setores Reservados | 1 Word |
10h | Número de cópias de FAT | 1 Byte |
11h | Máximo de entradas de diretório raiz (N/A para FAT32) | 1 Word |
13h | Número de setores na partição menor que 32 MB (N/A para FAT32) | 1 Word |
15h | Descritor de mídia (F8h para discos rígidos) | 1 Byte |
16h | Setores por FAT em FATSystems mais antigos (N/A para FAT32) | 1 Word |
18h | Setores por trilha | 1 Word |
1Ah | Número de cabeças | 1 Word |
1ch | Número de setores ocultos na partição | 1 Double Word |
20h | Número de setores na partição | 1 Double Word |
24h | Número de setores por FAT | 1 Double Word |
28h | Flags (Bits 0-4 Indicam Cópia FAT Ativa) (Bit 7 Indica se FAT Mirroring está Habilitado ou Desabilitado) (Se FAT Mirroring está Desabilitado, a Informação FAT é somente escrita na cópia indicada pelos bits 0-4) | 1 Word |
2Ah | Versão da unidade FAT32 (HighByte = versão principal, byte baixo = versão secundária) | 1 Word |
2Ch | Número do cluster do início do diretório raiz | 1 Double Word |
30h | Número do setor do setor de informações do sistema de arquivos (consulte a estrutura abaixo) (referenciado desde o início da partição) | 1 Word |
32h | Número do setor do setor BackupBoot (referenciado desde o início da partição) | 1 Word |
34h | Reservado | 12 Bytes |
40h | Número da partição da unidade lógica | 1 Byte |
41h | Não utilizado (pode ser byte alto da entrada anterior) | 1 Byte |
42h | Assinatura Estendida (29h) | 1 Byte |
43h | Número de série da partição | 1 Double Word |
47h | Nome do volume da partição | 11 Bytes |
52h | Nome FAT (FAT32) | 8 Bytes |
5Ah | Código executável | 420 Bytes |
1FEh | Assinatura do registro de inicialização (55hAAh) | 2 Bytes |
Instrução do setor de informações do sistema de arquivos
Normalmente, este existe um segundo setor da partição, embora haja uma referência no setor de inicialização a ele. Estou assumindo que pode ser movido. Nunca consegui uma imagem completa deste. Embora eu saiba onde estão os campos importantes.
Desvio | Descrição | Tamanho |
00h | Primeira Assinatura (52h 52h 61h41h) | 1 Double Word |
04h | Desconhecido, atualmente (pode ser nulo) | 480 Bytes |
1E4h | Assinatura do Setor FSInfo(72h 72h 41h 61h) | 1 Double Word |
1E8h | Número de Clusters Livres (Setto -1 se Desconhecido) | 1 Double Word |
1ECh | Cluster Número do cluster que foi alocado mais recentemente. | 1 Double Word |
1F0h | Reservado | 12 Bytes |
1FCh | Desconhecido ou Null | 2 Bytes |
1FEh | Assinatura do registro de inicialização (55hAAh) | 2 Bytes |
Layout da Unidade FAT32
Desvio | Descrição |
Início da Partição | Setor de inicialização |
Início + # de Setores Reservados | Tabelas de gordura |
Início + # de Reservados + (# de Setores Por FAT * 2) | Área de dados (começa com o cluster nº 2) |
Significado do Cluster
Um Cluster é um Grupo de Setores no Disco Rígido que contém informações. Um Cluster 4K possui 8 Setores (512*8=4096). Cada Cluster recebe um lugar na Tabela FAT. Quando você olha para uma entrada no FAT, o número indica se esse cluster contém ou não dados e, em caso afirmativo, se é o fim dos dados ou se há outro cluster depois dele. Todos os dados em uma partição começam com o Cluster #2. Se a entrada FAT for 0, não haverá dados nesse cluster. Se a entrada FAT for 0FFFFFFFh, será a última entrada na cadeia.
Este é um dos maiores buracos na minha informação. Não consigo encontrar nenhum lugar que mostre o que os números significam quando se trata da tabela FAT. Consegui dizer o final da cadeia apenas olhando para uma unidade FAT32, mas não sei o que significa um BAD Cluster ou qual é o número máximo válido para mostrar dados.
Por enquanto, você pode calcular o cluster válido máximo em uma partição com esta fórmula:
((# de Setores em Partição) - (# de Setores por Fat * 2) - (# de Setores Reservados) ) / (# de Setores por Cluster)
Se houver algum resto na resposta a essa fórmula, significa apenas que houve alguns clusters extras no final da partição (provavelmente não o suficiente para criar outro cluster), então você pode simplesmente se livrar de qualquer coisa após o ponto decimal.
Tabela de Diretório
Outro aspecto ao olhar para um Sistema de Arquivos em Baixo Nível é a Tabela de Diretórios. A Tabela de Diretórios é o que armazena todas as Entradas de Arquivo e Diretório. Basicamente, existe apenas uma diferença entre a Tabela de Diretórios de FAT16 e FAT32. A diferença é: o byte reservado do OS/2 (offset 20 [14h]) na estrutura do nome de arquivo curto é substituído pela palavra alta do número do cluster (já que agora são 4 bytes em vez de 2).
Tabela de Alocação de Arquivos
Notas de rodapé
1 - LBA = Endereçamento de Bloco Lógico - Usa as Extensões Int 13h incorporadas em BIOS's mais recentes para acessar dados acima da barreira de 8 GB ou para acessar estritamente no modo LBA, em vez de CHS (Cilindro, Cabeça, Setor)
Dica extra: restaure dados perdidos do hd FAT32 com o software de recuperação de hd da EaseUS
Se você acidentalmente excluiu, removeu ou formatou dados em um disco rígido FAT32, USB ou outros dispositivos de armazenamento, não entre em pânico. Sua melhor escolha é deixar o software de recuperação de dados ajudar! Aqui, gostaríamos de recomendar que você experimente o EaseUS Data Recovery Wizard, que permite recuperar, desformatar e restaurar com eficiência todos os dados perdidos em 3 etapas simples. Faça o download gratuito para recuperar todos os seus dados FAT32 perdidos agora:
Esta página foi útil?
-
"Espero que minha experiência com tecnologia possa ajudá-lo a resolver a maioria dos problemas do seu Windows, Mac e smartphone."…
20+
Anos de experiência
160+
Países e regiões
72 Milhões+
Downloads
4.7 +
Classificação do Trustpilot
Tópicos em Destaque
Pesquisa