通过 pxelinux 网络启动时 systemd-networkd 无法启动

通过 pxelinux 网络启动时 systemd-networkd 无法启动

我创建了一个 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

我尝试删除链接文件并重新启动,但结果相同。所以它与我的链接文件无关。

netboot主机是由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

警告:这可能会暴露安全风险。

相关内容