如何在 cryptsetup 之后立即启动 systemd 中的服务?

如何在 cryptsetup 之后立即启动 systemd 中的服务?

我安装了带有 systemd 的 ArchLinux。我试图在安装加密数据设备后立即运行一个钩子,以便将 flashcache 放在其顶部。我有可以工作的脚本,但是我无法让它们按正确的顺序加载。这就是我所做的:

文件:/usr/lib/systemd/system/flashcache.service

[Unit]
Description=FlashCache
[email protected]

[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/usr/local/bin/flashcache_startup_script

[Install]
WantedBy=dev-mapper-data_cached.device

创建文件后,我运行了systemctl enable flashcache.service.

但是,启动时它不会启动,dev-mapper-data_cached 超时,之后我可以进入 root shell 并flashcache_startup_script手动运行。

我检查了 的输出journalctl -b,并确定 FlashCache 服务在超时发生之前不会加载。

我尝试过但没有成功的另一个选择是Requires=dev-mapper-vg1-data.device

我究竟做错了什么?

答案1

我尝试了各种方法,主要是使用以下资源。我不太确定它为何有效,但以下单元文件解决了该问题:

[Unit]
Description=FlashCache
BindsTo=dev-vg1-data.device
After=dev-vg1-data.device
DefaultDependencies=no

[Service]
Type=oneshot
RemainAfterExit=no
ExecStart=/usr/local/bin/flashcache_startup_script

[Install]
WantedBy=sysinit.target

相关内容