Come avviare il sistema FreeBSD con bootcode rotto?


8

Ho un HDD (o SSD o unità flash) con FreeBSD installato su di esso, e in qualche modo ho rotto il codice di avvio (primi 446 byte di MBR). Come posso avviare questo FreeBSD?

Risposte:


13

Supponendo che esista un MBR di tipo DOS a 512 byte e che ne sia stato sostituito il primo 446 byte con qualche schifezza ( zero o solo /dev/urandomoutput) o danneggiato il codice di avvio in altro modo. In questo caso la tabella delle partizioni MBR è al suo posto, ma il sistema non può avviarsi da questo dispositivo.

L'idea è di utilizzare un altro caricatore di sistema simile a BSD per l'avvio con il dispositivo e il kernel.

  • Dovresti iniziare l'avvio su qualsiasi sistema operativo simile a BSD (ho provato con FreeBSD 6.0, 7.0, 8.0, 8.1, 8.2, 8.3, 8.4, 9.2 e Frenzy 1.4) da un altro HDD, CD, unità flash, PXE, supporto virtuale tramite BMC / KVM, ecc.
  • Durante il processo di avvio premi l'opzione "Escape to loader prompt" sullo schermo del loader (sarebbe "6" nei vecchi sistemi FreeBSD, "3" in FreeBSD 9, "8" in Frenzy)
  • Scarica il kernel e i suoi moduli digitando unload
  • Scopri il dispositivo da cui vuoi avviare FreeBSD (di solito qualcosa di simile disk0s1a) digitandolsdev
  • Impostare questo dispositivo "corrente" digitando set currdev="disk0s1a"
  • Rileggi loder.confdal tuo dispositivo (per essere sicuro che tutte le ottimizzazioni e gli hack del kernel si applichino) digitandoread-conf boot/loader.conf
  • Avvia il sistema operativo e divertiti - basta digitare boot-conf

All'avvio del sistema operativo, è possibile ripristinare il codice di avvio. Io lo uso sysinstallper esso (Custom -> Partizione, W, <Yes>, BootMgr( "Installazione del boot manager di FreeBSD"), <OK>, Q, <Exit>, <Exit Install>), ma è deprecato dal 9,0-RELEASE e rimosso dalla base dal 10,0-RELEASE. Un altro modo è utilizzare il backup, archiviato /boot, per estrarre il codice di avvio da esso:

# gpart bootcode -b /boot/mbr /dev/yourbootdevice
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.