![解密后的Systemd、crypttab和启动单元](https://linux22.com/image/215189/%E8%A7%A3%E5%AF%86%E5%90%8E%E7%9A%84Systemd%E3%80%81crypttab%E5%92%8C%E5%90%AF%E5%8A%A8%E5%8D%95%E5%85%83.png)
我有一个使用 crypttab 配置的加密分区,例如
/etc/crypttab:
name UUID=<THE_UUID> none luks,noauto
和 /etc/fstab
UUID=<THE_UUID> /mnt/mountpoint ext4 defaults,noauto 0,0
现在,我希望在我使用 手动解密分区后设备nfs-server.service
能够自动启动。有了关于 #debian-Matrix-Channel 的一些建议,我终于得到了systemctl start [email protected]
# systemctl edit nfs-server.service
[Unit]
[email protected]
After=mnt-mountpoint.mount
Requires=mnt-mountpoint.mount
通过此设置,我可以在手动解密后启动 nfs-server。尽管如此,我还是希望 systemd 自动启动 nfs-server (它应该已经自动挂载当时解密的分区)。
我需要如何编辑nfs-server.service
(或者甚至另一个单元?)以便 systemd 在解密分区后自动启动它?我想我可以类似地使用其他单元的逻辑在nfs-server.service
?之后自动启动。
答案1
您可以更改 crypt 服务并添加弱依赖在nfs服务器上进入它。它将尝试启动 nfs-server.service,但如果启动失败也不会失败。这是Wants=
在[Unit]
控制服务 ([email protected]
):
[Unit]
Wants=nfs-server.service
然后,一旦成功运行,它应该尝试启动 NFS 服务器。systemctl start [email protected]
明智的做法是永远不要更改原始配置文件,并且仅在可能的情况下将自定义配置片段添加到放置目录中。一个重要原因是更新不会影响您的附加片段文件,另一个原因是这有助于保持配置干净整洁,使集成配置管理(如 Ansible 等)变得更容易。
在 systemd 中可以通过其覆盖来实现。在这种情况下,你可以[email protected]
这样改变:
systemctl edit [email protected]
并按照我之前的描述仅将该[Unit]
部分放在那里。 (在幕后,它将创建放置目录,并将内容放入或编辑其中的文件中。)我建议也采用相同的管理方式。/etc/systemd/system/[email protected]
override.conf
nfs-server.service