如何禁用所有登录提示,包括 systemd 系统上的 VT 1

如何禁用所有登录提示,包括 systemd 系统上的 VT 1

我本质上是在嵌入式 Linux 上运行基于 X 的 kiosk 程序,并且我想在某些配置下禁用登录功能。我想在启动初期在一个 systemd 服务的 Exec 中运行一些发行版非特定控制台命令,以禁用所有登录提示,包括第一个虚拟终端上的登录提示,以便只有 systemd 服务的输出出现在强制 VT 上。我还需要另一个服务来启动 X 和全屏应用程序。

目前我的服务文件已订购

Before=systemd-logind.service systemd-networkd.service NetworkManager.service dhclient.service
Before=MyKioskApp.service

WantedBy=basic.target

并且可执行文件运行

for UNIT in systemd-logind.service systemd-networkd.service systemd-networkd.socket NetworkManager.service dhclient.service
do
    systemctl stop $UNIT
    systemctl mask --runtime $UNIT
done

这与其他技巧相结合可以完成我想要的大部分功能,但如果我的自助服务终端应用程序遇到错误并退出,我仍然会看到登录提示。将 getty 服务添加到列表中似乎会破坏一些东西,因此 X 拒绝启动。我认为我需要禁用某种 PAM 模块,但我没有看到建议用于更新该配置的命令。我无法为此任务添加新包,但我可以修改文件系统。

答案1

事实证明,掩盖 getty 服务是正确的选择。添加 console-getty.service 和[电子邮件受保护]屏蔽服务列表禁用了 TTY1 上的登录提示。实际上,systemd-logind 负责启动额外的虚拟终端会话,而 getty 负责在它们上提供登录提示,这似乎与它们的名称直接矛盾。

相关内容