dai*_*isy 31 linux systemd console
在过去,我只是修改了/etc/inittab. 现在,使用 systemd,它似乎会自动启动 tty[1-6],我应该如何禁用 tty[4-6]?
看起来只有一个 systemd 服务文件,它使用 a%I来区分不同的 tty 会话。我希望我不需要删除该服务,并getty@ttyX.service手动创建每个服务。
jas*_*yan 37
没有真正需要禁用“额外的”TTY,因为在systemdgettys下是按需生成的:man systemd-getty-generator有关详细信息,请参阅。请注意,默认情况下,此自动生成仅针对 VT6 以下的 VT 完成(以模仿传统的 Linux 系统)。
正如Lennart 在博客文章1 中所说:
为了使事情更有效,登录提示现在仅按需启动。当您切换到 VT 时,getty 服务被实例化为 getty@tty2.service、getty@tty5.service 等等。由于我们不必再无条件地启动 getty 进程,这使我们可以节省一些资源,并使启动速度更快。
如果您确实希望配置特定数量的 getty,您可以logind.conf使用适当的条目进行修改,在此示例 3 中:
NAutoVTs=3Run Code Online (Sandbox Code Playgroud)
1. 事实上,systemd for Administrators的整个系列帖子(目前编号为 18 )非常值得一读。
小智 12
在基于 Debian 的系统上,如果您刚刚构建了一个服务器(没有 dbus 服务),则有一个文件会导致在启动时启动 5 个额外的 getty:
/lib/systemd/system/getty.target.wants/getty-static.service
Run Code Online (Sandbox Code Playgroud)
在里面,它说:
[Service]
Type=oneshot
ExecStart=/bin/systemctl --no-block start getty@tty2.service getty@tty3.service getty@tty4.service getty@tty5.service getty@tty6.service
RemainAfterExit=true
Run Code Online (Sandbox Code Playgroud)
只需删除此文件即可阻止额外的 getty 生成。如果您只想生成一个额外的 getty(用于 2 个 virt 控制台),请随意缩短列表。请注意,您会在 tty1 上自动获得一个,因此您始终至少拥有一个虚拟控制台。
另请参阅:如果缺少 dbus,则 systemd-logind.service 无法启动
tem*_*oto 12
要在特定 TTY 4-6 上禁用 gettys 同时可能使 1-3 和 7-9 工作,请运行:
for i in {4..6}; do
systemctl mask getty@tty${i}.service
done
Run Code Online (Sandbox Code Playgroud)
mask创建/etc/systemd/system/{name} -> /dev/null有效禁用服务的符号链接。尝试通过运行它systemctl start会显示错误Failed to start NAME.service: Unit NAME.service is masked.
如果你有 A.service Wants=masked.service,那么start A会成功,但也会在日志中产生依赖启动错误。
如果你有 B.service Requires=masked.service,那么start B也会失败。
是的,死灵回答。干杯。