Reescrevendo a tabela de partições para ser compatível com BIOS / DOS

0

tl; dr: pule para a seção de perguntas

Antecedentes

Eu tenho uma unidade em que o Windows 7 foi instalado. Ele tinha uma partição de inicialização do Windows 7 de 100MB, seguida de uma partição que ocupava o restante da unidade. Um tempo atrás, eu encolhi a partição principal para que eu pudesse ter um volume separado para os arquivos em vez de armazená-los no mesmo volume onde o Windows, os jogos e os programas estão instalados.

Recentemente, limpei a partição secundária e usei o EASEUS Parition Master (Home) para excluí-la, e a principal para usar o disco inteiro como antes.

Problema

Infelizmente, depois que o EASEUS terminou de fazer seu trabalho (no modo API nativa do Windows), não consegui inicializar o sistema com essa unidade nele. Sempre que eu tentei inicializar, o BIOS detectava a unidade, lia e imprimia os dados SMART ( STAUS OK ) e depois ficava travado.

No começo, eu temi que a unidade tivesse morrido magicamente entre a operação de redimensionamento e a reinicialização, mas depois de colocá-la em um gabinete externo, descobri que a unidade estava bem e, melhor ainda, as partições estavam intactas e todos os arquivos acessíveis. A outra partição desapareceu e a principal foi estendida para todo o comprimento da unidade, conforme desejado. É totalmente funcional do Windows, mas não do BIOS.

Testes e Observações

Eu executei o snap-in MMC do Disk Management, chkdsk, TestDisk, (uma versão mais recente) EASEUS Partition Master (livre), EASEUS Partition Recovery, PC Inspector Drive Recovery e algumas outras ferramentas no modo somente leitura e descobriu que a maioria deles não teve nenhum problema com a unidade. O único que deu alguma indicação de um problema foi o TestDisk, que indica uma incompatibilidade da geometria da unidade.

Diagnóstico

A conclusão que tirei é que o Windows é capaz de ler a unidade e detectar as partições muito bem (provavelmente ignora os valores irrelevantes de compatibilidade com versões anteriores) na tabela de partições, mas quando a BIOS tenta ler os arquivos de inicialização a unidade fica desequilibrada nos valores incorretos e trava.

Pergunta

O que eu preciso agora é uma maneira de corrigir a tabela de partição (e MBR?) para ser compatível com o BIOS (e ostensivamente DOS) sem perder nenhum dado.

Restrições

Sei que você pode reescrever o MBR sem perda de dados, mas não tenho certeza de como reconstruir a tabela de partição sem desordenar as partições existentes.

Infelizmente, não tenho uma unidade sobressalente grande o suficiente para copiar tudo (nem seria necessário formatar e copiar todas essas coisas), por isso preciso de uma maneira segura de fazer um reparo no local . Eu tenho despejado uma cópia do primeiro megabyte ou assim da unidade, bem como alguns do início da partição do Windows. Portanto, tenho uma cópia do MBR, da tabela de partições e do setor de inicialização da partição de inicialização de 100 MB e da partição do Windows.

Ferramentas e habilidades

Estou confortável com ferramentas de disco de baixo nível, incluindo editores hexadecimais e de disco (realizei recuperação de dados em volumes FAT em várias ocasiões, incluindo a reconstrução de cadeias e diretórios FAT), mas pouca experiência com NTFS.

TestDisk apresenta os seguintes erros na análise:

Disk /dev/sdf - 500 GB / 465 GiB - CHS 60801 255 63
Current partition structure:
         Partition                  Start        End    Size in sectors

Warning: number of heads/cylinder mismatches 224 (NTFS) != 255 (HD)
Warning: number of sectors per track mismatches 19 (NTFS) != 63 (HD)
 1 * HPFS - NTFS              0  32 33    12 223 19     204800

Bad relative sector.
 2 P HPFS - NTFS             12 223 20 60801  76 27  976566032

Bad relative sector.

E o log de backup é o seguinte:

#1420342168 Disk /dev/sdf - 500 GB / 465 GiB - CHS 60801 255 63
 1 : start=     2048, size=   204800, Id=07, *
 2 : start=   206848, size=976566032, Id=07, P
#1420342211 Disk /dev/sdf - 500 GB / 465 GiB - CHS 60801 255 63
 1 : start=     2048, size=   204800, Id=07, *
 2 : start=   206848, size=976566032, Id=07, P
    
por Synetech 04.01.2015 / 01:48

2 respostas

0

No passado, fiquei impressionado com o PhotoRec de Christophe Grenier. Obviamente, ele realmente sabe o que está fazendo e fez uma grande pesquisa em sistemas de arquivos e tipos de arquivos. Como tal, eu decidi confiar em sua experiência e deixar TestDisk fazer o seu trabalho (especialmente porque era a única ferramenta que realmente detectava quaisquer problemas).

Após a mensagem de erro, continuei e cheguei a um ponto em que ele me dava a opção de escrever a tabela de partições que eu estava olhando ou procurar por mais. Como as partições listadas já estavam corretas, eu permiti que ele escrevesse a tabela de partições e reinicializasse. A unidade ainda era reconhecida e todos os arquivos estavam acessíveis (ainda no gabinete externo), então eu fiz um chkdsk para a tranquilidade que foi verificada.

O passo final foi conectá-lo ao sistema e ver se ele poderia passar pela BIOS. Com certeza, sim. Eu fiz mais um chkdsk só para ter mais certeza, e deu check-out novamente. Na verdade, atualmente estou escrevendo este post enquanto a unidade gira alegremente no computador.

Portanto, se alguém redimensionar uma partição e descobrir que seu BIOS trava depois de detectar a unidade, coloque-a em um gabinete externo ou coloque-a em outro sistema com BIOS diferente e faça o TestDisk reescrever a tabela de partições. Ele deve ajustar os parâmetros para mais uma vez ser compatível com um BIOS mais antigo (e provavelmente o DOS também). Ele irá escrever a tabela de partição correta com os parâmetros corretos e deve deixar todos os outros dados intactos na unidade.




(Eu observarei que uma vez que o TestDisk reescreveu a tabela de partições, ele não mostrou mais erros, ele reescreveu a tabela de partição enquanto ainda estava no gabinete, mas depois de colocar a unidade de volta no sistema, O TestDisk está novamente mostrando erros, alguns antigos, alguns novos, outros diferentes, mas a unidade está funcionando bem, no entanto, incluí os novos erros abaixo caso alguém queira tentar depurar a causa exata do BIOS-hang desde parece estar apenas parcialmente relacionado aos parâmetros da geometria.)

Disk /dev/sdb - 500 GB / 465 GiB - CHS 229504 224 19
Current partition structure:
         Partition                  Start        End    Size in sectors

 1 * HPFS - NTFS              0 107 16    48 134 14     204800

Warning: Bad starting sector (CHS and LBA don't match)
Warning: number of heads/cylinder mismatches 255 (NTFS) != 224 (HD)
Warning: number of sectors per track mismatches 63 (NTFS) != 19 (HD)
 2 P HPFS - NTFS             48 134 15 229504 215 11  976566272

Warning: Bad starting sector (CHS and LBA don't match)
    
por 04.01.2015 / 22:42
1

A BIOS geralmente não deveria estar lendo nenhum arquivo de inicialização , apenas os 440 bytes do código de bootstrap no MBR, o resto é o negócio do seu bootloader ... (Embora haja exceções infelizes). / p>

Portanto, é possível que você só precise reinstalar o gerenciador de inicialização do Windows usando bootrec /fixmbr .

Para recriar a tabela de partições, um CD do Linux funcionaria. Execute fdisk /dev/sd… , anote o layout da partição (tipo, setor inicial, tamanho), use o para criar uma tabela de partição vazia, adicione novamente todas as partições usando exatamente o mesmo layout e w sair da nova tabela .

    
por 04.01.2015 / 01:59