Ao contrário do que muitos falam a respeito do Master Boot Record (O famoso MBR), ele não possui um total de 512 bytes e sim 446. Dos 512 normalmente citados, 66 bytes são usados para guardar informações sobre a tabela de partições do dispositivo.
Creio que muitos já conhecem os problemas de se ter mais de um HD SATA em um computador. Na verdade o problema mais comum ocorre quando dois ou mais dos HDs estão marcados como inicializáveis, isto faz com que na maioria das vezes o sistema para durante a inicialização, acusando que não foi possível encontrar a referida imagem de boot.
Pensando desta maneira, logo me ocorreu uma ideia (correta até certo ponto): se eu apagar os dados do MBR de um HD não terei problemas em ligar o computador com dois HDs SATA conectados a minha placa-mãe.
A ideia está correta porque, realmente, se apenas um HD estiver marcado como inicializável (isto é, apenas um deles possui dados gravados no MBR), então não temos problemas na inicialização, como se pode constatar ao comprarmos um HD novo (não particionado, não inicializável) e instalarmos em nosso computador.
O problema: o comando dd usado como segue:
# dd if=/dev/zero bs=512 count=1 /dev/sdX
"Apaga" (na verdade ele preenche com zeros) os primeiros 512 bytes do dispositivo /dev/sdX. Mas como citado acima, bastaria apagar os primeiros 446 bytes. Se usarmos o comando como ele está, apagaremos também a tabela de partições do nosso HD. Consequentemente, "perderemos" as referências necessárias para nossos arquivos.
Mas nem tudo está perdido!
Fazendo backup do MBR com dd ou recuperando com o testdisk
Se você for um homem prevenido (vale por 2 hein?), então deve possuir um backup do MBR + tabela de partições do seu HD em algum lugar seguro. O comando:
# dd if=/dev/sdX bs=512 count=1 of=mbr-tabela-particoes.backup
irá criar uma cópia dos primeiros 512 bytes contento as informações de que precisaremos para uma futura restauração com o comando:
# dd if=mbr-tabela-particoes.backup of=/dev/sdX
Mas se você, assim como eu, não se preveniu, é hora de conhecer o testdisk. O
testdisk é um programa livre de código aberto que permite você fazer uma varredura no disco corrompido listando tudo o que um dia foi partição e te dando a possibilidade de escrever uma (velha) nova tabela de partições para o HD.
Vá ao site de download no endereço:
e você encontrará versões disponíveis para
Linux e Windows.
Se você usa Debian ou derivados, basta usar o comando apt-get. Se usa o BackTrack, ele já vem com o utilitário instalado.
Inicie o utilitário, surgirá então a tela:
onde você poderá escolher o dispositivo a ser recuperado. Em seguida a tela:
pergunta qual o tipo de particionamento. A maioria das pessoas deve escolher Intel aqui, a menos que você use um Mac ou outro tipo de máquina.
Na tela seguinte:
você escolhe a opção [quick search], que dependendo da capacidade do dispositivo deveria se chamar [slow search]. Após algum tempo (no meu caso, quase duas horas) será mostrada uma lista contendo todas as possíveis partições. Se você já formatou e particionou seu HD várias vezes é provável que as diferentes partições usadas sejam listadas nessa hora.
Você pode então escolher as partições desejadas (usando as setas para cima/baixo) em seguida usar as setas para esquerda/direita e decidir se a partição é primária (P), inicializável (*) ou lógica(L).
Ao final escolha a opção [write] que sua tabela de partições será restaurada.
Conclusão
Cada dia se aprende mais um pouco, quem diria que eu precisaria saber que o MBR possui 446 bytes e não 512?
Mas é assim mesmo, é apanhando que se aprende!
Uma das coisas interessantes do testdisk é que juntamente com o pacote de vem um outro utilitário chamado
photorec. Este utilitário permite recuperar arquivos apagados do seu sistema. Infelizmente ele não recupera os nomes de tais arquivos, porém o mais importante ele consegue obter, que é o seu arquivo de volta.
Finalmente, não façam como eu. Tomem cuidado ao usar o "dd". Se seu desejo é apenas excluir o MBR, use o valor do bs=446 ou então desmarque a flag de inicializável usando o fdisk.