後でマウントされた暗号化ボリュームとサービスが動作する Systemd 構成

後でマウントされた暗号化ボリュームとサービスが動作する Systemd 構成

やあみんな私は
Arch Linux を搭載した Banana Pi に取り組んでおり、現在次のことを達成しようとしています。

  1. 誰かが私の外部ストレージの暗号化されたキーファイルをマウントした後、systemdはそれらを使用して外部ストレージをマウントします
  2. systemdは外部ストレージ上で動作するすべてのサービスを起動する。
  3. シャットダウン時には、暗号化されたボリュームをアンマウントする前にすべてを停止する必要があります。

数時間後、ようやくうまくいきましたが、もっと小さな解決策があるのではないかと思います。

システム

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 を構成する方法

関連情報