カーネル リング バッファーは rsyslog に対してどこに配置されますか?

カーネル リング バッファーは rsyslog に対してどこに配置されますか?

カーネル リング バッファの上にある単なる抽象化レイヤーですかrsyslog? それとも、カーネル リング バッファは独自のエンティティであり、rsyslogその相互作用は他の「アプリケーション」と同様ですか?

答え1

さまざまなドキュメント (を含むman dmesg) ではこれを「カーネル リング バッファ」と呼んでいますが、「リング バッファ」は一般的な用語であり、カーネルはさまざまなまったく関係のない用途にもリング バッファを使用していると考えられるため、カーネル ログ バッファと呼ぶ方が適切かもしれません。書き込みに使用されるカーネル空間関数にちなんで、「printk バッファ」と呼ぶことも適切です。

いずれにせよ、これはカーネル空間に存在し、 を介して読み取りインターフェースが提供され/proc/kmsg、 を介して読み取り/書き込みインターフェースが提供されます/dev/kmsg。したがって、root として次のように実行します。

echo "Hello Kernel!" > /dev/ksmg

そうすれば、それがわかるでしょうcat /dev/ksmg(ただし、おそらくログには表示されないでしょう。考えられる理由については、以下のMatthew Phippsのコメントを参照してください)。これは生の出力であり、dmesgログファイルからまたはログファイルで表示されるものとまったく同じではありません。ちょっとしたドキュメントこれについてはカーネルソースで提供されています。 (r)syslog が実行中の場合は、 /proc/kmsg(と同じではありません/dev/ksmg) から読み取ることは推奨されません。

Rsyslogは、シスログ/proc/ksmgLinux で一般的に使用される実装。これらは、ソケットを介してカーネル メッセージや他のユーザーランド プロセスからのメッセージを取得するユーザーランド アプリケーションです/dev/log

関連情報