Como adicionar uma dependência a um systemd.mount que é ativado por / bin / mount?

6

Eu quero que o systemd em mount /mnt/test chame automaticamente um programa (na vida real cryptsetup para desbloquear o dispositivo subjacente, para testar aqui echo ) antes que o sistema de arquivos seja montado e depois que ele seja desmontado.

com /etc/systemd/system/stickbak-encryption.service :

[Unit]
Description=stickbak encryption
Before=mnt-test.mount
StopWhenUnneeded=true

[Service]
Type=oneshot
ExecStart=/bin/echo Unlock device.
RemainAfterExit=true
ExecStop=/bin/echo Lock device.

[Install]
RequiredBy=mnt-test.mount

e /etc/fstab (parcialmente):

/dev/$DEVICE /mnt/test auto noauto 0 0

isso funciona (após o daemon recarregar e ativar o serviço) para systemctl start mnt-test.mount e, respectivamente, systemctl stop mnt-test.mount (como root).

Em mount /mnt/test , no entanto, systemctl status mnt-test.mount stickbak-encryption mostra o último serviço sendo inactive (dead) , enquanto o primeiro é active (mounted) .

Como eu posso (ou não posso?) configurar uma dependência que é honrada quando /bin/mount é chamado também? O status da unidade de montagem mostra que mount /mnt/test parece ser traduzido para ExecMount=/bin/mount /dev/$DEVICE /mnt/test -t auto -o noauto , então, aparentemente, o systemd é notificado.

    
por Tim Landscheidt 19.09.2013 / 19:31

1 resposta

4

Recentemente, me fiz a mesma pergunta, mas rapidamente percebi que isso não funciona dessa maneira.

Quando você usa o programa de linha de comando mount , o systemd não está envolvido: mount/etc/fstab (ou usa opções da linha de comando) e monta o dispositivo. Quando você inicia uma unidade de montagem do systemd, ela é analisada pelo systemd, que usa internamente chamadas do sistema de montagem para executar a montagem.

Portanto, não há como se envolver quando você usa mount .

Como um aparte, há uma diferença interessante entre usar mount e systemd no que eles aceitam como válido em /etc/fstab . O Systemd analisa o arquivo e cria unidades de montagem que ele usa. Quando isso acontece, aceita menos parâmetros que mount requer.

Se você usar o systemd, precisará fornecer o dispositivo e o ponto de montagem. No entanto, mount requer outras opções, como o sistema de arquivos e as opções.

    
por 30.01.2015 / 17:37