【发布时间】:2014-04-27 12:02:07
【问题描述】:
我正在尝试解决 linux printk() 消息的问题(Linux raspberrypi 3.6.11+ #87 PREEMPT Fri Feb 7 00:17:11 CET 2014 armv6l GNU/Linux)。 我所拥有的是一个内核模块,它实现了 struct file_operations 中的 unlocked_ioctl 函数。当我使用指定的 cmd=CMD_PRINTK 从用户空间调用此函数时,将执行以下代码:
case CMD_PRINTK:
{
printk(KERN_EMERG "TEST KERN_EMERG\n");
printk(KERN_ALERT "TEST KERN_ALERT\n");
printk(KERN_CRIT "TEST KERN_CRIT\n");
printk(KERN_ERR "TEST KERN_ERR\n");
printk(KERN_WARNING "TEST KERN_WARNING\n");
printk(KERN_NOTICE "TEST KERN_NOTICE\n");
printk(KERN_INFO "TEST KERN_INFO\n");
printk(KERN_DEBUG "TEST KERN_DEBUG\n");
}
我所期望的是显示消息的数量将取决于
的第二个值root@raspberrypi:/mnt/raspberrypi/linux/linux/mod# *cat /proc/sys/kernel/printk*
7 **4** 1 7
但我观察到的只是 syslogd btw 在每个虚拟终端 (pts/1...) 上打印的第一条消息“TEST KERN_EMERG\n”
在内核命令行中,我将控制台指定为 tty1
root@raspberrypi:/mnt/raspberrypi/linux/linux/mod# *cat /proc/cmdline*
dma.dmachans=0x7f35 bcm2708_fb.fbwidth=1824 bcm2708_fb.fbheight=984 bcm2708.boardrev=0x3 bcm2708.serial=0xf8900c76 smsc95xx.macaddr=B8:27:EB:90:0C:76 dwc_otg.lpm_enable=0 **console=/dev/tty1** root=/dev/nfs nfsroot=192.168.1.102:/home/borys/rpi_rootfs ip=192.168.1.103:192.168.1.102:192.168.1.1:255.255.255.0:rpi:eth0:off rootfstype=nfs
我尝试使用 minicom 连接到 /dev/tty1,但我仍然看不到那里显示的任何消息。
我试图杀死 syslogd,但没有帮助。
目前我认为我对虚拟终端一无所知。我已经设置了 STLinux 平台和指定为串行端口 (/dev/ttyAS0) 的控制台,我能够从我的主机连接串行电缆,我看到了所有 printk()强>消息。
有人可以解释如何通过 minicom 连接在虚拟终端中显示内核 printk() 消息吗?
有可能吗?
那么是否可以控制 printk() 消息的详细程度?
更新日期:05.05.2014
我的同事在我的命令行中发现了第一个错误。应该是
**console=tty1**
不是
**console=/dev/tty1**
因为在命令行解析时文件系统不可用。进行此更改后,我可以在虚拟终端中看到调试并使用 dmesg -n x 正如下面 oakad 所建议的,我可以更改其详细程度。
这几乎是但不一定是我真正想要的。我仍然缺少的一件事是通过 minicom 与虚拟终端 tty1 的连接。
当前我只能在连接到我的树莓派的屏幕上或通过串行接口 ttyAMA0 看到内核日志。
另外,当我在 PC 上运行测试时,如果我通过 Alt+Ctrl+n 切换到虚拟控制台,我可以看到内核调试,其中 n 是虚拟控制台的数量.
我想要的是例如: ssh 会话到我启动 minicom 并将 tty1 指定为端口的树莓派。 在 PC 的情况下也是如此,我想启动 xterm (/dev/pts/n),在其中我启动 minicom 并将 tty1 指定为端口。
不幸的是,无论是 rasberry Pi 还是 PC,我都无法在这样的 minicom 会话中看到内核调试。在树莓派的情况下,我尝试从 minicom 发送文件,我看到它正在工作 - 文件内容显示在直接连接到 rasberry pi 的显示器中。不幸的是,从 rasberry 到 minicom 的日志未传输或卡在某处。有谁可以告诉我这种内核日志显示方法是否可行?
【问题讨论】:
标签: linux linux-kernel linux-device-driver embedded-linux