将printk发送到串口

时间:2016-04-15 13:56:40

标签: linux tty printk

我正在尝试为Linux内核调试模块。我听说可以将控制台输出发送到串口。我正在vmware上运行Ubuntu,并希望将printk消息发送给主机。 我设法建立了一个串行连接,可以通过输入echo>向主机发送回声。 simething / dev / ttyS1 但我无法弄清楚如何将控制台上的输出发送到ttyS1。

我的主要问题是,当模块/内核崩溃时,最后的printk消息丢失甚至不显示,它只是缓冲。

2 个答案:

答案 0 :(得分:2)

尝试使用命令行'console = ttyS1,< baud>'启动内核,其中< baud>是您在VM设置中为该端口配置的波特率。然后内核将使用/ dev / ttyS1作为主控制台,这就是printk将其所有输出发送到的地方。

答案 1 :(得分:2)

访客Linux内核

sudo vim /etc/default/grub  
GRUB_CMDLINE_LINUX="console=ttyS1,115200n8 console=tty0 ignore_loglevel"
sudo update-grub  

注意: - 内核参数“ignore_loglevel”会将所有内核消息打印到控制台。用于调试。

现在在控制台ttyS1上启用getty
对于Upstart系统
1)创建一个名为/etc/init/ttyS1.conf的文件,其中包含以下内容:

# ttyS0 - getty
#
# This service maintains a getty on ttyS1 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[12345]
stop on runlevel [!12345]

respawn
exec /sbin/getty -L 115200 ttyS1 vt102  

2)请新秀启动getty

sudo start ttyS1  

对于系统系统

$ sudo systemctl enable serial-getty@ttyS1.service
$ sudo systemctl start serial-getty@ttyS1.service
$ sudo systemctl daemon-reload