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 plot
puedo ver que mi servicio comienza, pero networking.service
comienza 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.target
lugar 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/interfaces
tiene referencias aip-up
scripts que residen en otra partición. Esa partición está montada por un script complejo/opt/intermodul-mounts/start.sh
que debe ejecutarse antes de configurar la red. Actualmente, losip-up
scripts no se inician efectivamente porque no son accesibles en el momento del arranque. La ejecuciónservice networking restart
posterior muestra todas las interfaces correctamente.Respuestas:
Desea usar
network-pre.target
si 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.target
yWants=network-pre.target
como 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
Before
yRequiredBy
. 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