systemd-networkd falha ao iniciar ao inicializar pela rede via pxelinux

systemd-networkd falha ao iniciar ao inicializar pela rede via pxelinux

Criei um arquivo de link systemd para impor nomes persistentes de interface de rede para uma pilha de hosts inicializados em rede. Como o MAC varia entre as máquinas, preciso usar o caminho PCI para combinar a interface:

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

[Link]
Name=eth0

Isso funciona em uma VM ou em uma caixa física. No entanto, em um host netboot ele falha com a mensagem:

Failed at step NAMESPACE spawning /usr/lib/systemd/system/systemd-networkd: Invalid Argument

Tentei remover o arquivo do link e reiniciar, mas com o mesmo resultado. Portanto, não tem nada a ver com meu arquivo de link.

O host netboot é feito a partir do Centos 7.2.

Anteriormente, com o CentOS 6, usávamos uma regra de rede persistente no /etc/udev.rules, mas isso falha no CentOS 7.

Responder1

O Systemd possui várias opções que você pode definir no arquivo de unidade de um serviço para proteger diretórios específicos no sistema de arquivos. Isso é feito usando o namespace do sistema de arquivos.

Parece que esta funcionalidade não é suportada em um host inicializado por PXE, portanto, os serviços que a exigem não serão iniciados.

No caso do systemd-networkd, isso pode ser corrigido desativando todas as opções que exigem namespace.

Primeiro, crie uma cópia do arquivo de serviço. Os arquivos em /etc/systemdsubstituirão os padrões em /usr/lib/systemd:

cp /usr/lib/systemd/system/networkd-systemd.service /etc/systemd/systemd/

Agora edite /etc/systemd/system/systemd-networkd.service, removendo a proteção do namespace:

ProtectSystem=no
ProtectHome=no

Finalmente, reinicie o daemon:

systemctl restart networkd-systemd

Aviso: Isso pode expor riscos de segurança.

informação relacionada