在 Linux 系统上停止串行控制台接受输入的机制?

逆向工程 linux 串行通讯
2021-06-27 04:09:00

我正在开发一个基于 Olinuxino 板的简单嵌入式系统。它具有板载串行控制台接头。TX 和 RX 都连接到微控制器上的相应引脚(即这不是硬件问题)。

连接后,我可以看到启动的 Linux 系统的正常输出,但在任何时候我都没有登录。似乎没有其他输入

可以使用什么机制来阻止串行控制台在 Linux 系统上接受输入?

具体情况

设备正在使用 busybox,而 inittab 看起来像这样:

# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.
id:5:initdefault:

# Boot-time system configuration/initialization script.
# This is run first except when booting in emergency (-b) mode.
si::sysinit:/etc/init.d/rcS

# What to do in single-user mode.
~~:S:wait:/sbin/sulogin

# /etc/init.d executes the S and K scripts upon change
# of runlevel.
#
# Runlevel 0 is halt.
# Runlevel 1 is single-user.
# Runlevels 2-5 are multi-user.
# Runlevel 6 is reboot.

l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
# Normally not reached, but fallthrough in case of emergency.
z6:6:respawn:/sbin/sulogin
S:2345:respawn:/sbin/getty 115200 ttyAMA0
# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
#  <id>:<runlevels>:<action>:<process>
#

1:2345:respawn:/sbin/getty 38400 tty1

/sbin/getty 链接到 /sbin/getty.tinylogin 链接到 /bin/tinylogin

传递给内核的选项是:

[    0.000000] Kernel command line: console=ttyAMA0,115200 root=/dev/mmcblk0p2 rw rootwait ssp1=mmc lcd_panel=lms430 no_console_suspend

不确定速度的差异是否会导致这不起作用。

1个回答

您不会阻止串行控制台接受输入;您可以通过将适当的getty条目放入/etc/inittab. 如果缺少该条目,则没有人会在串行控制台上启动登录过程。

(这适用于使用经典init来启动和重生后台进程的经典系统。桌面系统已经转向了一种upstart不再使用的新方法/etc/inittab。但是在一个简单的嵌入式系统上,我更希望 inittab 仍在使用中。 )

所以回答你的问题:你的制造商没有做任何事情来阻止你的 Linux 在串行控制台上运行登录(你可以逆转)。相反,他们可能根本没有做任何事情来让它运行登录。可能他们甚至没有提供getty启动登录二进制文件。