Il mascheramento systemd-networkd-wait-online.service
, come suggerito in altre risposte, può aiutare nelle semplici configurazioni ma non risolve il problema. Se si maschera il servizio, anche tutti gli altri servizi a seconda di esso falliranno. Ciò significa che tutti i servizi necessari per attendere che la rete sia online non funzioneranno.
Mi imbatto in questo problema, perché io uso una dinamica fail-over di installazione per i miei computer portatili con l'incollaggio del cablato (enp9s0) e l'interfaccia wireless (wlp12s0) che vengono utilizzati come schiavi per l'interfaccia principale bond0 . Esattamente la stessa situazione che hai se usi un bridge ( br0 con interfacce slave). Solo le interfacce principali bond0 o br0 potranno ottenere on-line, ma non gli schiavi così systemd-networkd-wait-online.service
non riuscirà sugli slave.
La soluzione a questo problema è modificare il servizio e verificare solo le interfacce che dovrebbero andare online. Troverai 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
Il programma systemd-networkd-wait-online ha un parametro per testare interfacce specifiche. Verificare con /lib/systemd/systemd-networkd-wait-online --help
. Quindi faccio una goccia nel file per modificare il servizio:
~$ sudo systemctl edit systemd-networkd-wait-online.service
Nell'editor vuoto inserisci queste istruzioni, ovviamente con la tua interfaccia, salvale e chiudi l'editor:
[Service]
ExecStart=
ExecStart=/lib/systemd/systemd-networkd-wait-online --interface=bond0 --quiet
Il vuoto ExecStart=
è importante perché disabilita il comando "vecchio". Puoi controllare più che sull'interfaccia (guarda la guida).