Маскирование systemd-networkd-wait-online.service
, как предлагается в других ответах, может помочь в простых настройках, но не решает проблему. Если вы замаскируете службу, то все другие службы, зависящие от нее, также не будут работать. Это означает, что все службы, необходимые для ожидания подключения к сети, не будут работать.
Я столкнулся с этой проблемой, потому что я использую динамическую настройку переключения при сбое для своих ноутбуков со связыванием проводного (enp9s0) и беспроводного (wlp12s0) интерфейса, которые используются в качестве ведомых для основного интерфейса bond0 . Точно такая же ситуация, если вы используете мост ( br0 с подчиненными интерфейсами). Только основные интерфейсы bond0 или br0 будут подключены к сети, но не подчиненные, поэтому не systemd-networkd-wait-online.service
получат доступ к подчиненным.
Решением этой проблемы является изменение службы и проверка только на наличие интерфейсов, которые должны быть подключены к сети. Вы найдете с:
~$ 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
Программа systemd-networkd-wait-online имеет параметр для тестирования определенных интерфейсов. Проверьте с /lib/systemd/systemd-networkd-wait-online --help
. Поэтому я добавляю файл, чтобы изменить сервис:
~$ sudo systemctl edit systemd-networkd-wait-online.service
В пустом редакторе вставьте эти операторы, конечно же, с вашим интерфейсом, сохраните их и выйдите из редактора:
[Service]
ExecStart=
ExecStart=/lib/systemd/systemd-networkd-wait-online --interface=bond0 --quiet
Пустое ExecStart=
значение важно, потому что оно отключает «старую» команду. Вы можете проверить больше, чем на интерфейсе (посмотрите на помощь).