Linux kernel oops

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
SPARCアーキテクチャ用Linux2.4カーネルによるLinux kernel oops
PA-RISCアーキテクチャ用Linux2.6カーネルによるLinux kernel oops(死んだAAが表示されている)
FedoraディストリビューションにおけるLinux kernel oopsをバックトレースしている様子

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

概要[編集]

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

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

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

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

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

脚注[編集]

  1. ^ Linus Torvalds, G.W. Wettstein (2010年5月19日). “oops-tracing.txt”. git.kernel.org. 2011年1月27日閲覧。
  2. ^ Michael Renzmann (2008年1月10日). “Kernel Oops Howto”. madwifi-project.org. 2011年1月27日閲覧。
  3. ^ a b Kernel oops bugcount”. kerneloops.org. 2011年1月27日閲覧。
  4. ^ Arjan van de Ven. “kerneloops(8) - Linux man page”. linux.die.net. 2011年1月27日閲覧。
  5. ^ Package 'kerneloops'”. screenshots.debian.net. 2011年1月27日閲覧。 このようにWindowsの「エラー報告」ダイアログと同様に、oopsが発生した際、デスクトップ環境を使用しているならば、スクリーンショットのようなポップアップダイアログが表示される。

追加情報[編集]

関連項目[編集]

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

外部リンク[編集]