Сервис systemd-networkd-wait-online истекает по времени во время загрузки.

Вопрос или проблема

У меня уже довольно долго существует эта проблема, так что сегодня я попробовал предложение, которое нашел в интернете, запустив systemd-analyze plot и проверив вывод.

Я прикрепляю SVG файл здесь, потому что, если я не ошибаюсь, есть только две вещи, которые загружаются абсурдно долго, одна из них systemd-networkd-wait-online (конечно), но затем, странным образом, sendmail, который я даже не использую на этом сервере, он находится в моей домашней сети и функционирует только как seedbox/media сервер.

Я что-то упускаю? Я отключил wlan ранее, чтобы исключить эту возможность, так как это проводная машина и не нуждается в wlan.

https://c0ld.net/slowboot.svg

Я отключил sendmail, перезагрузил, наблюдал за истечением времени, а затем запустил его снова, и теперь единственное, что занимает время, это то, что я пытаюсь исправить. Любая помощь будет признательна.

https://c0ld.net/slowboot-nosendmail.svg

Вот полный журнал: http://0x0.st/Xo36.txt

У него статический IP, он не подключен к Интернету, работает plex, bittorrent-nox, jellyfin и имеет несколько USB-накопителей, смонтированных при загрузке для хранения, и это все, что работает, кроме webmin и cockpit. У него установлена полная версия Ubuntu GNOME, но она не загружается при запуске, я просто хотел ее на всякий случай, если мне когда-либо понадобится использовать ее как резервный ПК.

Я действительно не хочу просто скрывать проблему, отключая службу. Я даже пробовал поменять renderer: networkd на renderer: NetworkManager в netplan

Хотел добавить, вывод networkctl

  1 lo     loopback carrier     unmanaged
  2 eno1   ether    routable    configured
  3 wlp1s0 wlan     off         unmanaged

3 links listed.

Так что здесь ничего странного.

У меня также есть optional: true под конфигурацией eno1 в netplan.

EDIT: Также пробовал добавлять –any и –interface=eno1, как указано ниже, и оба все еще имеют одинаковое время ожидания. https://ubuntuforums.org/showthread.php?t=2490962

Apr 21 15:15:16 jays-lenovo systemd[1]: Starting Wait for Network to be Configured...
░░ Subject: A start job for unit systemd-networkd-wait-online.service has begun execution
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ A start job for unit systemd-networkd-wait-online.service has begun execution.
░░
░░ The job identifier is 3886.
Apr 21 15:17:16 jays-lenovo systemd-networkd-wait-online[4967]: Timeout occurred while waiting for network connectivity.
Apr 21 15:17:16 jays-lenovo systemd[1]: systemd-networkd-wait-online.service: Main process exited, code=exited, status=1/FAILURE
░░ Subject: Unit process exited
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ An ExecStart= process belonging to unit systemd-networkd-wait-online.service has exited.
░░
░░ The process' exit code is 'exited' and its exit status is 1.
Apr 21 15:17:16 jays-lenovo systemd[1]: systemd-networkd-wait-online.service: Failed with result 'exit-code'.
░░ Subject: Unit failed
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ The unit systemd-networkd-wait-online.service has entered the 'failed' state with result 'exit-code'.
Apr 21 15:17:16 jays-lenovo systemd[1]: Failed to start Wait for Network to be Configured.
░░ Subject: A start job for unit systemd-networkd-wait-online.service has failed
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ A start job for unit systemd-networkd-wait-online.service has finished with a failure.
░░
░░ The job identifier is 3886 and the job result is failed.

Это было после перезапуска службы с –interface=eno1, которая определенно активна!!!!

Такой же проверкой для systemd-networkd.service

-- Boot 984031206640442cb02a40798ddf3b7f --
Apr 21 14:21:12 jays-lenovo systemd[1]: Starting Network Configuration...
░░ Subject: A start job for unit systemd-networkd.service has begun execution
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ A start job for unit systemd-networkd.service has begun execution.
░░
░░ The job identifier is 49.
Apr 21 14:21:12 jays-lenovo systemd-networkd[1178]: lo: Link UP
Apr 21 14:21:12 jays-lenovo systemd-networkd[1178]: lo: Gained carrier
Apr 21 14:21:12 jays-lenovo systemd-networkd[1178]: Enumeration completed
Apr 21 14:21:12 jays-lenovo systemd[1]: Started Network Configuration.
░░ Subject: A start job for unit systemd-networkd.service has finished successfully
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ A start job for unit systemd-networkd.service has finished successfully.
░░
░░ The job identifier is 49.
Apr 21 14:23:15 jays-lenovo systemd-networkd[1178]: eno1: Link UP
Apr 21 14:23:18 jays-lenovo systemd-networkd[1178]: eno1: Gained carrier
Apr 21 14:23:19 jays-lenovo systemd-networkd[1178]: eno1: Gained IPv6LL
Apr 21 14:51:50 jays-lenovo systemd-networkd[1178]: eno1: Re-configuring with /run/systemd/network/10-netplan-eno1.network
Apr 21 14:51:51 jays-lenovo systemd-networkd[1178]: eno1: Re-configuring with /run/systemd/network/10-netplan-eno1.network
Apr 21 14:51:51 jays-lenovo systemd-networkd[1178]: eno1: DHCPv6 lease lost
Apr 21 14:52:23 jays-lenovo systemd[1]: Stopping Network Configuration...
░░ Subject: A stop job for unit systemd-networkd.service has begun execution
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ A stop job for unit systemd-networkd.service has begun execution.
░░
░░ The job identifier is 4966.
Apr 21 14:52:23 jays-lenovo systemd-networkd[1178]: eno1: DHCPv6 lease lost
Apr 21 14:52:23 jays-lenovo systemd[1]: systemd-networkd.service: Deactivated successfully.
░░ Subject: Unit succeeded
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ The unit systemd-networkd.service has successfully entered the 'dead' state.
Apr 21 14:52:23 jays-lenovo systemd[1]: Stopped Network Configuration.
░░ Subject: A stop job for unit systemd-networkd.service has finished
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ A stop job for unit systemd-networkd.service has finished.
░░
░░ The job identifier is 4966 and the job result is done.
-- Boot dc2cb94cb1f649c49648ba8e085192db --
Apr 21 14:53:19 jays-lenovo systemd[1]: Starting Network Configuration...
░░ Subject: A start job for unit systemd-networkd.service has begun execution
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ A start job for unit systemd-networkd.service has begun execution.
░░
░░ The job identifier is 25.
Apr 21 14:53:19 jays-lenovo systemd-networkd[1172]: lo: Link UP
Apr 21 14:53:19 jays-lenovo systemd-networkd[1172]: lo: Gained carrier
Apr 21 14:53:19 jays-lenovo systemd-networkd[1172]: Enumeration completed
Apr 21 14:53:19 jays-lenovo systemd[1]: Started Network Configuration.
░░ Subject: A start job for unit systemd-networkd.service has finished successfully
░░ Defined-By: systemd
░░ Support: http://www.ubuntu.com/support
░░
░░ A start job for unit systemd-networkd.service has finished successfully.
░░
░░ The job identifier is 25.
Apr 21 14:53:19 jays-lenovo systemd-networkd[1172]: eno1: Link UP
Apr 21 14:53:22 jays-lenovo systemd-networkd[1172]: eno1: Gained carrier
Apr 21 14:53:24 jays-lenovo systemd-networkd[1172]: eno1: Gained IPv6LL
Apr 21 15:26:32 jays-lenovo systemd-networkd[1172]: eno1: Re-configuring with /run/systemd/network/10-netplan-eno1.network
Apr 21 15:26:32 jays-lenovo systemd-networkd[1172]: eno1: DHCPv6 lease lost
Apr 21 15:26:32 jays-lenovo systemd-networkd[1172]: eno1: Re-configuring with /run/systemd/network/10-netplan-eno1.network
Apr 21 15:26:32 jays-lenovo systemd-networkd[1172]: eno1: DHCPv6 lease lost

Полный https://c0ld.net/dmesg.html доступен здесь. Я не знаю, что еще попробовать на этом этапе, я изучил интернет.

eno1 также настроен как статический IP, так что нет смысла, что ему требуется больше времени для доступности, чем меньше.

192.168.2.1 – это основной маршрутизатор для всего моего домохозяйства с несколькими различными маршрутизаторами и десятками устройств, ни одно другое устройство не имеет проблем.

# Это конфигурация сети, написанная 'subiquity'
network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      optional: false
      addresses:
        - 192.168.2.99/24
      nameservers:
        addresses: [192.168.2.1]
      routes:
        - to: default
          via: 192.168.2.1

Такой тип ошибки также присутствует на новой установке Ubuntu Server 24.04 LTS, если у вас есть не подключенный интерфейс Ethernet. Принято поставлять серверное оборудование с несколькими Ethernet-портами. Вот, например, вывод одного из моих серверов 1U:

networkctl
IDX LINK     TYPE     OPERATIONAL SETUP
  1 lo       loopback carrier     unmanaged
  2 enp4s0f0 ether    routable    configured
  3 enp4s0f1 ether    no-carrier  configuring

3 links listed.

Как видите, networkd недостаточно умен, чтобы увидеть, что интерфейс без сигнала не подключен и, следовательно, не может завершить конфигурацию DHCP, и будет продолжать пытаться использовать DHCP для запроса IP.

Я оставляю это так и терплю дополнительные 2 минуты задержки загрузки, потому что всегда есть вероятность, что в будущем первый Ethernet-порт выйдет из строя, и мне придется физически переместить Ethernet-кабель во второй порт, если это произойдет, то второй порт сразу же получит IP-адрес.

В результате случайной активации как NetworkManager, так и systemd-networkd на моей системе (которая прошла через множество циклов обновления и множество установок и удалений пакетов для различных вещей) была причиной зависания у меня. Ответ на то, как это проверить и выбрать один из двух, можно найти по https://askubuntu.com/a/1501504/209431.

Что исправило ситуацию для меня, так это запуск команды, содержащейся в файле systemd-networkd-wait-online.service, и позволение ей завершиться. После завершения она теперь всегда завершается мгновенно. Служба всегда истекала, не дав ей завершиться прежде.

sudo nano /etc/systemd/system/systemd-networkd-wait-online.service

Я взял строку для ExecStart и запустил ее в терминале отдельно.

У меня это выглядело так:

ExecStart=/lib/systemd/systemd-networkd-wait-online

И я выполнил следующее в терминале:

/lib/systemd/systemd-networkd-wait-online

И я позволил ей завершиться один раз, вместо того чтобы позволять службе истечь и убивать ее. Теперь это работает идеально каждый раз, когда я или служба ее запускаем.

После прочтения всех ответов я начал думать и мне кажется, я решил эту проблему. У меня есть 3 интерфейса (один из которых – hp ilo):

    IDX LINK        TYPE     OPERATIONAL SETUP      
  1 lo          loopback carrier     unmanaged
  2 eno1        ether    routable    configured 
  3 eno2        ether    no-carrier  configuring
  4 docker0     bridge   routable    unmanaged
 64 veth0653007 ether    degraded    unmanaged

Я создал 2 файла конфигурации сети для обоих интерфейсов eno, чтобы установить приоритеты:

sudo nano /etc/systemd/network/20-wired-first.network
sudo nano /etc/systemd/network/30-wired-second.network

Первая конфигурация:

[Match]
Name=eno1

[Network]
DHCP=yes

[DHCP]
RouteMetric=10

Вторая конфигурация:

[Match]
Name=eno2

[Network]
DHCP=yes

[DHCP]
RouteMetric=20

Затем я обновил (проклятую) службу:

sudo nano /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service


[Service]
    Type=oneshot
    ExecStart=/lib/systemd/systemd-networkd-wait-online --interface=eno1
    RemainAfterExit=yes

Затем я перезапустил службы:

sudo systemctl restart systemd-networkd
sudo systemctl restart systemd-networkd-wait-online

Теперь без конфигурационных файлов интерфейсы не имели необходимой приоритизации, так как ExecStart только указывает systemd, на каком интерфейсе ожидать, и не настраивает, как они должны работать.

Я видел 2 варианта здесь: 1 – сохранить параметр ExecStart для загрузки и сохранить .network файлы 2 – отключить wait-online.

Ответ или решение

Решение проблемы с таймаутом службы systemd-networkd-wait-online во время загрузки

Проблема таймаута службы systemd-networkd-wait-online во время загрузки может быть довольно распространенной, особенно на серверах и системах с несколькими сетевыми интерфейсами. Рассмотрим несколько шагов для диагностики и решения данной проблемы.

1. Анализ текущей конфигурации сети

Из предоставленных данных видно, что ваша система использует службу systemd-networkd для управления сетевыми интерфейсами. Прежде всего, вам следует убедиться, что сетевые интерфейсы правильно настроены и находятся в нужном состоянии во время загрузки. Используйте команду networkctl для проверки статуса интерфейсов:

networkctl

Ваши данные показывают, что интерфейс eno1 успешно настроен, а интерфейс wlp1s0 отключен. Однако важно отметить, что если у вас есть дополнительные интерфейсы, которые могут оставаться в состоянии "не подключен" или "настраивается", это может потребовать дополнительной настройки.

2. Проверка конфигурации сети

Убедитесь, что ваша конфигурация в Netplan или в соответствующих файлах конфигурации systemd-networkd (например, /etc/systemd/network/*.network) содержит правильные параметры. Например, важно убедиться, что для eno1 установлено:

eno1:
  optional: false

Установка optional: false указывает системе не продолжать загрузку, пока интерфейс не будет настроен. Обратите внимание на параметры addresses, nameservers и routes, так как неверные параметры могут вызвать задержку во время попытки получить IP-адрес.

3. Примечания о службе wait-online

systemd-networkd-wait-online отвечает за ожидание, пока сеть не станет доступной. Если интерфейс eno1 настроен на использование DHCP, но по какой-либо причине не может получить IP-адрес (например, если DHCP-сервер недоступен), это может вызвать таймаут службы. В случае статической настройки убедитесь, что все параметры заданы правильно, и попробуйте использовать следующую команду:

sudo systemctl restart systemd-networkd
sudo systemctl restart systemd-networkd-wait-online

4. Установка параметров для журнала

Вы можете настроить журнал для более детального отслеживания процесса:

sudo systemctl status systemd-networkd-wait-online.service
sudo journalctl -u systemd-networkd-wait-online.service

Эти команды помогут выявить подробные сообщения об ошибках или предупреждениях, которые могут помочь понять, что именно вызывает таймаут.

5. Настройка параметров ExecStart

Как вы уже упомянули, можно изменить параметры запуска для службы systemd-networkd-wait-online в файле /etc/systemd/system/systemd-networkd-wait-online.service или с помощью создания пользовательской конфигурации. Например, добавление записи для ожидания конкретного интерфейса:

[Service]
ExecStart=/lib/systemd/systemd-networkd-wait-online --interface=eno1

6. Настройка приоритетов сетевых интерфейсов

Если у вас есть несколько интерфейсов, подумайте о назначении приоритетов для каждого из них так, чтобы система могла корректно обрабатывать их во время загрузки. Для этого можно использовать параметры RouteMetric в соответствующих файлах конфигурации сети.

7. Тестирование конфигурации

После всех настроек проверьте работу конфигурации:

  1. Перезагрузите систему.
  2. Наблюдайте за загрузочными журналами и старайтесь следить за поведением интерфейса eno1.

Если после всех предпринятых шагов служба systemd-networkd-wait-online продолжает вызывать проблемы, есть смысл рассмотреть возможность полной переустановки systemd-networkd или даже выгрузку NetworkManager, если он активен.

Заключение

Решение проблемы с таймаутом systemd-networkd-wait-online требует тщательного анализа конфигурации, состояния интерфейсов и системы в целом. Убедитесь, что все параметры правильно настроены, и проводите тесты для выявления возможных неисправностей. Надеюсь, эти рекомендации помогут вам устранить проблему и улучшить время загрузки вашей системы.

Оцените материал
Добавить комментарий

Капча загружается...