Maskowanie systemd-networkd-wait-online.service
, jak sugerowano w innych odpowiedziach, może pomóc w prostych konfiguracjach, ale nie rozwiązuje problemu. Jeśli zamaskujesz usługę, wszystkie inne usługi zależne od niej również się nie powiodą. Oznacza to, że wszystkie usługi potrzebne do oczekiwania, aż sieć będzie w trybie online, przestaną działać.
Wystąpił ten problem, ponieważ używam dynamicznej konfiguracji przełączania awaryjnego dla moich laptopów z łączeniem przewodowego (enp9s0) i bezprzewodowego (wlp12s0) interfejsu, który jest używany jako slave dla głównego interfejsu bond0 . Dokładnie taką samą sytuację masz w przypadku korzystania z mostu ( br0 z interfejsami slave). Tylko główne interfejsy bond0 lub br0 zostaną podłączone , ale nie urządzenia slave, więc systemd-networkd-wait-online.service
zawiodą na urządzeniach slave.
Rozwiązaniem tego problemu jest modyfikacja usługi i sprawdzanie tylko interfejsów, które powinny przejść do trybu online. Znajdziesz z:
~$ 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
Program systemd-networkd-wait-online ma parametr do testowania określonych interfejsów. Sprawdź za pomocą /lib/systemd/systemd-networkd-wait-online --help
. Zrobię więc zrzut pliku, aby zmodyfikować usługę:
~$ sudo systemctl edit systemd-networkd-wait-online.service
W pustym edytorze wstaw te instrukcje, oczywiście z interfejsem, zapisz je i zamknij edytor:
[Service]
ExecStart=
ExecStart=/lib/systemd/systemd-networkd-wait-online --interface=bond0 --quiet
Puste ExecStart=
jest ważne, ponieważ wyłącza „stare” polecenie. Możesz sprawdzić więcej niż w interfejsie (spójrz na pomoc).