我正试图解决linux printk()消息的问题(Linux 3.6.11+ #87抢占Fri 7 00:17:11 CET 2014 armv6l GNU/Linux)。
我所拥有的是一个内核模块,它从struct file_operations实现了file_operations函数。当我使用指定的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但是我所观察到的只是第一条消息"TEST KERN_EMERG\n“,它是由syslogd打印在每个虚拟终端上的(pts/1.)
在内核命令行中,我将控制台指定为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 1,但仍然无法观察到在那里显示的任何消息。
我试图杀死syslogd,但这并没有帮助。
目前,我认为我对虚拟终端不太了解。我用指定为串口(/dev/ttyAS0)的STLinux平台和控制台进行了安装,并且能够从我的主机上连接到串行电缆,并且我看到了所有printk()消息。
有人能解释如何通过minicom连接在虚拟终端中显示内核printk()消息吗?
有可能吗?
那么,是否可以控制printk()消息的详细程度?
更新: 05.05.2014
我同事在我的cmdline中发现了第一个错误。它应该是
**console=tty1**不
**console=/dev/tty1**因为在cmdline解析时文件系统不可用。在进行此更改之后,我可以看到虚拟终端中的调试,并按照下面oakad的建议,使用dmesg -n x,可以更改其详细内容。
这几乎是但不一定是我真正想要的。我仍然缺少的一件事是通过minicom连接到虚拟终端tty1。
当前,我只能在屏幕上看到内核日志,它连接到我的raspberry pi或通过串行接口ttyAMA0。
此外,当我在PC上运行测试时,如果通过Alt+Ctrl+n切换到虚拟控制台,可以看到内核调试,其中n是虚拟控制台的数量。
例如,我想要的是:ssh会话到raspbery,在其中启动minicom并将tty1指定为端口。同样,对于PC,我希望启动xterm (/dev/pts/n),在其中启动minicom,并指定tty1作为端口。
不幸的是,对于rasberry Pi和PC,我无法在这样的迷你会话中看到内核调试。在raspberry pi的情况下,我试图从minicom发送文件,我看到它正在工作-文件内容显示在显示中,直接连接到rasberry Pi。从蓝莓到minicom的原木不会被转移,也不会被存放在某个地方。有没有人能告诉我这样的内核日志显示方法是可能的?
发布于 2014-04-28 03:23:52
您可以使用dmesg -n x设置控制台“详细”级别,其中x是希望打印到控制台的“最小”消息优先级的名称。尝试使用dmesg -n debug来查看控制台上的所有内容,包括KERN_DEBUG消息。
https://stackoverflow.com/questions/23323145
复制相似问题