【问题标题】:Linux console changed, print OK, read NOKLinux 控制台已更改,打印 OK,读取 NOK
【发布时间】:2017-03-15 16:39:35
【问题描述】:

我正在办公室开发一个小型嵌入式 linux 平台,我必须将默认控制台从 ttyS0 更改为另一个 ttySx。 ttyS0 已启用并且是默认控制台。 我启用了另一个 ttyS,成功探测了它,我给它的 ID=4,这意味着我现在可以正确地看到它作为 /dev/ttyS4。

所以我修改了命令行:

CMDLINE=...console=ttyS0,921600n8 console=tty0...

CMDLINE=...console=ttyS4,921600n8 console=tty0...

uart 连接到 FTDI 芯片。 使用 console=ttyS0 我可以在这个 shell 上成功读/写。 使用 console=ttyS4 我可以看到内核打印的内容,但我写的任何内容都会被 linux 忽略。

所以我检查了新 ttyS4 的 TX/RX。我在这个 com 端口上打开了一个 putty 会话。通过 ssh 登录以访问 linux 文件系统我做了一些测试:

echo 1234 > /dev/ttyS4        
echo 1234 > /dev/console

以上两个命令都成功在ttyS4对应的putty窗口上打印“1234”。

然后:

cat /dev/console             
cat /dev/ttyS4

以上两个 cat 命令都成功显示了我在腻子窗口上输入的内容和 ENTER。 这意味着 ttyS4 的电气连接和驱动程序运行良好。 但是,如果我尝试在这个 putty 窗口中访问文件系统,我就不能。输入 enter 只会打印一个新的空行,没有别的。 好像新的console=ttyS4没有把我写的数据转发到linux。

当我输入 cat /proc/cmdline 时,我可以看到新的 console=ttyS4,921600n8 console=tty0

任何帮助表示赞赏。

【问题讨论】:

  • 你有在这个控制台上运行的 getty 吗?
  • 不,这就是问题所在,我不知道我必须在新定义的控制台上手动启动 getty。我刚刚在 /etc/inittab 中添加了该条目,并且可以正常工作。感谢您的反馈。

标签: linux console kernel tty cmdline-args


【解决方案1】:

控制台只是输入和输出设备。如果您想将它们用于 shell 登录,请在它们上启动 getty

使用 SysVinit,您可以通过编辑 /etc/inittab 并在其中复制或取消注释一行来做到这一点:

4:2345:respawn:/sbin/getty 38400 tty4

使用systemd,你可以运行

systemctl enable console-getty.service getty@tty4.service

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 2019-12-07
    • 2011-12-01
    • 2016-04-10
    • 2018-01-16
    • 1970-01-01
    相关资源
    最近更新 更多