pxelinux를 통해 네트워크 부팅 시 systemd-networkd가 시작되지 않습니다.

pxelinux를 통해 네트워크 부팅 시 systemd-networkd가 시작되지 않습니다.

네트워크 부팅 호스트 스택에 대해 지속적인 네트워크 인터페이스 이름 지정을 적용하기 위해 systemd 링크 파일을 만들었습니다. MAC은 시스템마다 다르기 때문에 인터페이스 일치를 위해 PCI 경로를 사용해야 합니다.

[Match]
Path=pci-0000:02:00.0-0

[Link]
Name=eth0

이는 VM 또는 물리적 상자에서 작동합니다. 그러나 netboot 호스트에서는 다음 메시지와 함께 실패합니다.

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

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

관련 정보