systemd-cryptsetupで生成された単位を使用する方法

systemd-cryptsetupで生成された単位を使用する方法

暗号化されたUSBデバイスが接続されたら、自動的にインストールしようとします。だから、次の場所に新しい項目を追加しました/etc/crypttab

ext /path/to/dev /path/to/key bitlk,noauto

これにより、systemd-cryptsetup-generatorは、デバイスが接続されたときにデバイスの復号化に使用される新しいサービスユニットを作成します。

ただし、何らかの理由でサービスが有効になっていないため、手動で開始する必要があります。また、[Install]セクションがないため、systemctlを介して有効にすることはできません。

その部分を追加するのは退屈なようです。これらのサービスを自動的に開始するための最良のワークフローは何ですか?

私はmanjaro 22(プラズマKDE)を使用しています。

ベストアンサー1

このように生成された単位は実際に依存関係として追加されます。。装備ロック解除時に生成されるユニットです。たとえば、ジェネレータはdev-mapper-ext.device拡張のために.deviceに依存しているため、[email protected]この.deviceに依存するすべてのエントリが自動的にロック解除されます。

> tree /run/systemd/generator*
/run/systemd/generator/
├── dev-mapper-archive2.device.requires/
│   └── [email protected] -> ../[email protected]
├── dev-mapper-data.device.requires/
:   └── [email protected] -> ../[email protected]

これは、/ etc / fstabエントリ参照/dev/mapper/ext(またはそのfstabエントリから生成された.mount単位)がsystemd-cryptsetup@extに間接的に依存し、デバイスをマウントする必要があるとき(起動時に)ロックを解除することを意味します。またはマニュアルを使用してくださいsystemctl start /mnt/ext)。

myth> systemctl list-dependencies -a /mnt/hdd
mnt-hdd.mount
● ├─dev-mapper-data.device
● │ └─[email protected]
● :   └─dev-disk-by\x2duuid-1eb9bbbb\x2dcb37\x2d4fab\x2dad12\x2da512fed4a0a9.device

ほとんどのシステム起動プロセスと同様に、ここの設計はcryptsetupデバイスのイベントベースの「ホットプラグ」ロック解除ではなく、依存関係ベースの「注文型」ロック解除です。

(元の.deviceデバイスにマウントの依存関係を追加することで、「ホットプラグ」のロック解除とマウントを継続できます。たとえば、「dev-sdb.device」で「mnt-ext.mount」を要求すると、ディスクにロックが解除され、マウントされた結果がもたらされます。

KDEでDolphinを介したディスクの対話型インストールにはsystemd-cryptsetupは必要ありません。これは、 UDisks2 自体が LUKS または他のデバイスをインストールする前にロック解除を処理するためです。


systemctl add-wantsほぼ同じことを行いますsystemctl enableが、[Install]ディレクティブの代わりにコマンドライン引数を使用する依存関係の手動生成を使用できます。

# systemctl add-wants foo.service [email protected]

ただし、サービスが利用可能な機器に依存する場合は、直接行って依存することをお勧めします。端末から実装の詳細の代わりに:

# systemctl add-wants foo.service dev-mapper-ext.device

おすすめ記事