如何向 /bin/mount 激活的 systemd.mount 添加依赖项?

Tim*_*idt 7 linux mount systemd

我希望 systemd on在文件系统挂载之前和卸载之后mount /mnt/test自动调用一个程序(在现实生活cryptsetup中解锁底层设备,在此处进行测试echo)。

/etc/systemd/system/stickbak-encryption.service

[Unit]
Description=stickbak encryption
Before=mnt-test.mount
StopWhenUnneeded=true

[Service]
Type=oneshot
ExecStart=/bin/echo Unlock device.
RemainAfterExit=true
ExecStop=/bin/echo Lock device.

[Install]
RequiredBy=mnt-test.mount
Run Code Online (Sandbox Code Playgroud)

/etc/fstab(部分):

/dev/$DEVICE /mnt/test auto noauto 0 0
Run Code Online (Sandbox Code Playgroud)

systemctl start mnt-test.mount分别适用于和systemctl stop mnt-test.mount(以 root 身份)(在守护进程重新加载并启用服务之后)。

mount /mnt/test但是,Onsystemctl status mnt-test.mount stickbak-encryption显示后一个服务是inactive (dead),而前者是active (mounted)

我如何(或我不能?)建立一个在/bin/mount被调用时也受到尊重的依赖关系?挂载单元的状态显示mount /mnt/test似乎已转换为ExecMount=/bin/mount /dev/$DEVICE /mnt/test -t auto -o noauto,因此很明显 systemd 得到了通知。

sta*_*fry 5

我最近问自己同样的问题,但我很快意识到它不是这样工作的。

当您使用mount命令行程序时,systemd 不参与:mount读取/etc/fstab(或从命令行获取选项)并挂载设备。当你启动一个 systemd 挂载单元时,它被 systemd 解析,它在内部使用挂载系统调用来执行挂载。

所以当你使用mount.

mount顺便说一句,using和 systemd 在它们接受的在/etc/fstab. Systemd 解析文件并创建它然后使用的挂载单元。当它这样做时,它接受的参数少于mount需要的参数。

如果你使用 systemd,那么你只需要提供设备和挂载点,但是mount需要更多的选项,比如文件系统和选项。