透過 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

警告:這可能會暴露安全風險。

相關內容