私はsystemdを読んで、デバイスのunit-filesについて少し調べています。
マニュアルページによると:
systemd
は、「systemd」udev
タグでマークされたすべてのカーネルデバイスのデバイスユニットを動的に作成します(デフォルトでは、すべてのブロックデバイスとネットワークデバイス、およびその他いくつか)。これは、デバイスと他のユニット間の依存関係を定義するために使用できます。udev
デバイスにタグを付けるには、udev
ルールファイルで "TAG + =" systemd ""を使用します。詳細については、udev(7)
を参照してください。
Debian Wikiで説明されているように、/ lib/systemd/systemを調べてみました。
Debianが提供するユニットファイルは、/ lib/systemd/systemディレクトリにあります。
しかし、これらはどこにあるかわかりません。
まだ
~$ Sudo systemctl list-units --type=device
デバイスユニット(ディスク、サウンドカード、イーサネットコントローラなど)を表示しますか?
Debianのデバイスユニットファイルの場所を知りたいのですが。または、これらが存在しない場合、なぜ存在せず、systemdはDebianでこれらのユニットをどのように処理しますか?
明確化/コメント/洞察は、大歓迎です。
MKに感謝します。ラハル
答えはあなたが引用した最初の文にあります。 「systemdはデバイスユニットを動的に作成します」。 「開始」だけでなく、「作成」と書かれています。 udevデーモンとの統合により、カーネルが新しいデバイスについてudevに通知すると、.deviceユニットがオンザフライで合成されます。 (そして同様に、デバイスが消えると、.deviceユニットも破壊されます。)
動的に作成されるのはユニット自体であり(systemd内のメモリにのみ存在するため)、ユニットファイルではありません。したがって、これは基本的に、動的に作成された.scopeユニットまたは一時的な.serviceユニットと同じメカニズムです(/etc/fstab
に基づいてジェネレーターによって作成された.mountユニットファイルとは異なります)。
したがって、ディスク上のどこにもユニットファイルはありません。 systemctl status some.device
がユニットファイルを参照しておらず、systemctl show some.device
がFragmentPath
をリストしていないことがわかります。