Como inicializar o sistema FreeBSD com um código de inicialização quebrado?

8

Eu tenho um HDD (ou SSD ou unidade flash) com o FreeBSD instalado, e de alguma forma quebrei o código de inicialização (primeiros 446 bytes de MBR). Como eu poderia inicializar neste FreeBSD?

AntonioK
fonte

Respostas:

13

Supondo que exista um MBR de 512 bytes do tipo DOS, e você substituiu os primeiros 446 bytes dele por alguma porcaria ( zeros ou apenas /dev/urandomsaída) ou danificou o código de inicialização de outra maneira. Nesse caso, a tabela de partição MBR está em seu lugar, mas o sistema não pode inicializar a partir deste dispositivo.

A idéia é usar o carregador de outro sistema semelhante ao BSD para inicializar com seu dispositivo e seu kernel.

  • Você deve iniciar a inicialização de qualquer sistema operacional semelhante ao BSD (tentei com o FreeBSD 6.0, 7.0, 8.0, 8.1, 8.2, 8.3, 8.4, 9.2 e Frenzy 1.4) a partir de outro HDD, CD, unidade flash, PXE, mídia virtual via BMC / KVM, etc.
  • Durante o processo de inicialização, clique na opção "Escape to loader prompt" na tela do carregador (seria "6" nos sistemas FreeBSD mais antigos, "3" no FreeBSD 9, "8" no Frenzy)
  • Descarregue o kernel e seus módulos digitando unload
  • Descubra o dispositivo do qual você deseja inicializar o FreeBSD (geralmente algo como disk0s1a) digitandolsdev
  • Defina este dispositivo "atual" digitando set currdev="disk0s1a"
  • Releia a loder.confpartir do seu dispositivo (para garantir que todos os ajustes e hacks do kernel se apliquem) digitandoread-conf boot/loader.conf
  • Inicie o SO e aproveite - basta digitar boot-conf

Quando o seu sistema operacional for iniciado, você poderá reparar o código de inicialização. Eu uso sysinstallpara ele (Custom -> Partição, W, <Yes>, BootMgr( "Instalar o FreeBSD Boot Manager"), <OK>, Q, <Exit>, <Exit Install>), mas está obsoleto desde o 9.0-RELEASE e removidos da base desde 10.0-RELEASE. Outra maneira é usar o backup armazenado /bootpara extrair o código de inicialização:

# gpart bootcode -b /boot/mbr /dev/yourbootdevice
AntonioK
fonte