![如何在 cryptsetup 之后立即启动 systemd 中的服务?](https://linux22.com/image/39343/%E5%A6%82%E4%BD%95%E5%9C%A8%20cryptsetup%20%E4%B9%8B%E5%90%8E%E7%AB%8B%E5%8D%B3%E5%90%AF%E5%8A%A8%20systemd%20%E4%B8%AD%E7%9A%84%E6%9C%8D%E5%8A%A1%EF%BC%9F.png)
我安装了带有 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