ファイルシステムをマウントする前とアンマウントした後、systemdは自動的にプログラムを呼び出すことを望みますmount /mnt/test
(ここでテストするために、実際の環境でプライマリデバイスのロックを解除するため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
しかし、Onは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に明確に通知します。
答え1
最近でも同じ質問を自分に聞いてみましたが、まもなくそうではないことに気づきました。
mount
コマンドラインプログラムを使用すると、systemdはデバイスのmount
読み込み/etc/fstab
(またはコマンドラインからオプションを取得する)とマウントには関連しません。 systemd マウントデバイスを起動すると、systemd によって解決され、内部で mount システムコールを使用してマウントを実行します。
だからsystemdはあなたがそれを使うときに介入する方法がありませんmount
。
ちなみに、usingとsystemdの間に興味深い違いがあります。つまり、mount
Systemd/etc/fstab
はファイルを解析して使用されるインストール単位を生成します。これにより、mount
必要な数より少ない数の引数を受け入れます。
systemdを使用する場合は、デバイスとマウントポイントを提供するだけですが、mount
ファイルシステム、オプションなど、より多くのオプションが必要です。