如何在成功启动后禁用串行控制台(systemd/grub2)

如何在成功启动后禁用串行控制台(systemd/grub2)

我在使用 grub2 和 systemd(而不是 inittab)的 centos7 启动过程中启用了串行控制台

出于安全原因,我想在启动完全成功后,在启动结束时撤消该串行输入/输出。

我怎样才能做到这一点?

更新:

通过检查 systemd 服务我发现,即使 grub2 启动了控制台,它也可以通过它识别/启用控制台,所以我认为这会将其关闭。

systemctl stop [email protected]

在所有其他服务都已上线的情况下,我如何才能在完全成功启动后自动实现这一点。我可以使用,rc.local但这是 init.d 遗留的,没有考虑到其他服务已正确上线。

答案1

这听起来很不靠谱,但确实能完成任务。机器启动后,它将停止串行终端。

/etc/systemd/system/killconsole.service:

[Unit]
Description=kill console after boot
After=default.target

[Service]
Type=simple
ExecStart=/bin/systemctl stop [email protected]

[Install]
WantedBy=default.target

然后只需运行systemctl enable /etc/systemd/system/killconsole.service即可启用该装置。

您还可以使用单独的定时器单元直到启动后 X 分钟才会触发。如果您尝试这样做,请务必从Install服务中删除该部分并对其运行以将其从需求列表systemctl disable中删除。default.target

请注意,“成功启动”的定义可能会有所不同。例如,如果盒子的网络被堵塞,所有服务可能会正常启动,但您可能仍需要串行访问。因此,我强烈建议创建一个小脚本以确保系统正常运行(并在网络上)并将其放在一个ExecStartPre选项中。如果 Pre 脚本返回失败的退出代码,则不会运行该服务,也不会禁用串行控制台。

答案2

这可以通过我屏蔽该服务来实现:

systemctl mask [email protected]

感谢这个答案

相关内容