![systemd 加密设置期间失败的依赖项是什么?](https://linux22.com/image/721229/systemd%20%E5%8A%A0%E5%AF%86%E8%AE%BE%E7%BD%AE%E6%9C%9F%E9%97%B4%E5%A4%B1%E8%B4%A5%E7%9A%84%E4%BE%9D%E8%B5%96%E9%A1%B9%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我在虚拟机中使用 Ubuntu 16.04 LTS Server,其中有一个未加密的硬盘,/
还有一个 LUKS 加密的硬盘,用于存储一些任意数据。系统正确启动并登录后,在 shell 中手动打开加密磁盘并使用密码安装。一切按预期运行。
问题是 systemd 在启动期间已经尝试对此加密驱动器执行某些操作,失败,遇到超时并随后继续前进,这会花费一分钟以上的启动时间。
在以前的 Ubuntu 版本中,它会自动要求输入密钥来解锁驱动器,但这在 UB 14.04 中已经不再正常工作,现在也不行。systemd 没有打印任何提示我输入密码的文本,也没有提示。它只是识别出它想要做的事情中的错误,并在一段时间后继续。
我不明白问题到底是什么,为什么 systemd 想要做任何事情,即使它不提示输入密码或类似的东西。如果有人能给我指明正确的方向,告诉我如何让 systemd 正确地提示输入密码,或者让它根本不对我的设备执行这些操作,那就太好了。目前我不确定我更喜欢哪种方式。;-)
systemd 打印错误:
May 1 01:28:23 example.org systemd[1]: dev-disk-by\x2duuid-7d39d2ed\x2df91f\x2d456e\x2daa31\x2d851cfe48de1b.device: Job dev-disk-by\x2duuid-7d39d2ed\x2df91f\x2d456e\x2daa31\x2d851cfe48de1b.device/start timed out.
May 1 01:28:23 example.org systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-7d39d2ed\x2df91f\x2d456e\x2daa31\x2d851cfe48de1b.device.
May 1 01:28:23 example.org systemd[1]: Dependency failed for Cryptography Setup for mnt_luks_crypt.
May 1 01:28:23 example.org systemd[1]: Dependency failed for dev-mapper-mnt_luks_crypt.device.
May 1 01:28:23 example.org systemd[1]: dev-mapper-mnt_luks_crypt.device: Job dev-mapper-mnt_luks_crypt.device/start failed with result 'dependency'.
May 1 01:28:23 example.org systemd[1]: systemd-cryptsetup@mnt_luks_crypt.service: Job systemd-cryptsetup@mnt_luks_crypt.service/start failed with result 'dependency'.
May 1 01:28:23 example.org systemd[1]: dev-disk-by\x2duuid-7d39d2ed\x2df91f\x2d456e\x2daa31\x2d851cfe48de1b.device: Job dev-disk-by\x2duuid-7d39d2ed\x2df91f\x2d456e\x2daa31\x2d851cfe48de1b.device/start failed with result 'timeout'.
它告诉了我们一些有关失败的依赖项的信息,但我没有看到它们是什么。当然,我没有配置 systemd 本身来对此设备执行任何操作。我所做的唯一一件事就是添加一个条目,/etc/fstab
如下所示:
/dev/mapper/mnt_luks_crypt /mnt/luks ext4 errors=remount-ro,noauto 0 2
我知道 systemd 会处理这些,但从我读到的文档noauto
它也应该兑现。那么我的选择是不是出了问题?
还没有尝试,但我想我可以使用以下两个选项来解决漫长的等待时间:
x-systemd.device-timeout=
x-systemd.mount-timeout=
或者有什么方法可以automount
完全禁用该线路?x-systemd.automount
似乎只是一个标志,与无关false
。
谢谢!
答案1
我现在有点确定noauto
它/etc/fstab
没有得到正确/完全的尊重,因为它/etc/crypttab
也没有被指定:
https://www.freedesktop.org/software/systemd/man/crypttab.html#noauto
将其添加之后,错误略有变化:
Aug 22 22:27:07 example.org systemd[1]: dev-disk-by\x2duuid-7d39d2ed\x2df91f\x2d456e\x2daa31\x2d851cfe48de1b.device: Job dev-disk-by\x2duuid-7d39d2ed\x2df91f\x2d456e\x2daa31\x2d851cfe48de1b.device/start timed out.
Aug 22 22:27:07 example.org systemd[1]: Timed out waiting for device dev-disk-by\x2duuid-7d39d2ed\x2df91f\x2d456e\x2daa31\x2d851cfe48de1b.device.
Aug 22 22:27:07 example.org systemd[1]: Dependency failed for Cryptography Setup for mnt_luks_crypt.
Aug 22 22:27:07 example.org systemd[1]: systemd-cryptsetup@mnt_luks_crypt.service: Job systemd-cryptsetup@mnt_luks_crypt.service/start failed with result 'dependency'.
Aug 22 22:27:07 example.org systemd[1]: dev-disk-by\x2duuid-7d39d2ed\x2df91f\x2d456e\x2daa31\x2d851cfe48de1b.device: Job dev-disk-by\x2duuid-7d39d2ed\x2df91f\x2d456e\x2daa31\x2d851cfe48de1b.device/start failed with result 'timeout'.
包含的行dev-mapper-mnt_luks_crypt.device
现在已消失。但仍有一些事情发生和失败,我不明白,而且 systemd 缺少记录详细信息的功能。
答案2
对我来说,这是 中的错误行fstab
。错误的行与 crypttab 或加密卷完全无关,这使其更加令人困惑。
尝试恢复您所做的任何更改或注释掉任何添加的行。然后重新启动并返回编辑 fstab;手动重新安装以确认您的更改正确无误。
答案3
对我来说,从 USB 设备启动后设备名称 (sda、sdb) 发生了变化,因此 /etc/crypttab 中指定的设备不再正确......
这个问题很简单,但我花了一段时间才找到它