web-dev-qa-db-ja.com

カーネルでの印刷の出力はどこに行きますか?

Linux用のドライバー(具体的にはubuntuサーバー9.04)をデバッグしていますが、コードにいくつかのprintfステートメントがあります。

これらのステートメントの出力はどこで確認できますか?

EDIT1:私がやろうとしていることは、procファイルシステムを使用してカーネルに書き込むことです。印刷コードは

static int proc_fractel_config_write(struct file *file, const char *argbuf, unsigned long count, void *data)
{
    printk(KERN_DEBUG "writing fractel config\n");
    ...

Kern.logで、/ proc/net/madwifi/ath1/fractel_configファイルを上書きしようとすると、次のメッセージが表示されます(もちろん、さまざまな時間で)。

[ 8671.924873] proc write 
[ 8671.924919] 

説明はありますか?

21
apoorv020

ディストリビューションによって異なりますが、多くはklogd(8)を使用してカーネルからメッセージを取得し、ファイル(場合によっては_/var/log/dmesg_または_/var/log/kernel_)またはシステムログに記録します。 syslog(3)経由。後者の場合、ログエントリが最終的にどこにあるかは、syslogd(8)の構成に依存します。

dmesgコマンドに関する注意:カーネルメッセージは循環バッファーに格納されるため、大量の出力が上書きされます。

13
Blrfl

多くの場合、KERN_DEBUGレベルのメッセージはフィルタリングされるため、ログレベルを明示的に上げる必要があります。 /proc/sys/kernel/printkを調べると、システムのデフォルトが何であるかを確認できます。たとえば、私のシステムでは:

# cat /proc/sys/kernel/printk
4       4       1       7

最初の数字は、コンソールのログレベルがKERN_WARNINGであることを示しています(詳細については proc(5) のマニュアルページを参照してください)。これは、KERN_NOTICEKERN_INFO、およびKERN_DEBUGメッセージがコンソールからフィルタリングされることを意味します。ログレベルまたは詳細度を上げるには、dmesgを使用します

$ Sudo dmesg -n 7
$ cat /proc/sys/kernel/printk
7       4       1       7

ここでは、レベルを7(KERN_DEBUG)に設定すると、すべてのレベルのメッセージがコンソールに表示されます。これを自動化するには、loglevel=[〜#〜] n [〜#〜]をカーネルブートパラメーターに追加します。Nはログレベルです。コンソールに移動するか、ignore_loglevelを使用してすべてのカーネルメッセージをコンソールに出力します。

26
ctuffli

コマンドdmesgで出力を取得します

6
chris

dmesgは、カーネルからすべてのメッセージを出力します。希望するメッセージを見つけるのは難しいでしょう。 dmesggrepの組み合わせを使用し、すべてのprintkメッセージでドライバー固有のラベルを使用することをお勧めします。これにより、すべての不要なメッセージを簡単に削除できます。

printk("test: hello world")

dmesg | grep test
4
Abhisheietk

Ubuntu 11.10および10.04 LTSでこの問題が発生しました。前者では/etc/rsyslog.d/50-default.confを編集してから、「Sudo service rsyslog restart」を使用してrsyslogを再起動し、rsyslogdを再起動しました。その後、うまくいきました。

Ubuntuはsyslogdではなく* r * syslogdを使用することに注意してください。

1
Vectorio

たとえば、KERN_INFOなど、KERN_DEBUGよりも高いレベルを試すことができます。構成によっては、優先度の最も低いメッセージが表示されない場合があります。

0
Eric Seppanen

Centos(centos 6.6以降)では、出力は/ var/log/messagesにあります

0
Thiyagarajan