
大家好,
我正在使用 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 並在其上運行服務