Wie füge ich eine Abhängigkeit zu einem systemd.mount hinzu, das von / bin / mount aktiviert wird?

7

Ich möchte, dass systemd on mount /mnt/testautomatisch ein Programm aufruft (im wirklichen Leben cryptsetup, um das zugrunde liegende Gerät zu entsperren, um es hier zu testen echo), bevor das Dateisystem gemountet und nachdem es nicht gemountet wird.

Mit /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

und /etc/fstab(teilweise):

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

Dies funktioniert (nach dem Neuladen des Dämons und dem Aktivieren des Dienstes) für systemctl start mnt-test.mountbzw. systemctl stop mnt-test.mountals Root.

Am mount /mnt/testjedoch systemctl status mnt-test.mount stickbak-encryptionzeigt dieser Dienst Wesen inactive (dead), während die erstere ist active (mounted).

Wie kann ich (oder kann ich nicht?) Eine Abhängigkeit einrichten, die berücksichtigt wird, wenn sie ebenfalls /bin/mountaufgerufen wird? Der Status der Mount-Einheit zeigt, dass mount /mnt/testdies übersetzt zu sein scheint ExecMount=/bin/mount /dev/$DEVICE /mnt/test -t auto -o noauto, sodass systemd anscheinend benachrichtigt wird.

Tim Landscheidt
quelle
Da fstab automatisch von systemd analysiert wird und eine schnelle Google-Suche keine Eingabe darüber ergab, wie die generierte Mount-Datei so gesteuert werden kann, dass Abhängigkeiten angegeben werden, würde ich vermuten, dass dies derzeit unmöglich ist, aber ich hoffe es wirklich falsch liegen und jemanden sehen, der diese Frage positiv beantwortet, denn ich würde auch davon profitieren
Brunocodutra

Antworten:

5

Ich habe mir kürzlich die gleiche Frage gestellt, bin aber schnell zu der Erkenntnis gekommen, dass es so nicht funktioniert.

Wenn Sie das mountBefehlszeilenprogramm verwenden, ist systemd nicht beteiligt: mountliest /etc/fstab(oder nimmt Optionen von der Befehlszeile) und mountet das Gerät. Wenn Sie eine systemd-Mount-Einheit starten, wird sie von systemd analysiert, das intern Mount-Systemaufrufe verwendet, um den Mount durchzuführen.

Es gibt also keine Möglichkeit für systemd, sich bei der Verwendung zu engagieren mount.

Abgesehen davon gibt es einen interessanten Unterschied zwischen using mountund systemd in dem, was sie als gültig akzeptieren /etc/fstab. Systemd analysiert die Datei und erstellt Mount-Einheiten, die dann verwendet werden. In diesem Fall werden weniger Parameter akzeptiert als mounterforderlich.

Wenn Sie systemd verwenden, müssen Sie nur das Gerät und den Einhängepunkt angeben, mountbenötigen jedoch weitere Optionen wie das Dateisystem und Optionen.

Sternenhimmel
quelle