Wie starte ich das FreeBSD-System mit defektem Bootcode?

8

Ich habe eine Festplatte (oder SSD oder ein Flash-Laufwerk) mit FreeBSD installiert und irgendwie habe ich den Bootcode gebrochen (die ersten 446 Bytes MBR). Wie könnte ich in diese FreeBSD booten?

AntonioK
quelle

Antworten:

13

Angenommen, es gibt einen 512-Byte-DOS-ähnlichen MBR, und Sie haben die ersten 446 Bytes durch einen Mist ( Nullen oder nur /dev/urandomAusgabe) ersetzt oder den Bootcode auf andere Weise beschädigt. In diesem Fall befindet sich die MBR-Partitionstabelle an ihrem Platz, aber das System kann nicht von diesem Gerät booten.

Die Idee ist, den Loader eines anderen BSD-ähnlichen Systems zu verwenden, um mit Ihrem Gerät und Ihrem Kernel zu booten.

  • Sie sollten mit dem Booten von jedem BSD-ähnlichen Betriebssystem (ich habe es mit FreeBSD 6.0, 7.0, 8.0, 8.1, 8.2, 8.3, 8.4, 9.2 und Frenzy 1.4 versucht) von einer anderen Festplatte, CD, einem Flash-Laufwerk, PXE oder virtuellen Medien über BMC starten / KVM usw.
  • Klicken Sie während des Startvorgangs auf dem Ladebildschirm auf die Option "Escape to Loader-Eingabeaufforderung" (in älteren FreeBSD-Systemen wäre dies "6", in FreeBSD 9 "3", in Frenzy "8").
  • Entladen Sie den Kernel und seine Module durch Eingabe unload
  • Finden Sie disk0s1adurch Eingabe das Gerät heraus, von dem Sie Ihre FreeBSD starten möchten (normalerweise so etwas wie )lsdev
  • Stellen Sie dieses Gerät durch Eingabe auf "aktuell" set currdev="disk0s1a"
  • Lesen Sie erneut loder.confvon Ihrem Gerät (um sicherzustellen, dass alle Ihre Kernel-Einstellungen und -Hacks zutreffen), indem Sie Folgendes eingebenread-conf boot/loader.conf
  • Starten Sie das Betriebssystem und genießen Sie - geben Sie einfach ein boot-conf

Wenn Ihr Betriebssystem startet, können Sie den Bootcode reparieren. Ich benutze sysinstalles (Custom -> Partition, W, <Yes>, BootMgr( "Installieren Sie den FreeBSD - Boot - Manager"), <OK>, Q, <Exit>, <Exit Install>), aber es ist veraltet seit 9.0-RELEASE und entfernt von der Basis seit 10,0-RELEASE. Eine andere Möglichkeit besteht darin, das darin gespeicherte Backup zu verwenden /boot, um den Bootcode daraus zu extrahieren:

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