Qual parte do systemd inicia o serviço de carregamento do módulo?

1

Estou tentando entender como o serviço systemd, principalmente systemd-module-load.service , é iniciado no Linux. Eu olhei para a rotina main() (em src/core/main.c do systemd), mas não consegui encontrar nenhuma referência direta à unidade / serviços do systemd.

    
por ch2301 28.06.2018 / 16:29

2 respostas

1

systemd-modules-load.service é especificado como uma dependência de sysinit.target . Você pode procurar / confirmar tais dependências:

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

A saída não é necessariamente muito conveniente, porque prossegue listando um grande número de unidades que dependem de sysinit.target , em ordem alfabética. Pelo menos isso sugere sysinit.target é muito importante :). Podemos perguntar qual parte do systemd inicia sysinit.target , e acho que essa referência vai responder sua pergunta -

When systemd starts up the system, it will activate all units that are dependencies of default.target (as well as recursively all dependencies of these dependencies). Usually, default.target is simply an alias of graphical.target or multi-user.target, depending on whether the system is configured for a graphical UI or only for a text console. To enforce minimal ordering between the units pulled in, a number of well-known target units are available, as listed on systemd.special(7).

- esta citação é seguida por um gráfico, que ilustra que sysinit.target é uma dependência indireta de multi-user.target e, portanto, também de graphical.target .

Consulte: man bootup ou link

I looked at the main() routine (in systemd's src/core/main.c), but I couldn't find any direct references to systemd unit/services

Existem referências a unidades específicas em src/core/ . Eles estão indiretos através de SPECIAL_ define a partir de src/basic/special.h . Isso inclui:

#define SPECIAL_DEFAULT_TARGET "default.target"
    
por 29.06.2018 / 17:13
0

Não estou claro exatamente o que você está procurando.

O% binário /lib/systemd/systemd-modules-load é executado pelo systemd-modules-load.service que faz o carregamento real do kernel.

    
por 29.06.2018 / 15:09

Tags