FreeBSDアップデート後に「mountroot」で起動不能を直した

2019年9月15日
プログラミング・開発

皆さん、こんにちは。

今時は、ウェブサイトやメール、その他のインターネットサービスは、簡易に利用できるようになり、専門的なことをやっているか、よっぽどの物好きくらいしか自前でサーバーを運用するということは無くなりました。

私はと言えば、1990年代に出会ったNetBSDというBSD系のOSを、68k Macと呼ばれるMotorolaの68000系CPU(68030や68040など)を搭載したAppleのコンピューターにインストールし、まだインターネットが常時接続でない時代に自宅でサーバーを稼働させていたころから、今に至るまで趣味でサーバーを動かしています。

サーバー系のOSと言えば、ほとんどがRedHat系のOS(CentOSなど)や、WindowsServerが主流ですが、私はBSD系のOSに慣れていることから未だにFreeBSDを使っています。

VPS(Virutal Private Server)で動かしているため、業者側で致命的な障害などが無い限り、ハードウェアの故障という心配は無くなったのですが、それでも定期的にアップデートをしていかなければ、その内アップデート自体ができなくなり、セキュリテイーホールやバグを放置してしまうことになります。

と言いつつ、いくつか動かしている内の一つはアップデートをしばらくさぼっていましたので、重い腰を上げてアップデートを実施したわけですが、順調に進んでいたと思ったいたのも束の間、再起動後に「>mountroot」というコマンドプロンプトが表示され、システムがマウントされなくなってしまいました。

今回は、FreeBSD8.3から、9.3へ。その後、10.4、11.3と慎重にアップデートしていったのですが、10.4から11.3へのアップデート後にマウント不能となりました。

ざっと調べたものの、まとまった情報が無かったので、備忘録の意味も込めて解決方法をまとめておきたいと思います。

結論としては、アップデートの過程でデバイス名が変更されたことが原因です。

「>mountroot」のプロンプトの後、「?」を入力すると、認識されているデバイス名が表示されます。

上記プロンプトの前に直前に認識されなかったデバイス名が表示されますが、認識されているデバイス名が変わっていることがわかります。

私の場合は、「/dev/ad0s1a」だったものが「/dev/ada0s1a」と変更されていました。

そこで、上記のプロンプトが表示された後に「ufs:/dev/ada0s1a rw」と入力します。

デバイスが認識され起動プロセスが進みますが、全てのデバイスがマウントされているわけではありませんので「cat /etc/fstab」でfstabの中身を確認します。

今回触っているサーバーは大分古い環境なので、パーティションの切り方が一昔前な感じですが、以下のように記述されています。

# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1e /tmp ufs rw 2 2
/dev/ad0s1f /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw 2 2
/dev/ad1s1d /home2 ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0

デバイス名とマウントポイントを合わせて、「mount /dev/ada01s1e /tmp」のように、全てのデバイスをマウントします。

その後、fstabを開き、デバイス名を修正・保存して、再起動すれば解決です。

あまり需要の無い情報ですが、私と同じようにしばらくサーバーアップデートを怠っていて、この問題にぶちあたった方には役に立つのではないかと思います。


ENTRY LIST

コーダー/プログラマーのための電子書籍ハウツー: そろそろブログやSNSじゃなくて、本にまとめてみたら?

続・成功するフリーランス – 年収1000万円は簡単に実現できる: フリーランスを15年やってみてわかったこと

木を食べる: 花粉症・ダイエット・健康食品・食糧革命への福音書

思春期の男の子を持つ、お母さんのための処方箋: 「いいからやりなさい!」って言ってませんか?

BitMEX