跟踪systemd的目标执行顺序

跟踪systemd的目标执行顺序

我试图了解系统启动时 Systemd 的操作。以我的拙见,通常要初始化的第一个目标是/usr/lib/systemd/user/default.target,以下目标取自Ubuntu:

default.target

[Unit]
Description=Default
Documentation=man:systemd.special(7)
Requires=basic.target
After=basic.target
AllowIsolate=yes

default.target需要并在之后运行basic.target

[Unit]
Description=Basic System
Documentation=man:systemd.special(7)
Wants=sockets.target timers.target paths.target
After=sockets.target timers.target paths.target

sockets.target:

[Unit]
Description=Sockets
Documentation=man:systemd.special(7)

timers.target

[Unit]
Description=Timers
Documentation=man:systemd.special(7)

DefaultDependencies=no
Conflicts=shutdown.target

paths.target

[Unit]
Description=Paths
Documentation=man:systemd.special(7)

于是Systemd就去判断依赖的依赖、依赖的依赖等等,但是我们却走到了死胡同,怎么办?假设整个过程一切顺利,即所有依赖项defaul.target都已确定并初始化,我们仍然需要multi-user.targetsysinit.target和其他目标,所有上述目标都没有提及这些目标。

Systemd 如何确定哪些目标需要初始化以及哪些目标应该被忽略?

相关内容