Ich möchte, dass systemd on mount /mnt/test
automatisch 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.mount
bzw. systemctl stop mnt-test.mount
als Root.
Am mount /mnt/test
jedoch systemctl status mnt-test.mount stickbak-encryption
zeigt 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/mount
aufgerufen wird? Der Status der Mount-Einheit zeigt, dass mount /mnt/test
dies übersetzt zu sein scheint ExecMount=/bin/mount /dev/$DEVICE /mnt/test -t auto -o noauto
, sodass systemd anscheinend benachrichtigt wird.
Antworten:
Ich habe mir kürzlich die gleiche Frage gestellt, bin aber schnell zu der Erkenntnis gekommen, dass es so nicht funktioniert.
Wenn Sie das
mount
Befehlszeilenprogramm verwenden, ist systemd nicht beteiligt:mount
liest/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
mount
und 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 alsmount
erforderlich.Wenn Sie systemd verwenden, müssen Sie nur das Gerät und den Einhängepunkt angeben,
mount
benötigen jedoch weitere Optionen wie das Dateisystem und Optionen.quelle