我正在办公室开发一个小型嵌入式Linux平台,我必须将默认控制台从ttyS0更改为另一个ttySx。 ttyS0 已启用,是默认控制台。 我启用了其他 ttyS,成功探测了它,我给了它 ID=4,这意味着现在我可以正确地将其视为/dev/ttyS4。
所以我修改了cmdline:
CMDLINE=...console=ttyS0,921600n8 console=tty0...
自
CMDLINE=...console=ttyS4,921600n8 console=tty0...
uart连接到FTDI芯片。 使用 console=ttyS0,我可以在这个 shell 上成功读/写。 使用 console=ttyS4,我可以看到内核打印的内容,但无论我写什么,linux 都会忽略我。
所以我检查了新ttyS4的TX/RX。我已经在这个 com 端口上打开了一个腻子会话。通过 ssh 登录以访问 linux 文件系统,我做了一些测试:
echo 1234 > /dev/ttyS4
echo 1234 > /dev/console
上述两个命令都成功地在与 ttyS4 对应的腻子窗口上打印了"1234"。
然后:
cat /dev/console
cat /dev/ttyS4
上面的两个 cat 命令都成功地显示了我在腻子窗口上键入的内容和 ENTER。 这意味着 ttyS4 的电气连接和驱动器运行良好。 但是,如果我尝试在此腻子窗口中访问文件系统,则无法访问。键入 Enter 只会打印一个新的空行,没有别的。 就像新的console=ttyS4不会将我写入的数据转发到linux一样。
当我输入 cat/proc/cmdline 时,我可以看到新的console=ttyS4,921600n8 console=tty0
任何帮助表示赞赏。
控制台只是输入和输出设备。如果要将它们用于 shell 登录,请对它们启动getty
。
使用 SysVinit,您可以通过编辑/etc/inittab
并复制或取消注释一行来做到这一点:
4:2345:respawn:/sbin/getty 38400 tty4
使用 systemd,您可以运行
systemctl enable console-getty.service getty@tty4.service