Masquage systemd-networkd-wait-online.service
comme suggéré dans d'autres réponses, peut aider dans des configurations simples mais ne résout pas le problème. Si vous masquez le service, tous les autres services qui en dépendent échoueront également. En d'autres termes, tous les services qui doivent attendre que le réseau soit en ligne échoueront.
Je rencontre ce problème parce que j'utilise un configuration du basculement dynamique pour mes appareils avec collage l'interface filaire (par exemple, enp9s0) et l'interface sans fil (par exemple, wlp12s0) qui sont utilisées comme esclaves pour l'interface principale bond0 . Exactement la même situation se présente si vous utilisez un pont ( br0 avec des interfaces esclaves). Seules les interfaces principales bond0 o br0 sera en ligne mais pas les esclaves donc systemd-networkd-wait-online.service
échouera sur les esclaves.
La solution à ce problème est de modifier le service et d'ignorer les interfaces qui sont des esclaves et qui ne signalent pas être en ligne. Vous trouverez avec :
~$ 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
Le programme systemd-networkd-wait-online a un paramètre pour ignorer des interfaces spécifiques. Vérifiez avec /lib/systemd/systemd-networkd-wait-online --help
. J'ai donc créé un fichier pour modifier le service et ignorer les interfaces esclaves :
~$ sudo systemctl edit systemd-networkd-wait-online.service
Dans l'éditeur vide, insérez ces déclarations, bien sûr avec les noms de votre interface, enregistrez-les et quittez l'éditeur :
[Service]
ExecStart=
ExecStart=/lib/systemd/systemd-networkd-wait-online --ignore=enp9s0 --ignore=wlp12s0 --quiet
Le vide ExecStart=
est important car il désactive la commande "old". Vous pouvez vérifier plus d'une interface (consultez l'aide).