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.rulesCentOS 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

경고: 이로 인해 보안 위험이 노출될 수 있습니다.

관련 정보