Я создал файл ссылки systemd для принудительного назначения имен постоянным сетевым интерфейсам для стека хостов, загружаемых через сеть. Поскольку MAC различается между машинами, мне приходится использовать путь PCI для сопоставления интерфейса:
[Match]
Path=pci-0000:02:00.0-0
[Link]
Name=eth0
Это работает в виртуальной машине или на физическом компьютере. Однако в хосте сетевой загрузки происходит сбой с сообщением:
Failed at step NAMESPACE spawning /usr/lib/systemd/system/systemd-networkd: Invalid Argument
Я пробовал удалить файл ссылки и перезагрузиться, но результат тот же. Так что это не имеет никакого отношения к моему файлу ссылки.
Хост сетевой загрузки создан на базе Centos 7.2.
Ранее, в CentOS 6, мы использовали постоянное сетевое правило в /etc/udev.rules
, но в CentOS 7 оно не работает.
решение1
Systemd имеет ряд опций, которые можно задать в файле юнита сервиса для защиты определенных каталогов в файловой системе. Это делается с помощью пространства имен файловой системы.
Похоже, что эта функция не поддерживается на хосте с загрузкой PXE, поэтому службы, которым она требуется, не запустятся.
В случае systemd-networkd это можно исправить, отключив все параметры, требующие пространства имен.
Сначала создайте копию файла службы. Файлы в /etc/systemd
заменят значения по умолчанию в /usr/lib/systemd
:
cp /usr/lib/systemd/system/networkd-systemd.service /etc/systemd/systemd/
Теперь отредактируйте /etc/systemd/system/systemd-networkd.service
, удалив защиту пространства имен:
ProtectSystem=no
ProtectHome=no
Наконец, перезапустите демон:
systemctl restart networkd-systemd
Предупреждение: это может подвергнуть риску безопасность.