CRASH(8)

名称
crash - FreeBSD システム障害

解説
このセクションではシステムクラッシュについて少し説明し、 クラッシュダンプの解析方法についても (かなり簡潔ですが) 述べます。

システムが自らクラッシュする際には、

panic: なぜ死んだのか

という形式でコンソールにメッセージを表示し、 もしダンプが有効になっていれば ( dumpon(8) 参照) 大容量記憶装置にダンプをとり、 そして reboot(8) に述べられているように自動リブート手順を開始します。 ハードウェアあるいはソフトウェアの障害によって ファイルシステムの状態に予期せぬ矛盾点が見つかった場合を除き、 システムはマルチユーザモードでのオペレーションを再開します。

システムは数多くの内部一貫性チェックを行っています。 それらのチェックのうちひとつに引っかかると、 どのチェックに引っかかったかを示す簡潔なメッセージを表示して パニックします。 多くの場合、このメッセージはエラーを検知したルーチン名、 あるいは見つかった一貫性エラーを記述する 2 語のフレーズです。 ほとんどのパニックメッセージを完全に理解するには、 システムのソースコードを熟読する必要があります。

システム障害に共通するほとんどの原因はハードウェア障害であり、 それは様々なところに現れます。 ここでは発生する可能性の高いメッセージと、 原因に関する手掛かりを示します。 ハードウェアあるいはソフトウェアが予期せぬかたちで そのようなメッセージを出力する可能性については、全く述べていません。

cannot mount root このパニックメッセージは、ブートストラップ処理中に ルートファイルシステムをマウントできなかった場合に表示されます。 ルートファイルシステムが壊れているか、 システムが誤ったデバイスをルートファイルシステムとして使おうとしています。 通常、システムバイナリの別のコピーか 別のルートファイルシステムを用いてシステムを立ち上げ、調査します。 よく行われるのは、システムをインストールしたブートフロッピでブートし、 次に “fixit” フロッピを使用することです。

init: not found これはパニックメッセージではなく、リブートしても無駄でしょう。 ブートストラップ処理の最後の段階で、 システムが初期化プロセス init(8) の場所を探してそれを実行するのに失敗したのです。 ルートファイルシステムが不正あるいは壊れている、 /sbin/init が実行不能モードあるいはタイプになっている、 もしくは /sbin/init 自体がなくなっています。

ffs_realloccg: bad optim
ffs_valloc: dup alloc
ffs_alloccgblk: cyl groups corrupted
ffs_alloccg: map corrupted
blkfree: freeing free block
blkfree: freeing free frag
ifree: freeing free inode これらのパニックメッセージはファイルシステム内に矛盾点が見つかったときに 出力されるものです。 通常、この問題の原因は、 クラッシュ後の破損したファイルシステムの修復失敗、 ハードウェア障害、 あるいは通常発生しない他の条件にあります。 ファイルシステムのチェックを行えば、通常、問題は解決します。

timeout table full 実はこれはパニックではありませんが、 関係するデータ構造の拡張を行う前に、 エントリが不足するためにクラッシュしたのです。 この現象が発生したら、timeout table を大きくして下さい。

init died (signal #, exit #) システム初期化プロセスが、示されたとおりのシグナルおよび終了コードで 終了してしまいました。 これは良くない知らせです。もう誰もログインできません。 リブートするしか手はなく、従ってシステムはただちにリブートします。

以上が遭遇する可能性のあるパニックの種類一覧です。

クラッシュダンプを取るようにシステムが設定されている場合 ( dumpon(8) 参照)、 システムがクラッシュすると ダンプデバイス (通常は 1 つめのスワップ領域と同じ) の終わりに メモリイメージを書き込みます (少なくとも書き込もうとします)。 システムがリブートした後、プログラム savecore(8) が起動し、後の解析のために、 このコアイメージと現在のシステムのコピーを特定ディレクトリに保存します。 詳細は savecore(8) を参照して下さい。

ダンプを解析するには、システムのロードイメージとコアダンプに対して gdb(1) を -k オプション付きで起動します。 コアイメージがパニックによって生成されたものならば、 そのパニックメッセージが表示されます。 より詳しい情報は、 (http://www.FreeBSD.org/) の カーネルデバッギングの章を参照して下さい。

関連項目
gdb(1), dumpon(8), reboot(8), savecore(8)

歴史
crash マニュアルページは FreeBSD 2.2 で登場しました。