我正在尝试为Linux内核调试模块。我听说可以将控制台输出发送到串口。我正在vmware上运行Ubuntu,并希望将printk消息发送给主机。 我设法建立了一个串行连接,可以通过输入echo>向主机发送回声。 simething / dev / ttyS1 但我无法弄清楚如何将控制台上的输出发送到ttyS1。
我的主要问题是,当模块/内核崩溃时,最后的printk消息丢失甚至不显示,它只是缓冲。
答案 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