
やあみんな私は
Arch Linux を搭載した Banana Pi に取り組んでおり、現在次のことを達成しようとしています。
- 誰かが私の外部ストレージの暗号化されたキーファイルをマウントした後、systemdはそれらを使用して外部ストレージをマウントします
- 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.サービス
[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
ローカル
#!/bin/bash
systemclt isolate storage.target
cryptsetup --key-file /etc/luks-keys/storage1 luksOpen /dev/sda1 storage1
mount /dev/mapper/storage1 /mnt/storage1
Piブーツ:
- systemdはmulti-user.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 を構成する方法