systemd-networkd no se inicia cuando la red arranca a través de pxelinux

systemd-networkd no se inicia cuando la red arranca a través de pxelinux

Creé un archivo de enlace systemd para aplicar nombres de interfaz de red persistentes para una pila de hosts iniciados en la red. Debido a que la MAC varía entre máquinas, tengo que usar la ruta PCI para hacer coincidir la interfaz:

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

[Link]
Name=eth0

Esto funciona en una máquina virtual o en una caja física. Sin embargo, en un host netboot falla con el mensaje:

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

Intenté eliminar el archivo de enlace y reiniciar, pero obtuve el mismo resultado. Entonces no tiene nada que ver con mi archivo de enlace.

El host de arranque de red está creado a partir de Centos 7.2.

Anteriormente, con CentOS 6, usábamos una regla de red persistente en /etc/udev.rules, pero falla en CentOS 7.

Respuesta1

Systemd tiene una serie de opciones que puede configurar en el archivo de unidad de un servicio para proteger directorios específicos en el sistema de archivos. Esto se hace utilizando el espacio de nombres del sistema de archivos.

Parece que esta funcionalidad no es compatible con un host iniciado con PXE, por lo que los servicios que la requieren no podrán iniciarse.

En el caso de systemd-networkd, esto se puede solucionar desactivando todas las opciones que requieren espacio de nombres.

Primero, cree una copia del archivo de servicio. Los archivos en /etc/systemdanularán los valores predeterminados en /usr/lib/systemd:

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

Ahora edite /etc/systemd/system/systemd-networkd.service, eliminando la protección del espacio de nombres:

ProtectSystem=no
ProtectHome=no

Finalmente, reinicie el demonio:

systemctl restart networkd-systemd

Advertencia: Esto puede exponer riesgos de seguridad.

información relacionada