LInux内核日志

时间:2012-10-02 21:11:14

标签: logging linux-kernel embedded-linux kernel

我正在运行嵌入式Linux(Angstrom发行版,适用于Atmel)。我想在关机期间阅读内核消息日志,与dmesg相同的东西。基本上我通过在内核代码中插入printk()来探索我遇到的一些问题,现在我想看看它们的输出。

我发现系统启动时不会自动启动日志(我怎么办?)而且我无法使用klogd命令获取任何内容。

3 个答案:

答案 0 :(得分:0)

如果klogd启动太晚或太早停止让您看到您的消息,也许您可​​以尝试Netconsole

当然,如果您可以访问嵌入式主板。这个模块很容易配置,我过去曾成功使用过几次。 请注意,如果您希望能够在启动过程中看到非常早/晚发出的消息,则必须在内核(使用以太网驱动程序)中编译它,而不是作为模块编译。

另外,检查默认日志级别是否允许显示printk()(loglevel =内核引导参数)

答案 1 :(得分:0)

可信赖的RS232串口控制台可能是您这样的情况下的朋友。

除非您已采取措施禁用它,否则内核日志消息几乎肯定会找到它们的方式。

答案 2 :(得分:0)

不同的发行版可能会将/ proc / kmsg的输出重定向到他们喜欢的任何物理日志文件或虚拟设备(/ dev / xxx)。但是" / proc / kmsg"是内核日志的原始最终源,因为内核实际上在fs / proc / kmsg.c中实现了它的环形缓冲区操作:

static const struct file_operations proc_kmsg_operations = {
        .read           = kmsg_read,
        .poll           = kmsg_poll,
        .open           = kmsg_open,
        .release        = kmsg_release,
        .llseek         = generic_file_llseek,
};

以下是更多信息:

How to read ring buffer within linux kernel space?

所以你如何看待输出:

sudo tail -f / proc / kmsg

您只能看到发出此命令后生成的所有消息 - 环形缓冲区中以前的所有消息都不会被打印出来。因此,要查看物理文件输出,您可以搜索" / proc / kmsg"的用户:

sudo lsof | grep proc.kmsg

我的机器说明了这一点:

rsyslogd  1743               syslog    3r      REG                0,3          0 4026532041 /proc/kmsg
in:imuxso 1743 1755          syslog    3r      REG                0,3          0 4026532041 /proc/kmsg
in:imklog 1743 1756          syslog    3r      REG                0,3          0 4026532041 /proc/kmsg
rs:main   1743 1757          syslog    3r      REG                0,3          0 4026532041 /proc/kmsg

所以现在它是pid 1743,让我们看看1743年开放的文件fd:

sudo ls -al /proc/1743/fd

lrwx------ 1 root   root   64 Dec 11 08:36 0 -> socket:[14472]
l-wx------ 1 root   root   64 Dec 11 08:36 1 -> /var/log/syslog
l-wx------ 1 root   root   64 Dec 11 08:36 2 -> /var/log/kern.log
lr-x------ 1 root   root   64 Dec 11 08:36 3 -> /proc/kmsg
l-wx------ 1 root   root   64 Dec 11 08:36 4 -> /var/log/auth.log

所以你去了,pid 1743是rsyslogd,它将/ proc / kmsg的输出重定向到/ var / log / syslog和/var/log/kern.log等文件。