在我的嵌入式系统上,我使用 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 以阻止控制台服务启动?
答案1
问题是 BR2_TARGET_GENERIC_GETTY_PORT 是在 buildroot 2018.05 的“控制台”上设置的。需要在 buildroot 2019.02.9 中通过 'ttyS0' 进行更改。