【问题标题】:How to switch linux kernel console after boot process?启动过程后如何切换linux内核控制台?
【发布时间】:2013-05-25 15:35:12
【问题描述】:

在我的嵌入式系统上,我通常使用 /dev/ttyS0 作​​为主控制台。这是通过传递内核参数console=/dev/ttyS0 来实现的,当init 参与其中时,getty 会在inittab 中指定的同一设备上触发,例如。 ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100.

是否有可能在不重新启动的情况下更改这些设置并将控制台切换到另一个终端,如ttyS1ttyUSBx 甚至一些伪 tty?

【问题讨论】:

  • 我问的主要原因是我需要使用 ttyS0 偶尔将二进制传输到另一台设备。其余时间它应该表现得像标准控制台。
  • 为了细化你的问题范围:在启动过程之后(输出到ttyS0),你想将控制台输出更改为另一个tty,而不使用运行时级别的更改,即不使用命令 init 到另一个级别?
  • 是的,可能使用的术语运行时令人困惑,我已经更新了问题。
  • 也许chvt 可以帮忙?
  • @Honza 向 grub 传递多个参数怎么样:console=/dev/ttyS0,/dev/ttyS1

标签: linux linux-kernel embedded embedded-linux tty


【解决方案1】:

似乎您实际上并不希望控制台日志消息出现在另一台设备上,而只是建议将它们重定向到那里以阻止它们干扰主串行设备上的二进制传输。

如果是这种情况,您也许可以通过动态调整控制台日志级别来解决您的问题。

http://tuxthink.blogspot.com/2012/07/printk-and-console-log-level.html

建议您可以通过写入 proc 节点来做到这一点:

echo "6" > /proc/sys/kernel/printk

在他们的示例中将其设置为 6。我怀疑将其设置为 0 或 1 会满足您的目的 - 如果出现问题,您的二进制传输可能无论如何都会失败。

无论此设置如何,dmesg 仍应可检索日志条目。

【讨论】:

    猜你喜欢
    • 2011-10-06
    • 1970-01-01
    • 2015-04-18
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多