Configuração do Systemd para volume criptografado montado posteriormente com serviços trabalhando nele

Configuração do Systemd para volume criptografado montado posteriormente com serviços trabalhando nele

Oi pessoal,
estou trabalhando em um Banana Pi com Arch Linux e atualmente estou tentando realizar o seguinte:

  1. Depois que alguém montou os arquivos-chave criptografados para meu sistema de armazenamento externo, devo usá-los e montar o armazenamento externo
  2. systemd deve iniciar todos os serviços que operam no armazenamento externo
  3. No desligamento, tudo será interrompido antes de desmontar o volume criptografado

Depois de algumas horas finalmente funcionou e me pergunto se existe uma solução menor:

/etc/systemd/system

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


armazenamento.target

[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/storage

#!/bin/bash

systemclt isolate storage.target

cryptsetup --key-file /etc/luks-keys/storage1 luksOpen /dev/sda1 storage1

mount /dev/mapper/storage1 /mnt/storage1




Botas Pi:

  • systemd inicia multiusuário.target
  • ativa luks.keys.path que espera por arquivos em /etc/luks-keys
  • arquivos encontrados
  • luks.keys.service é ativado e inicia storage.target
  • os outros serviços estão começando


Antes de desmontar:

  • systemctl tenta parar luks.keys.service
  • storage.target e os outros serviços estão parando porque precisam de luks.keys.service
  • luks.keys.service finalmente para e o desligamento continua com umount.target

Se não for possível fazer isso com menos trabalho, tenho o prazer de apresentar a resposta à pergunta:

Como configurar o systemd para um volume criptografado montado posteriormente com serviços trabalhando nele

informação relacionada