Estou tentando configurar um novo serviço (no Debian Jessie) que precisa instalar algumas montagens nas quais a configuração de rede é armazenada e, portanto, esse serviço deve ser concluído antes do início do networking.service.
Eu tentei o seguinte:
[Unit]
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
#Before=network-pre.target
Before=networking.service
[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes
[Install]
RequiredBy=networking.service
Usando systemd-analyze plot
posso ver que meu serviço é iniciado, mas é networking.service
iniciado cerca de 3 segundos antes:
Aparentemente, minha configuração está errada, mas estou tendo dificuldade em encontrar o problema ... Qualquer ajuda muito apreciada ..
Atualizar
No momento, eu o resolvi alterando a configuração do serviço para iniciar antes, em local-fs.target
vez de networking.service
:
[Unit]
DefaultDependencies=no
Description=mount/repair remaining filesystems (all persistent fs beyond "/")
Before=local-fs.target
[Service]
Type=oneshot
ExecStart=/opt/intermodul-mounts/start.sh
TimeoutSec=0
RemainAfterExit=yes
[Install]
RequiredBy=local-fs.target
Ainda assim, gostaria de entender por que minha primeira configuração não funcionou conforme o esperado ...?
/etc/network/interfaces
tem referências aip-up
scripts que residem em outra partição. Essa partição é montada por um script complexo/opt/intermodul-mounts/start.sh
que deve ser executado antes da instalação da rede. Atualmente, osip-up
scripts não iniciam efetivamente porque não estão acessíveis no momento da inicialização. A execuçãoservice networking restart
posterior traz todas as interfaces corretamente.Respostas:
Você deseja usar
network-pre.target
se desejar configurar algo antes do início da redeVocê deve colocá-los na
[Unit]
seção:Referência
fonte
systemctl is-enabled <unit>
é semprestatic
. Claro, não posso habilitá-lo porque não existeWantedBy=
. Afinal, o que é procurado? Isso é algo que faz algumas configurações antes que a rede seja carregada.Before=network-pre.target
eWants=network-pre.target
e para o[Install]
que fizemosWantedBy=network.target
. A última seção obrigou a ser exigida pela rede, a primeira colocou em ordem. Mas foi uma dorComo feito no Debian Jessie, o pacote netfilter-persistent (que permite carregar as regras do iptables antes da instalação da rede) tem um netfilter-persistent.service que se parece com:
fonte
shutdown.target
?!O erro é simples e uma das principais coisas que sempre misturo: você mistura
Before
eRequiredBy
. Isso não vai junto. Os outros estão corretos sobre o alvo.fonte
Fazer algo nesse sentido garantirá que esta unidade funcione antes da rede, mas após a maioria das outras configurações importantes.
fonte