El enmascaramiento systemd-networkd-wait-online.service
, como se sugiere en otras respuestas, puede ayudar en configuraciones simples, pero no soluciona el problema. Si enmascara el servicio, todos los demás servicios que dependen de él también fallarán. Eso significa que todos los servicios necesarios para esperar hasta que la red esté en línea fallarán.
Me encuentro con este problema porque uso una dinámica de conmutación por error de configuración de mis ordenadores portátiles con la unión del cable (enp9s0) y la interfaz inalámbrica (wlp12s0) que se utilizan como esclavos para la interfaz principal bond0 . Exactamente la misma situación que tiene si usa un puente ( br0 con interfaces esclavas). Solo las interfaces principales bond0 o br0 se conectarán, pero no los esclavos, por systemd-networkd-wait-online.service
lo que fallarán en los esclavos.
La solución a este problema es modificar el servicio y verificar solo las interfaces que deberían conectarse. Encontrarás con:
~$ sudo systemctl cat systemd-networkd-wait-online.service | grep --after-context=3 '\[Service\]'
[Service]
Type=oneshot
ExecStart=/lib/systemd/systemd-networkd-wait-online
RemainAfterExit=yes
El programa systemd-networkd-wait-online tiene un parámetro para probar interfaces específicas. Consulte con /lib/systemd/systemd-networkd-wait-online --help
. Entonces hago una caída en el archivo para modificar el servicio:
~$ sudo systemctl edit systemd-networkd-wait-online.service
En el editor vacío, inserte estas declaraciones, por supuesto con su interfaz, guárdelas y salga del editor:
[Service]
ExecStart=
ExecStart=/lib/systemd/systemd-networkd-wait-online --interface=bond0 --quiet
El vacío ExecStart=
es importante porque deshabilita el comando "antiguo". Puede buscar más que en la interfaz (consulte la ayuda).