Estou tentando entender as operações do Systemd quando o sistema é inicializado. Na minha humilde compreensão, normalmente o primeiro alvo a ser inicializado é /usr/lib/systemd/user/default.target
, os alvos abaixo do Ubuntu:
default.target
:
[Unit]
Description=Default
Documentation=man:systemd.special(7)
Requires=basic.target
After=basic.target
AllowIsolate=yes
default.target
requer e é executado após 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)
Então o Systemd vai determinar a dependência da dependência e a dependência da dependência e assim por diante, mas chegamos a um beco sem saída, como? Supondo que tudo correu bem em todo o processo, isto é, todas as dependências para defaul.target
foram determinadas e inicializadas, ainda precisamos de multi-user.target
, sysinit.target
e outras metas, todas as metas acima mencionam nada sobre essas metas.
Como o Systemd determina quais alvos serão inicializados e quais devem ser ignorados?