首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在虚拟控制台(tty1)中显示linux ()消息

如何在虚拟控制台(tty1)中显示linux ()消息
EN

Stack Overflow用户
提问于 2014-04-27 12:02:07
回答 1查看 3.7K关注 0票数 3

我正试图解决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,从用户空间调用此函数时,将执行以下代码:

代码语言:javascript
复制
   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");
   }

我所期望的是,显示的消息数量将取决于

代码语言:javascript
复制
root@raspberrypi:/mnt/raspberrypi/linux/linux/mod# *cat /proc/sys/kernel/printk*
7   **4**   1   7

但是我所观察到的只是第一条消息"TEST KERN_EMERG\n“,它是由syslogd打印在每个虚拟终端上的(pts/1.)

在内核命令行中,我将控制台指定为tty1

代码语言:javascript
复制
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中发现了第一个错误。它应该是

代码语言:javascript
复制
**console=tty1**

代码语言:javascript
复制
**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的原木不会被转移,也不会被存放在某个地方。有没有人能告诉我这样的内核日志显示方法是可能的?

EN

回答 1

Stack Overflow用户

发布于 2014-04-28 03:23:52

您可以使用dmesg -n x设置控制台“详细”级别,其中x是希望打印到控制台的“最小”消息优先级的名称。尝试使用dmesg -n debug来查看控制台上的所有内容,包括KERN_DEBUG消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23323145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档