我创建了一个 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
警告:这可能会暴露安全风险。