Como inicializar o sistema FreeBSD com o bootcode quebrado?

8

Eu tenho um HDD (ou SSD, ou unidade flash) com o FreeBSD instalado nele, e de alguma forma eu quebrei o bootcode (primeiro 446 bytes do MBR). Como eu poderia inicializar neste FreeBSD?

    
por AntonioK 06.11.2013 / 13:17

1 resposta

13

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 ) digitando lsdev
  • 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) digitando read-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
    
por 06.11.2013 / 13:17