Assumindo que existe um MBR semelhante a um DOS de 512 bytes, e você substituiu os primeiros 446 bytes dele por alguma porcaria ( zeros ou apenas /dev/urandom
output), ou danificou o bootcode de alguma outra forma. Neste caso, a tabela de partições MBR está em seu lugar, mas o sistema não pode inicializar a partir deste dispositivo.
A idéia é usar outro carregador do sistema semelhante ao BSD para inicializar com seu dispositivo e seu kernel.
- Você deve iniciar a inicialização em qualquer sistema operacional semelhante ao BSD (tentei com FreeBSD 6.0, 7.0, 8.0, 8.1, 8.2, 8.3, 8.4, 9.2 e Frenzy 1.4) de outro HDD, CD, unidade flash, PXE, virtual mídia via BMC / KVM, etc.
- Durante o processo de inicialização, clique na opção "Escape to loader prompt" na tela do carregador (seria "6" em sistemas mais antigos do FreeBSD, "3" no FreeBSD 9, "8" no Frenzy)
- Descarregue o kernel e seus módulos digitando
unload
- Descubra o dispositivo do qual você deseja inicializar seu FreeBSD (geralmente algo como
disk0s1a
) digitandolsdev
- Defina este dispositivo como "atual", digitando
set currdev="disk0s1a"
- Releia
loder.conf
do seu dispositivo (para ter certeza de que todos os ajustes e hacks do kernel se aplicariam) digitandoread-conf boot/loader.conf
- Inicie o SO e aproveite - basta digitar
boot-conf
Quando seu sistema operacional é iniciado, você pode reparar o código de inicialização. Eu uso sysinstall
para ele (Custom - > Partição, W , <Yes>
, BootMgr
("Instalar o Gerenciador de Inicialização do FreeBSD"), <OK>
, Q , <Exit>
, <Exit Install>
), mas foi descontinuado desde 9.0-RELEASE e removido da base desde 10.0-RELEASE. Outra maneira é usar o backup, armazenado em /boot
, para extrair o código de inicialização a partir dele:
# gpart bootcode -b /boot/mbr /dev/yourbootdevice