Linux kernel oops

oops（ウップス）とはLinuxカーネルがエラーログを生成する、正常な動作からの逸脱状態のことである。その状態に陥った際に発せられるメッセージを指す場合もある。有名なカーネルパニックの発生は様々なoopsに起因するが、その他のoopsはシステムの連続稼働における信頼性を損なう可能性がある。この用語は英単語oopsの通常の用法と同様単なる錯誤を表すものであり、何かの略語ではない。

概要 
カーネルが異常を察知した際、oopsメッセージが表示され、異常を引き起こしたプロセスはkillされる。そのメッセージはLinuxカーネル技術者がoopsを生じさせたバグをデバッグするのに使用され、またその原因となるプログラミングのエラーを修正するのに利用される。

oopsメッセージに関するLinuxカーネル公式の文書はカーネルソースに同梱されているDocumentation/oops-tracing.txtファイルである。oopsメッセージを収集するロギングツールの設定を適切に行うことにより、システムのパフォーマンスに影響を与えず、かつ効率的なログ収集を可能にする。これに関する様々な設定手法が存在する。klogdデーモン（syslogの構成デーモンの一つ）はカーネルログリングバッファ(dmesgコマンドにより一部表示できる)からoopsの情報を抽出する機能に関与しているとしてしばしば引き合いに出されるが、いくつかのシステム、例えば近年のDebianやUbuntuディストリビューションではklogdデーモンはデーモンに取って代わられている。これ故klogdプロセスがなければ、ログファイルにoopsの情報の取りこぼしがあるとは必ずしもいえない。

一度システムでoopsが発生すると、もはやいくつかの内部リソースは消費され切ってしまうかもしれない。たとえシステムが正常に動作しているように見えても、動作中のタスクがkillされることにより意図しない悪影響が出る可能性がある。システムがひとたび喪失したリソースを利用しようと試みると、カーネルoopsがしばしばカーネルパニックを招く。

Kerneloopsというソフトウェアはoopsの収集の引き合いに出される。このソフトウェアをインストールすると、システムでoopsが発生する度にこれを収集し、開発元のウェブサイトに送信する。ちょうどMicrosoft Windowsオペレーティングシステムにおける、「エラー報告」機能と類似したものと考えればよい。このウェブサイトではインストールしたユーザーから自動的に送られてきたoopsの統計情報を提供している。

システムにおける/proc/sys/kernel/panic_on_oopsというファイルは、echoコマンドなどで1と書き込むと、oopsが発生した際、リングバッファにoopsメッセージを溜め込んだのちカーネルパニックする。

脚注

追加情報 
 
 

 Kernel Oops Howto (madwifi プロジェクト)  oopsメッセージを表示するのに役に立つファイルとツールの設定に有益な情報がある。その他多くのリンクがある。
 Linux Device Drivers, 3rd edition, Chapter 4.

関連項目 
 System.map - oopsを解釈するためのファイル。oopsメッセージにはoopsを引き起こした関数などのシンボル名とメモリアドレスが表示されているため、このファイルを利用すれば、oops発生を引き起こした原因を特定する事につながる。

外部リンク 
 Kernel oops bugcount

Linux
コンピュータのエラー
エラーメッセージ