Estoy tratando de configurar un nuevo servicio (bajo Debian Jessie) que necesita configurar algunos montajes donde se almacena la configuración de red y, por lo tanto, este servicio debe completarse antes de que se inicie networking.service.
Intenté lo siguiente:
[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
Utilizando systemd-analyze plotpuedo ver que mi servicio comienza, pero networking.servicecomienza unos 3 segundos antes:
Aparentemente mi configuración está mal, pero me está costando encontrar el problema ... Cualquier ayuda es muy apreciada ...
Actualizar
Actualmente lo resolví cambiando la configuración del servicio para comenzar antes en local-fs.targetlugar 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
Aún así, me gustaría entender por qué mi primera configuración no funcionó como se esperaba ...


/etc/network/interfacestiene referencias aip-upscripts que residen en otra partición. Esa partición está montada por un script complejo/opt/intermodul-mounts/start.shque debe ejecutarse antes de configurar la red. Actualmente, losip-upscripts no se inician efectivamente porque no son accesibles en el momento del arranque. La ejecuciónservice networking restartposterior muestra todas las interfaces correctamente.Respuestas:
Desea usar
network-pre.targetsi desea configurar algo antes de que comience la redDebes ponerlos en la
[Unit]sección:Referencia
fuente
systemctl is-enabled <unit>es siemprestatic. Por supuesto, no puedo habilitarlo porque no hayWantedBy=. Después de todo, ¿para qué lo quiere? Esto es algo que hace alguna configuración antes de que la red se cargue.Before=network-pre.targetyWants=network-pre.targetcomo para el[Install]que hiceWantedBy=network.target. La última sección obligó a que la red lo requiriera, la primera lo ordenó. Sin embargo, fue un dolorComo se hizo en Debian Jessie, el paquete netfilter-persistent (que permite cargar las reglas de iptables antes de que la red esté activa) tiene un netfilter-persistent.service que se parece a:
fuente
shutdown.target?El error es simple y una de las cosas principales que siempre mezclo: mezclas
BeforeyRequiredBy. Eso no va de la mano. Los otros tienen razón sobre el objetivo.fuente
Hacer algo a lo largo de estas líneas asegurará que esta unidad se haya ejecutado antes que la red, pero después de que se haya producido la mayoría de las otras configuraciones importantes.
fuente