FreeBSD10.3→10.4 アップデートで Panic

最近、管理している FreeBSD 10.3 が相対的に古くなってしまったため、メンテナンス性に影響が発生し始めてきました。パッケージをアップデートして、共有ライブラリが見えなくてエラーになったり、コアダンプしたり。
その更新作業で、HDDを交換する羽目になったり。休日平日関係なくトラブルが発生しまくっています。ffmpeg が動かなくなってしまったサーバー上で ffmpeg を復活させるために、旧サーバーたちを使用して動作可能条件を見つけようとしているところです。

ffmpeg が動かなくなった環境は、既にサポート切れの FreeBSD10.3の環境。では、10.4 なら動くの?
本番サーバーでテストするのはまずいので、旧サーバー(Socket370 の Celeron 1.2GHz マシン)を使用して動作確認を行うことにしました。

作業の流れは、過去のメモに何度も書いているので省略。
最終的に freebsd-update install コマンドを使ってリブートの準備が出来ました。

そしてリブートしたところ・・・・・FreeBSD 10.4 が上がってこない!
幸いこのサーバーは私がいる部屋にあるので、直接コンソールを見てみると、ファイルシステムをマウントする前に、Panicを起こしてリブートになって、再度Panicを発生。Panicとリブートを繰り返しています。

Panic手前で、vbox 関係のモジュールをロードしようとして、その後に Panicになっている模様。なぜvbox?
Virtualboxなんて入れてたっけ?って思い出してみると、Boinc のために、一部のサーバーに入れていました。
Panicの位置から考えると、/boot/loader.conf が怪しい。

起動時の選択メニューから 5 を選択して、kernel.old (つまり10.3)から起動し直すと成功。
/boot に移動して、loader.conf を cat してみると

vboxdrv_load="YES"
vboxnet_enable="YES"

となっており、こいつらが悪さしていたようです。この2行をコメント。

ついでに /etc/rc.conf の中もチェックしてみると、ここにもあったので、

#vboxnet_enable="YES"
#vboxheadless_enable="YES"

としておきました。このあと FreeBSD 10.4 で再起動してみると無事にログインプロンプトにたどり着きました。インストール済みパッケージに特殊事情があっただけでOSに問題がある訳ではありませんでした。

このあと、freebsd-update install コマンドを再発行して、アップデートは終了。

リモートから freebsd-update を掛ける場合、/boot/loader.conf もオリジナルに戻しておかないと大変なことになるという教訓です。

余談ですが、万が一、遠隔地にある FreeBSD サーバーを freebsd-update で更新して、上記のように Panic/reboot を繰り返すようになってしまったら、

  1. 現地の管理者に連絡し、
  2. ブートメニューで 5 を選択し、旧カーネルから起動。
  3. root でログインしてもらい、”freebsd-update rollback” を発行してもらう

ことで、一旦アップデートがなかった状態(近く)に戻せます。
その後で、/boot/kernel と /boot/kernel.old の中身を確認し、元のOSが起動するように入れ替えます。(freebsd-update rollback オプションはそこまではやってくれないもよう)これくらいなら、FreeBSDの専門家じゃなくても出来るでしょう。

さて、目的の ffmpeg 4系 が FreeBSD 10.4 で動くのか?ですが、10.4 でもやっぱり core dump してしまい、動きませんでした。
ソースからビルドしても駄目。
しかし、ソースビルで、「未定義命令」実行となるのはどういう事よ?

コメントを残す