web-dev-qa-db-ja.com

dmesgにユーザースペースからのメッセージがあるのはなぜですか?

dmesg -uを使用して、ユーザースペースからログを表示できます。私の場合、systemdとlvmからのログがあります。なぜこれが起こっているのですか、なぜユーザースペースプログラムがカーネルバッファリングに出力できるのですか?

3
dspjm

ルートプロセスは/dev/kmsgに書き込むことができます。これは、通常のロギングシステムがロギングを実行する準備ができる前の非常に早い段階で発生するロギングに使用されます。

2
David Schwartz

一部のユーザースペースプロセスは、以前はカーネルスペースプロセスに属していたアクションを実行するため、dmesgに書き込むことができますが、ユーザーが簡単に制御できるようにユーザースペースに移動されました。

古典的な例はudevで、これは Wikipedia によると:

ファームウェアのロードを含む、デバイスの追加/削除時のすべてのユーザースペースアクションを処理します。

もう1つのよく知られた例は、 Fuse です。これは次のとおりです。

Filesystem in Userspace(Fuse)は、Unixライクなコンピューターオペレーティングシステム用のオペレーティングシステムメカニズムであり、非特権ユーザーがカーネルコードを編集せずに独自のファイルシステムを作成できるようにします。

LVM、initなどとともに、これらのツールはユーザースペースでカーネル操作を実行します。このため、そしておそらくそれらが置き換えた機器(devfs、hotplug、...)との継続性のために、それらの出力は明らかにカーネルリングバッファに属します。

0
MariusMatutiae