2012年8月12日日曜日

FreeBSD で Kernel panic 時に再起動させる

Kernel panic 後に再起動しない

FreeBSD9.0 でディスクアクセスのエラーで Kernel Panic すると


Automatic reboot in 15 seconds - press a key on the console to abort (15秒後に再起動します -  中断する場合はコンソールでキー入力してください)

という表示が出る。しかしそのまま15秒待っていても自動で再起動しない問題が発生 (mdconfig コマンドで作成した RAMDISK に書き込んだ時にも Kernel Panic が発生して、同様の現象になったことがあった)。

これでは、サーバが遠隔地に置いてあると、電源を入れなおしに行かなくてはいけない。

対策

とりあえずの解決策は以下の通り。ただ、対症療法なので、本当にこれでいいのかは不明だし Kernel  の再構築が必要で大変。もっと適切な方法を知っている方がいたら教えてください。

Kernel panic 時に即座に再起動させるには(FreeBSD9.0)
  1. オプションに "options DDB"を付けて Kernel を再構築する
  2. /etc/rc.local を作成して /sbin/ddb script kdb.enter.panic=reset と書く
  3. # chmod a+x /etc/rc.local

補足

カーネルパニック時に再起動させる方法について検索したところ、Linux の情報は見つかったが、FreeBSD については見つけられなかったのでこの記事を書いた。掲示板には FreeBSD では
# ddb script kdb.enter.panic=reset
を実行しておけばよいという書き込みがあったが、これを GENERIC のカーネルで実行すると
ddb: sysctl: debug.ddb.scripting.scripts: No such file or directory
というエラーが出てうまくいかなかったので、オプションに "options DDB" を付けてカーネルの再構築をした次第。

デバッガについては知識がなくて、どうしてこの方法でうまくいくのかは分からない。またそもそもなぜ最初の状態で、15秒後に自動で再起動できないのかも分からない。

0 件のコメント:

コメントを投稿