从用户空间向printk缓冲区发送消息 - 无法正常工作

时间:2013-11-27 11:14:57

标签: linux linux-device-driver

实际上我希望我的驱动程序消息到达我的终端以进行调试。所以我只是尝试通过以下链接进行检查。

我改进了以下链接: - http://elinux.org/Debugging_by_printing

我在side vmplayer虚拟机中使用ubuntu。 Ubuntu在虚拟机内部以终端模式运行。 我试图向内核printk缓冲区发送一些消息,但是echo命令失败。

klog恶魔也在运行我用以下命令确认。

ps aux | grep klogd 

proc printk条目上的cat命令:---

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

运行echo命令:---

#sudo echo "<1>Writing critical printk messages from userspace" >/dev/kmsg

但我无法在终端上收到消息。在命令运行时出现以下错误: -

-bash: /dev/kmsg: Permission denied

请建议如何在控制台上打印?

我的实际要求是...在我的驱动程序中直接发送printk()的消息到我的控制台。我只是在我的控制台测试,低优先级的消息到达控制台。

这篇文章是怎么回事..? linux kprint messages on console

请建议。

1 个答案:

答案 0 :(得分:3)

错误是因为shell试图写入/dev/kmsg(通过重定向),并且它没有与sudo一起运行。此外,默认情况下,echo通常是一个内置的shell,而不是可以在另一个进程中执行的二进制文件,尽管这里有点无关紧要。正确的方法是

echo "blah" | sudo tee /dev/kmsg

tee是一个将stdin复制到文件和stdout的命令。它被称为tee,因为它就像管道中的T形管道。