systemd: когда во время загрузки создаются устройства сетевого интерфейса

I ' m пытается создать настраиваемую службу управления сетью для образа сетевой загрузки CentOS 7 . Служба получает список всех интерфейсов на хосте, находит тот, у которого есть физическое соединение, а затем использует его для получения конфигурации DHCP.

Проблема заключается в том, чтобы убедиться, что он запускается после того, как все сетевые устройства существуют в системе, чтобы он мог получить их список. Вот мой файл модуля:

[Unit]
Description=Configure networking
Wants=network.target
After=network-pre.target
Before=network.target multi-user.target

[Service]
ExecStart=/usr/local/bin/netboot-cfg
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Как видите, он запускается после цели network-pre и до цели network . Я подтвердил это с помощью графика systemd-analysis . Однако он не может найти какие-либо интерфейсы в системе на этом этапе процесса загрузки. Список создается путем просмотра каталога / sys / class / net . Файл sys-subsystem-net-devices- . устройства запускаются позже, и я предполагаю, что они заполняют этот каталог.

Мне кажется странным, что блоки сетевых устройств начинаются после network.target .

Итак, вопрос: как я могу надежно определить, когда все интерфейсы будут доступны, используя синтаксис файла systemd unit?

0
задан 28 March 2017 в 20:43
1 ответ

Мне кажется странным, что сетевые устройства начинают работать после network.target.

Итак, вопрос в том, как я могу надёжно определить, когда все интерфейсы будут доступны, используя синтаксис файловых файлов системных устройств?

На часть этого вопроса отвечает этот поток Unix SE.

В основном, согласно документации для network.target:

  • network.target гарантирует только то, что сетевой стек поднят:

    указывает только на то, что стек сетевого управления поднят после его достижения. Не определено, настроены ли уже какие-либо сетевые интерфейсы при достижении.

  • network-online.target

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

Так что, возможно, вы захотите скорректировать свои требования, чтобы отразить это: Я думаю, что вы захотите запустить ваш скрипт After=network.target, но Before=network-online.target.

1
ответ дан 4 December 2019 в 16:19

Теги

Похожие вопросы