No systemd, o que inicia unidades geradas pelo gerador?

6

Na minha máquina (Arch linux), o systemd-generator gera alguns arquivos unitários em /run/systemd/generator/ e eles parecem ser iniciados de alguma forma na inicialização. O que os está iniciando?

Por exemplo, boot.mount é gerado pelo systemd. systemctl list-dependencies --all mostra que está vinculado a local-fs.target (que não é gerado). Como eles estão ligados? Não há nada nessas duas unidades que pareça acionar o início de boot.mount . Bem, em boot.mount , existe Before=local-fs.target , mas isso não inicia um serviço, não é?

    
por Gradient 26.12.2016 / 02:07

1 resposta

7

Arquivos unitários gerados não são ativados automaticamente pelo systemd. Não há nada especial sobre eles no que diz respeito ao systemd. Cada gerador individual tem que criar explicitamente links simbólicos que conectam uma unidade gerada a um destino, de forma que ativar o alvo ativa a unidade gerada por meio de uma dependência da maneira normal.

Isso tira proveito do fato de que nem todas as conexões entre as unidades são expressas dentro dos arquivos da unidade. As dependências Wants and Requires podem ser expressas com farms de link simbólico nos subdiretórios *.wants/ e *.requires/ . E esses farms de links simbólicos abrangem subdiretórios de /run/systemd/ entre outras coisas.

Em outras palavras: Em vez de gravar uma unidade com WantedBy=local-fs.target e, em seguida, precisar invocar explicitamente sytemctl enable para criar o link simbólico (que é o que permite), o gerador interrompe o processo e torna o simbólico ligar-se. E isso o torna em um lugar efêmero, o que systemctl enable normalmente não faria, evitando assim que o link simbólico continuasse a existir após o próximo desligamento e confundindo a próxima inicialização.

Especificamente, você encontrará no seu sistema que /run/systemd/generator/boot.mount está simbolicamente vinculado a partir de /run/systemd/generator/local-fs.target.wants/boot.mount . systemd-fstab-generator criou este link simbólico , e torna boot.mount desejado por local-fs.target . O gerador é executado no início do bootstrap antes que o sistema rode para ativar o local-fs.target , o que significa que quando ele ativar a local-fs.target , a dependência gerada estará lá para ser seguida.

Leitura adicional

por 26.12.2016 / 11:32

Tags