EN JA
CRASH(8)
CRASH(8) FreeBSD System Manager's Manual CRASH(8)

名称

crashFreeBSD システム障害

解説

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

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

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) を参照して下さい。

ダンプを解析するには、システムのロードイメージとコアダンプで kgdb(1) を実行することによって始めるべきです。コアイメージがパニックによって生成されたものならば、そのパニックメッセージが表示されます。より詳しい情報は、 FreeBSD 開発者用ハンドブック ( http://www.freebsd.org/doc/en/books/developers-handbook/) のカーネルデバッギングの章を参照して下さい。

歴史

crash マニュアルページは、 FreeBSD 2.2 ではじめて登場しました。
July 23, 2011 FreeBSD