大家好,
我正在使用 Arch Linux 开发 Banana Pi,目前正在尝试完成以下任务:
- 有人为我的外部存储安装了加密的密钥文件后,系统将使用它们并安装外部存储
- systemd 应启动在外部存储上运行的所有服务
- 关闭时,在卸载加密卷之前应停止所有操作
几个小时后终于成功了,我想知道是否有更小的解决方案:
/etc/systemd/系统
luks.keys.path
[Unit]
Description=luks-keys found in /etc/luks-keys
[Path]
DirectoryNotEmpty=/etc/luks-keys/
[Install]
WantedBy=multi-user.target
luks.keys.service
[Unit]
Description=luks-keys availible
Conflicts=umount.target
Before=umount.target
[Service]
Type=simple
ExecStart=/usr/local/bin/storage
RemainAfterExit=yes
存储.目标
[Unit]
Description=Storage
Requires=basic.target
After=multi-user.target
Requisite=luks.keys.service
AllowIsolate=yes
./storage.target.wants/minidlna.service
[Unit]
Description=minidlna server
After=network.target
Requisite=luks.keys.service
[Service]
Type=forking
ExecStart=/usr/bin/minidlnad -P /run/minidlna/minidlna.pid
PIDFile=/run/minidlna/minidlna.pid
[Install]
WantedBy=storage.target
/usr/local/bin/存储
#!/bin/bash
systemclt isolate storage.target
cryptsetup --key-file /etc/luks-keys/storage1 luksOpen /dev/sda1 storage1
mount /dev/mapper/storage1 /mnt/storage1
皮靴:
- systemd 启动多用户.target
- 激活 luks.keys.path 等待 /etc/luks-keys 中的文件
- 找到的文件
- luks.keys.service 被激活并启动 storage.target
- 其他服务正在启动
卸载前:
- systemctl 尝试停止 luks.keys.service
- storage.target 和其他服务正在停止,因为需要 luks.keys.service
- luks.keys.service 最终停止,并随着 umount.target 继续关闭
如果不可能以更少的工作来完成此任务,我很乐意给出问题的答案:
如何为稍后安装的加密卷配置 systemd 并在其上运行服务