在我的嵌入式系统上,我使用 linux 内核 4.19.102 和 systemd 240。一切都是使用 buildroot 2019.02.9 生成的。
我使用设备的串行端口输出控制台。
bootargs = "console=ttyS0,115200";
使用我使用的先前版本,控制台方面的一切都很好(buildroot 2018.05,内核 4.16.y 和 systemd 237)。我有以下文件:/etc/systemd/system/getty.target.wants/[email protected]
正在启动/sbin/getty -L ttyS0 115200 vt100
现在,控制台打印通常的启动消息,然后打印日志消息两次:
Welcome to MyDevice
MyDevice login:
Welcome to MyDevice
MyDevice login:
当我尝试使用以“r”开头的长密码登录时,我得到如下信息:
Welcome to MyDevice
MyDevice login:
Welcome to MyDevice
MyDevice login: root
Password: r
Login incorrect
MyDevice login:
我希望可以使用 SSH 登录。我已经看到在这个版本中“getty”服务启动了两次:
# ps | grep getty
988 root /sbin/getty -L ttyS0 115200 vt100
1002 root /sbin/getty -L console 115200 vt100
1117 root grep getty
/etc 文件现在是:/etc/systemd/system/getty.target.wants/console-getty.service
正在启动/sbin/getty -L console 115200 vt100
但/sbin/getty -L ttyS0 115200 vt100
仍在启动。
当我杀死“控制台”服务(与以前的版本处于相同状态)时,我可以登录并且控制台终于好了。
如何配置 buildroot 或 systemd 以阻止控制台服务启动?
问题是 BR2_TARGET_GENERIC_GETTY_PORT 在 buildroot 2018.05 的“控制台”上设置。它需要在 buildroot 2019.02.9 中通过 'ttyS0' 进行更改。