¿Cómo regenerar 70-persistent-net.rules sin reiniciar?


14

El archivo /etc/udev/rules.d/70-persistent-net.rulesse genera automáticamente en un sistema Linux con udev, si no existe, durante el reinicio. Pero me gustaría saber cómo crear este archivo de reglas (con un comando) sin reiniciar el servidor.

Estuve buscando en Google por un tiempo y descubrí que el archivo de reglas es generado por este script:

/lib/udev/write_net_rules

Sin embargo, es imposible ejecutar este script desde la línea de comandos, ya que (supongo) quiere que lo inicie udev, con algunas variables de entorno configuradas correctamente. Al iniciarlo manualmente se imprime el mensaje de error "falta $ INTERFACE". Incluso si configuro la variable env INTERFACE = eth0 antes del inicio del script, todavía imprime el error "falta coincidencia válida". Sin mencionar que tengo dos interfaces ( eth0y eth1) y quiero que se genere el archivo de reglas para ambas.

También estaba pensando en desencadenar eventos udev como este, con la esperanza de que inicie el script desde udev, pero nada cambia:

udevadm trigger --type=devices --action=change

Entonces, ¿alguien sabe cómo regenerar las reglas de red persistentes en el archivo /etc/udev/rules.d/70-persistent-net.rulessin reiniciar?


¿Cuál es tu distribución? ¿Qué tipo de sistema init usa?
michas

1
Yo diría que eso es irrelevante. Estoy usando Slackware con eUdev y sysvinit. Estaba examinando los scripts de inicio para descubrir qué se ejecuta que genera el archivo de reglas, pero encontré solo el disparador udevadm, con un comentario de que este es el comando para generar las reglas persistentes, pero de alguna manera esto solo funciona en el reinicio, no efecto si lo ejecuto manualmente.
Tomas M

1
Puede ser relevante ya que yo, en Arch, no tengo 70-persistent-net.rulesni el /lib/udev/write_net_rulesguión. Por lo tanto, no puedo verificar, pero presumiblemente la $INTERFACEvariable se establece en el script en sí. Lo más probable es que se pase como argumento. ¿Puedes mostrarnos el contenido del guión?
terdon

El script simplemente usa $INTERFACEvariable. Hay muchas más variables simplemente utilizadas, nunca declaradas. Es porque lo llama udev, y udev establece todas las variables env antes de ejecutar el script en el arranque.
Tomas M

¿Realmente necesita saber cómo regenerarlo, o podría simplemente editar el archivo para reflejar la nueva realidad?
roaima

Respuestas:


5

Según la página del manual, --action=changeel valor predeterminado es udevadm.

   -c, --action=ACTION
       Type of event to be triggered. The default value is change.

Por lo tanto, es mejor que lo intentes --action=add. Debería ayudar:

/sbin/udevadm trigger --type=devices --action=add

intel_rapl: no se encontraron dominios rapl válidos en el paquete 0
Tiina

1

En Ubuntu Server 16.04LTS, el 70-persistent-net.rules no existe.

todo lo que hice fue correr:

ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules

Luego cree el archivo usando

sudo vi /etc/systemd/network/10-internet.link

y agregue lo siguiente

[Match] 
Path=pci-0000:(your device mac address)

[Link] 
Name=eth0 (or whatever you want to name it)

:wq para guardar el archivo

luego reinicie y ajuste su archivo / etc / network / interfaces. Luego reinicie nuevamente.


99
La pregunta es "¿Cómo regenerar 70-persistent-net.rules sin reiniciar? " Su respuesta contiene dos reinicios. ¿Cómo es esta una respuesta a la pregunta?
G-Man dice 'reinstalar a Monica' el

0

Tuve el mismo problema, pero noté que aún podía ver las interfaces en la ip addrlista. Usé lo siguiente (como root):

# ip addr # to get my mac addresses
# export INTERFACE=eth0; export MATCHADDR="xx:xx:xx:xx:xx:xx"; /lib/udev/write_net_rules
# replace the 00's with the real mac addr

Repita para cada interfaz. Esto se usó para "recuperar" mi archivo. (Nota: una invocación enumerará todas las interfaces + agregará un cambio de nombre para que coincida con una, por lo que le recomiendo que mire el archivo de salida después de una invocación)

Definitivamente hay diferencias entre las implementaciones de UDEV y los scripts de soporte de UDEV actuales. Para tener en cuenta, estaba usando CentOS 6.8 cuando hice esto con éxito.

Crédito: me referí principalmente a este sitio. Hay un comentario en algunos subprocesos que habla sobre la modificación del script, pero preferí usar variables de entorno ya que era más limpio: https://access.redhat.com/discussions/1240213


Mierda, espera. Lo siento, ese fue el comando que no funcionó. Necesito actualizar la respuesta con el paso que hice
gravy21

Ok, he actualizado a cómo realmente arreglé el mío. Espero que funcione si se aplica a su situación.
gravy21
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.