如何重新启用串行控制台上的输入

如何重新启用串行控制台上的输入

我有一个运行 Linux 的旧路由器,我想打开一个串行控制台。这曾经工作正常,但在固件更新后,我现在只能在控制台上获得输出,而无法将任何输入返回给设备。在启动过程中,有一行显示“控制台输入已禁用”,而以前是不存在的。

在不更改固件的情况下,如何重新启用串行控制台上的输入?

...到目前为止我的尝试...

我可以通过 LAN 登录并加载任何文件(如果需要,还可以使用交叉编译工具),并且有一个小的非易失性用户闪存分区,因此任何需要我使用 ioctl 或其他方式编写快速程序的解决方案都可以。嵌入式Linux有/sys/bus诸如此类的系统文件,/sys/devices/platform/serial8250.0以防万一有用。文件/dev/console/dev/ttyS0/dev/tty均具有读写权限。运行getty -L 115200 ttyS0会使串行控制台上出现登录提示,但我无法让它接受任何输入。添加行

::respawn:-/bin/sh

使inittabbusybox 给出 shell 提示...但同样,串行控制台不会接受输入。

dmesg报告

Kernel command line: root=/dev/ram rw init=/init console=ttyS0,115200

stty给出

speed 38400 baud; line=0;  

以及一堆看起来不重要的设置, stty -a -F /dev/ttyS0给出

speed 115200 baud; stty: /dev/ttyS0  
line = 0;  

(还有一大堆看起来不重要的设置,但如果人们需要它们,我会输入它们。)

我在这里不知所措,所以我不确定需要什么信息。
有解决这个难题的想法吗?我有一种感觉,有一些简单的事情我忘了尝试。

答案1

busybox 示例inittab看起来有点不一样,

# Example of how to put a getty on a serial line (for a terminal)
#
#::respawn:/sbin/getty -L ttyS0 9600 vt100
#::respawn:/sbin/getty -L ttyS1 9600 vt100

你能尝试一下吗?

答案2

我看到这是一篇非常旧的帖子,但我记得在更新三星电视后也看到过一些类似的问题。可能您拥有的路由器型号属于某些不允许外部修改(如 OpenWRT 等)的公司。例如,禁用终端 shell 访问的常见方法是在内核源中禁用它/linux-2.6.35.11/drivers/char/n_tty.c或使用以下命令编译内核:CONFIG_SERIAL_INPUT_DISABLE_STRING...

相关内容