- Вопрос или проблема
- Ответ или решение
- Решение проблемы с таймаутом службы systemd-networkd-wait-online во время загрузки
- 1. Анализ текущей конфигурации сети
- 2. Проверка конфигурации сети
- 3. Примечания о службе wait-online
- 4. Установка параметров для журнала
- 5. Настройка параметров ExecStart
- 6. Настройка приоритетов сетевых интерфейсов
- 7. Тестирование конфигурации
- Заключение
Вопрос или проблема
У меня уже довольно долго существует эта проблема, так что сегодня я попробовал предложение, которое нашел в интернете, запустив systemd-analyze plot
и проверив вывод.
Я прикрепляю SVG файл здесь, потому что, если я не ошибаюсь, есть только две вещи, которые загружаются абсурдно долго, одна из них systemd-networkd-wait-online
(конечно), но затем, странным образом, sendmail
, который я даже не использую на этом сервере, он находится в моей домашней сети и функционирует только как seedbox/media сервер.
Я что-то упускаю? Я отключил wlan
ранее, чтобы исключить эту возможность, так как это проводная машина и не нуждается в wlan
.
Я отключил 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. Тестирование конфигурации
После всех настроек проверьте работу конфигурации:
- Перезагрузите систему.
- Наблюдайте за загрузочными журналами и старайтесь следить за поведением интерфейса
eno1
.
Если после всех предпринятых шагов служба systemd-networkd-wait-online
продолжает вызывать проблемы, есть смысл рассмотреть возможность полной переустановки systemd-networkd
или даже выгрузку NetworkManager
, если он активен.
Заключение
Решение проблемы с таймаутом systemd-networkd-wait-online
требует тщательного анализа конфигурации, состояния интерфейсов и системы в целом. Убедитесь, что все параметры правильно настроены, и проводите тесты для выявления возможных неисправностей. Надеюсь, эти рекомендации помогут вам устранить проблему и улучшить время загрузки вашей системы.