カーネルモジュールの/proc

カーネルモジュールの/proc

現在、私はカーネルモジュールのプログラミングを学んでいます。https://www.tldp.org/LDP/lkmpg/2.6/lkmpg.pdf本書には「/proc ファイルシステム」というタイトルの章があります。のプロセスに関する情報を維持し、カーネルモジュールによって生成された「/proc/file_name」の重要性を理解する必要があります。

答え1

5.1章の冒頭では、/procファイルシステムについて説明します。

元のプロセスに関する情報(したがって名前)に簡単にアクセスできるように設計されていますが、今ではいくつかの興味深いレポートがカーネルのすべての部分で使用されています。 [...]

あなたはしません持つファイルシステムからファイルを作成します/proc。ただし、モジュールの状態に関する統計やその他の情報を報告する簡単な方法が必要な場合、または必要に応じて/procファイルシステムを使用することをお勧めします。ファイルシステムの開発方法のため、/proc少し混乱する可能性があります。たとえば、ネイティブカーネル、他のサードパーティモジュール、または将来の開発との競合の可能性を最小限に抑えるために、ファイル/procシステムのルートに複数のコンテンツの代わりにモジュールのサブディレクトリを作成できます。/proc/driver

この記事を書いた時点で、/sysファイルシステムは、カーネルモジュールが持つことができるすべての調整可能な設定のために、より体系的に配置された場所(したがって、統合ユーザースペースツールに慣れ親しんだ場所)として導入されました。残念ながら、取り扱うべき6章はTODO: Write a chapter about sysfsこのPDFのプレースホルダーです。

(歴史:/sysファイルシステムが存在する前に、/procファイルシステムは実行時に設定を調整する場所として使用され、通常は書き込み可能ファイルとして識別可能です。これらの一部はまだファイルシステムに完全に移行されていない可能性があります/sys。ない可能性があります。以前のバージョンとの互換性を維持するには、/sys代わりに調整可能な項目を置くことをお勧めします/proc

debugfs最新のカーネルにはインストールすることができますが/sys/kernel/debug、これはカーネルモジュールがいくつかのデバッグ情報を出力する方法が必要な場合に最適な場所かもしれません。debugfsこれはシステム管理者アクセス用に設計されているため、より詳細で機密なデバッグ情報を出力するのに最適な場所かもしれません。また、完全にオプションです。本番システムでは、debugfs詳細なトラブルシューティングが必要ない限り、簡単に削除できます。

簡単に言えば、モジュールが実行時に特定の設定を調整する方法を提供する必要がある場合は、/sysファイルシステムがこれを行うのに最適な場所です。最新のカーネルの情報をデバッグするには、を使用しますdebugfs。 root以外のユーザーが見ることができる統計と同様の内容を表示するには/proc

関連情報