systemdのどの部分がモジュールローディングサービスを開始しますか?

systemdのどの部分がモジュールローディングサービスを開始しますか?

systemd-module-load.serviceLinuxでは、デフォルトでsystemdサービスの起動方法を理解したいと思います。main()(systemdから)ルーチンを見ましたが、src/core/main.csystemdデバイス/サービスへの直接参照が見つかりませんでした。

ベストアンサー1

systemd-modules-load.service依存関係として指定されますsysinit.target。次の依存関係を検索/確認できます。

$ systemctl list-dependencies --reverse systemd-modules-load.service
systemd-modules-load.service
● └─sysinit.target
●   ├─abrt-ccpp.service
...

sysinit.target出力は多数の従属単位をアルファベット順にリストするので、必ずしも便利ではありません。少なくともこれはそれがsysinit.target非常に重要であることを示しています:). systemdのどの部分が始まったのかを尋ねることができますsysinit.target。この参照があなたの質問に答えると思います。

systemd がシステムを起動すると、すべての依存デバイスがアクティブになりますdefault.target(そしてその依存関係に対するすべての依存関係が再帰的にアクティブになります)。通常、これはdefault.targetシステムがグラフィカルユーザーインターフェイスで構成されているのか、テキストコンソールでのみ構成されているのかによって、graphic.targetまたはmultiuser.targetのエイリアスです。導入されたユニット間の最小順序を実行するために、上記のようによく知られている複数のターゲットユニットを使用できます。systemd.special(7)

sysinit.target- この文の後には、間接依存関係を説明する図が続き、したがって間接依存multi-user.target関係を示していますgraphical.target

参照:man bootupまたはhttps://www.freedesktop.org/software/systemd/man/bootup.html


main()ルーチン(systemdのsrc / core / main.c)を見ましたが、systemdデバイス/サービスへの直接参照が見つかりませんでした。

特定のユニットへの参照が含まれていますsrc/core/。彼らはSPECIAL_の定義を通して間接的に行われますsrc/basic/special.h。これには以下が含まれます。

#define SPECIAL_DEFAULT_TARGET "default.target"

おすすめ記事