如何取消远程机器上的 SystemD 服务单元的屏蔽?

如何取消远程机器上的 SystemD 服务单元的屏蔽?

我遇到了一个大问题,需要帮助。当我尝试通过禁用/屏蔽“不必要的”服务来加快我的 LMDE4 机器上的启动过程时,我屏蔽了这些服务,systemd-logind.service无法再启动。我已经尝试通过编辑 grub2 配置来启动到控制台,但启动过程因错误而中断:

Cannot open access to console, the root account is locked.
See sulogin(8) man page for more details.

Press Enter to continue.

因此,我准备了一个活动的 LMDE4 USB 棒,启动到恢复系统,解锁并挂载了 LUKS 加密的 LVM 主机卷(我已经将自己锁定在外的卷),现在至少我可以访问文件系统了。

我该如何继续来揭露该卷上的服务单元?

问题是,这样做sudo systemctl unmask systemd-logind.service会取消屏蔽正在运行的 USB 恢复系统的服务单元,而不是主机系统上的服务单元。systemd 如何识别被屏蔽的服务单元?它是服务文件中的某个东西吗?也就是说,我是否只能修改其内容才能取消屏蔽服务,还是更复杂?

我已经检查过了file /lib/systemd/system/systemd-logind.service,上面说

./systemd-logind.service: ASCII text

所以它似乎没有指向/dev/null(当服务单元被掩盖时通常会发生这种情况systemctl mask name.service)。

答案1

尝试 chroot 进入系统。

为此,打开终端并运行以下命令

chroot YOURDRIVEMOUNTHERE

将 YOURDRIVEMOUNTHERE 替换为安装损坏系统驱动器的安装点。

然后通过运行此命令检查是否/etc/systemd/system/systemd-logind.service是到 /dev/null 的符号链接。

file /etc/systemd/system/systemd-logind.service

如果在 chroot bash shell 中运行以下命令。

rm  /etc/systemd/system/systemd-logind.service
ln -s /lib/systemd/system/systemd-logind.service /etc/systemd/system/systemd-logind.service

并尝试启动Linux。

如果失败,请返回 chroot bash shell 并运行

passwd root

并设置密码。启动进入 Linux 控制台并输入密码并运行以下命令。

systemctl daemon-reload
systemctl enable systemd-logind.service

并重新启动

之后,您可以通过运行以下命令禁用对 root 帐户的访问,并且只允许 sudo root 访问:

sudo passwd -l root

相关内容