web-dev-qa-db-ja.com

Debianにデバイスユニットファイルがないのはなぜですか?

私は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に感謝します。ラハル

3
Lawless Leopard

答えはあなたが引用した最初の文にあります。 「systemdはデバイスユニットを動的に作成します」。 「開始」だけでなく、「作成」と書かれています。 udevデーモンとの統合により、カーネルが新しいデバイスについてudevに通知すると、.deviceユニットがオンザフライで合成されます。 (そして同様に、デバイスが消えると、.deviceユニットも破壊されます。)

動的に作成されるのはユニット自体であり(systemd内のメモリにのみ存在するため)、ユニットファイルではありません。したがって、これは基本的に、動的に作成された.scopeユニットまたは一時的な.serviceユニットと同じメカニズムです(/etc/fstabに基づいてジェネレーターによって作成された.mountユニットファイルとは異なります)。

したがって、ディスク上のどこにもユニットファイルはありません。 systemctl status some.deviceがユニットファイルを参照しておらず、systemctl show some.deviceFragmentPathをリストしていないことがわかります。

4
TooTea