Linux kernel oops

oops(ウップス)とはLinuxカーネルがエラーログを生成する、正常な動作からの逸脱状態のことである。その状態に陥っ�…

Linux kernel oops
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が発生した際、デスクトップ環境を使用しているならば、スクリーンショットのようなポップアップダイアログが表示される。

追加情報

  • John Bradford (2003年3月8日). “Re: what's an OOPS”. LKML (Mailing list). 2006年5月22日閲覧.
  • Szakacsits Szabolcs (2003年3月8日). “Re: what's an OOPS”. LKML (Mailing list). 2006年5月22日閲覧.
  • Al Viro (2008年1月14日). “OOPS report analysis”. LKML (Mailing list). 2008年1月14日閲覧.
  • Kernel Oops Howto (madwifi プロジェクト) oopsメッセージを表示するのに役に立つファイルとツールの設定に有益な情報がある。その他多くのリンクがある。
  • Linux Device Drivers, 3rd edition, Chapter 4.

関連項目

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

外部リンク

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.