私は_mount /mnt/test
_のsystemdにプログラムを自動的に呼び出して(実際にはcryptsetup
で基礎となるデバイスのロックを解除し、ここでテストするためにecho
)、ファイルシステムがマウントされる前と後でマウント解除。
_/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
_
および_/etc/fstab
_(一部):
_/dev/$DEVICE /mnt/test auto noauto 0 0
_
これは、_systemctl start mnt-test.mount
_およびそれぞれ_systemctl stop mnt-test.mount
_(ルートとして)に対して(デーモンのリロードおよびサービスの有効化後に)機能します。
ただし、_mount /mnt/test
_では、_systemctl status mnt-test.mount stickbak-encryption
_は後者のサービスがinactive (dead)
であり、前者がactive (mounted)
であることを示しています。
_/bin/mount
_が呼び出されたときに守られる依存関係を設定するにはどうすればよいですか(できないのですか?)マウントユニットのステータスは、_mount /mnt/test
_が_ExecMount=/bin/mount /dev/$DEVICE /mnt/test -t auto -o noauto
_に変換されているように見えるため、systemdに通知されるようです。
ごく最近、同じ質問をしましたが、すぐにそのようには機能しないことに気づきました。
mount
コマンドラインプログラムを使用する場合、systemdは関与しません。mount
は/etc/fstab
を読み取り(またはコマンドラインからオプションを取得し)、デバイスをマウントします。 systemdマウントユニットを開始すると、systemdによって解析され、mountシステムコールを内部的に使用してマウントを実行します。
したがって、mount
を使用するときにsystemdに参加する方法はありません。
余談ですが、mount
とsystemdの使用には、/etc/fstab
で有効と見なされるものに興味深い違いがあります。 Systemdはファイルを解析し、マウントユニットを作成して使用します。その場合、mount
が必要とするよりも少ないパラメーターを受け入れます。
Systemdを使用する場合は、デバイスとマウントポイントを指定するだけで済みますが、mount
には、ファイルシステムやオプションなどの追加オプションが必要です。