Comment démarrer le système FreeBSD avec un bootcode cassé?

8

J'ai un disque dur (ou SSD, ou un lecteur flash) avec FreeBSD installé dessus, et en quelque sorte j'ai cassé le bootcode (446 premiers octets de MBR). Comment pourrais-je démarrer dans ce FreeBSD?

AntonioK
la source

Réponses:

13

En supposant qu'il existe un MBR de 512 octets de type DOS, et que vous en ayez remplacé les 446 premiers octets par de la merde ( zéros ou simplement /dev/urandomsortie), ou endommagé le code de démarrage d'une autre manière. Dans ce cas, la table de partition MBR est à sa place, mais le système ne peut pas démarrer à partir de ce périphérique.

L'idée est d'utiliser le chargeur d'un autre système de type BSD pour démarrer avec votre appareil et votre noyau.

  • Vous devriez commencer à démarrer sur n'importe quel système d'exploitation de type BSD (j'ai essayé avec FreeBSD 6.0, 7.0, 8.0, 8.1, 8.2, 8.3, 8.4, 9.2 et Frenzy 1.4) à partir d'un autre disque dur, CD, lecteur flash, PXE, média virtuel via BMC / KVM, etc.
  • Pendant le processus de démarrage, appuyez sur l'option "Échapper à l'invite du chargeur" ​​sur l'écran du chargeur (ce serait "6" dans les anciens systèmes FreeBSD, "3" dans FreeBSD 9, "8" dans Frenzy)
  • Déchargez le noyau et ses modules en tapant unload
  • Découvrez le périphérique à partir duquel vous souhaitez démarrer votre FreeBSD (généralement quelque chose comme disk0s1a) en tapantlsdev
  • Définissez cet appareil "actuel" en tapant set currdev="disk0s1a"
  • Relisez à loder.confpartir de votre appareil (pour être sûr que tous les réglages et hacks du noyau s'appliqueraient) en tapantread-conf boot/loader.conf
  • Démarrez OS et profitez - tapez simplement boot-conf

Lorsque votre système d'exploitation démarre, vous pouvez réparer le bootcode. Je l' utilise sysinstallpour elle (Personnalisé -> Partition, W, <Yes>, BootMgr( "Installer FreeBSD Boot Manager"), <OK>, Q, <Exit>, <Exit Install>), mais il est dépréciée depuis 9,0-RELEASE et retiré de la base depuis 10.0-RELEASE. Une autre façon est d'utiliser la sauvegarde, stockée dans /boot, pour en extraire le bootcode:

# gpart bootcode -b /boot/mbr /dev/yourbootdevice
AntonioK
la source