web-dev-qa-db-ja.com

壊れたブートコードでFreeBSDシステムをブートする方法は?

FreeBSDがインストールされたHDD(またはSSD、またはフラッシュドライブ)を持っていますが、どういうわけかブートコード(最初の446バイトのMBR)を破りました。どうすればこのFreeBSDを起動できますか?

8
AntonioK

512バイトのDOSライクなMBRがあり、その最初の446バイトをいくつかのがらくた( zeros または単に/dev/urandom出力)に置き換えたか、またはブートコードを他の方法で破損したと仮定します。この場合、MBRパーティションテーブルはその場所にありますが、システムはこのデバイスから起動できません。

アイデアは、他のBSDのようなシステムのローダーを使用して、デバイスとカーネルで起動することです。

  • BMCを介して、別のHDD、CD、フラッシュドライブ、PXE、仮想メディアから、BSDのようなOS(FreeBSD 6.0、7.0、8.0、8.1、8.2、8.3、8.4、9.2、およびFrenzy 1.4で試した)から起動を開始する必要があります。/KVMなど.
  • ブートプロセス中に、ローダー画面の[Escape to Loader Prompt]オプションを押します(古いFreeBSDシステムでは "6"、FreeBSD 9では "3"、Frenzyでは "8")。
  • unloadと入力して、カーネルとそのモジュールをアンロードします
  • FreeBSDをブートするデバイス(通常はdisk0s1aのようなもの)を検索するには、lsdevと入力します。
  • set currdev="disk0s1a"と入力して、このデバイスを「現在」に設定します
  • loder.confと入力して、デバイスからread-conf boot/loader.confを再度読み取ります(カーネルのすべてのチューニングとハッキングが適用されることを確認するため)。
  • OSを起動してお楽しみください-boot-confと入力するだけ

OSが起動したら、ブートコードを修復できます。私はsysinstallを使用しています(カスタム->パーティション、 W<Yes>BootMgr( "FreeBSDブートマネージャのインストール")、<OK>、 Q<Exit><Exit Install>)ですが、9.0-RELEASE以降は非推奨で、10.0-RELEASE以降はベースから削除されています。もう1つの方法は、/bootに保存されているバックアップを使用して、そこからブートコードを抽出することです。

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