¿Cómo arrancar el sistema FreeBSD con código de arranque roto?

8

Tengo un HDD (o SSD, o unidad flash) con FreeBSD instalado, y de alguna manera rompí el código de arranque (primeros 446 bytes de MBR). ¿Cómo podría iniciar en este FreeBSD?

AntonioK
fuente

Respuestas:

13

Suponiendo que hay un MBR de 512 bytes como DOS, y ha reemplazado los primeros 446 bytes con algo de basura ( ceros o solo /dev/urandomsalida), o ha dañado el código de arranque de otra manera. En este caso, la tabla de particiones MBR está en su lugar, pero el sistema no puede arrancar desde este dispositivo.

La idea es utilizar otro cargador de sistema similar a BSD para arrancar con su dispositivo y su núcleo.

  • Debería comenzar a iniciar en cualquier sistema operativo tipo BSD (lo he intentado con FreeBSD 6.0, 7.0, 8.0, 8.1, 8.2, 8.3, 8.4, 9.2 y Frenzy 1.4) desde otro HDD, CD, unidad flash, PXE, medios virtuales a través de BMC / KVM, etc.
  • Durante el proceso de arranque, presione la opción "Escape to loader prompt" en la pantalla del cargador (sería "6" en sistemas FreeBSD más antiguos, "3" en FreeBSD 9, "8" en Frenzy)
  • Descargue el kernel y sus módulos escribiendo unload
  • Averigüe desde qué dispositivo desea iniciar su FreeBSD (generalmente algo así disk0s1a) escribiendolsdev
  • Configure este dispositivo "actual" escribiendo set currdev="disk0s1a"
  • Vuelva a leer loder.confdesde su dispositivo (para asegurarse de que se apliquen todos los ajustes y trucos del kernel) escribiendoread-conf boot/loader.conf
  • Inicie el sistema operativo y disfrute, solo escriba boot-conf

Cuando se inicia su sistema operativo, puede reparar el código de arranque. Yo uso sysinstallpara ello (Custom -> Partición, W, <Yes>, BootMgr( "Instalar el gestor de arranque de FreeBSD"), <OK>, Q, <Exit>, <Exit Install>), pero está obsoleta desde 9.0-RELEASE y se elimina de la base desde 10.0-RELEASE. Otra forma es usar una copia de seguridad, almacenada /boot, para extraer el código de arranque:

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