自作PCのHDDにFreeBSDを入れて、デスクトップ環境を構築してぼちぼちと使っていました。 特に問題なく動作していたのですが、ある日、起動したらこんなメッセージが表示されました。
error 32 lba 106366
error 32 lba 475711486
No /boot/loader
FreeBSD/x86 boot
Default: 0:ad(0,a)/boot/kernel/kernel
boot:
とりあえず、FreeBSDのインストールCDを入れて、シングルユーザモードで起動して、 HDDをマウントしてみて、/boot/loader
があるか、とか色々確認しましたが、 この時はどうして良いか分からず。 自分で色々ググってみたり、回りの知り合いの人達に聞いてみたりしたけれど、結局解決出来ず。 解決策が見つからず、しばらくほったらかしにしました。
解決のきっかけは、2017年8月5日に京都で開催された、 オープンソースカンファレンス(以下OSCと表記)でした。 日本NetBSDユーザーグループさんのブースを回ったときに、 エラーメッセージを見ていただき、ファイルシステムが壊れているから、 修復すれば直るというアドバイスをいただきました。 そして、帰ってから調べてファイルシステムを修復してあげ、 FreeBSDが復帰しました。
- CDやUSBなどのインストールメディアからFreeBSDを起動し、シングルユーザモードを選択 (マルチユーザモードのShellからでも同じように出来るとは思います...)
- 修復したいディスクを指定して
fsck_ffs(8)
を実行自分の環境では、HDDは/dev/ada0s1
なので、実行コマンドは次のようになります。(#
はプロンプト)
JOURNAL機能を利用するかなど、いくつか聞かれるかもしれませんが、 とりあえず状況に合わせてY/N(Yes/No)を選択してください。 (多分Yを選べば大丈夫だと思いますが...)# fsck_ffs /dev/ada0s1
- 修復が完了したら、シャットダウンし、修復したディスクから起動出来るか確認 問題なく起動出来たら、修復完了です。 間違って、インストールメディアを起動しないように注意。 (直っていない場合に、直ったと思い込んでぬか喜びするのを防ぐため。 意外とやらかすかもしれないので、一応...)
FreeBSDでデスクトップ環境を構築して、ある程度開発環境も構築していたので、 起動しなくなってかなり焦りましたが、なんとか解決出来て一安心。 ただ、どのタイミングでファイルシステムがおかしくなったのか... 最後に起動したときにOSが異常終了した覚えがない... (かなり間が空いて覚えてないだけかもしれませんが...)
今回はfsck_ffs(8)
を使ったのですが、ググった時は、fsck(8)
の記事が出てきたので、 最初はそちらで試したのですが、以下のエラーが出て、修復出来ず...
# fsck /dev/ada0s1
fsck: Could not determine filesystem type
自分がファイルシステムに関する知識に乏しいので、 fsck(8)
の使い方を間違えているのかもしれませんが... FreeBSDのユーザマニュアルにファイルシステムについて書いてあるページがあったはずなので、 これを機に、ファイルシステムについて勉強してみようかなと思います。
京都のOSCで相談に対応してくださった日本NetBSDユーザーグループさん、本当にありがとうございました。