¿Cuál es la forma correcta de reiniciar udev?

46

He cambiado el nombre de mi eth1interfaz a eth0. ¿Cómo pedir udevahora volver a leer la configuración?

service udev restart

y

udevadm control --reload-rules

no ayudes Entonces, ¿hay alguna forma válida, excepto reiniciar? (sí, reiniciar ayuda con este problema)

  • sí, sé que debería anteponer los comandos sudo, pero cualquiera de los que publiqué arriba no cambia nada en la ifconfig -asalida: todavía veo eth1, no eth0.

  • Acabo de cambiar la NAMEpropiedad de la línea udev-rule. No conozco ninguna razón para que esto sea ineficaz.

No hay ningún error en la ejecución de los dos comandos que he publicado anteriormente, pero simplemente no cambian el nombre real de la interfaz en la ifconfig -asalida. Si realizo el reinicio, el nombre de la interfaz cambia como se esperaba.

Para fines de desarrollo, escribo algunos scripts que clonan máquinas virtuales (controladas por VirtualBox) y las configuran de alguna manera.

Por lo tanto, ejecuto un comando para clonar VM, iniciarlo y siempre que cambie la MAC de la interfaz de red, udevagrega la segunda regla a las reglas persistentes de red. Inmediatamente después de arrancar la máquina por primera vez, hay 2 reglas:

  • eth0, que no existe, siempre y cuando existiera en la imagen de VM original MAC
  • eth1, que existe, pero toda la configuración en todos los archivos hace referencia eth0, por lo que no es tan bueno para mí

Entonces sedelimino la línea con eth0(es obsoleta e inútil en la imagen clonada) y la reemplazo eth1con eth0. Así que tengo actualmente regla persistente válido, pero todavía hay eth1en /dev.

El problema: no quiero reiniciar la máquina (tomará otro tiempo, lo que no es bueno en la etapa de construcción de VM) y solo quiero /devreconstruir mi con algún comando, así que tengo una VM lista para usar sin reinicios.

zerkms
fuente
¿Cómo se cambia eth1a eth0? ¿Acabas de cambiar el nombre del archivo del dispositivo? Si es así, esa no es una forma efectiva de hacerlo (y debe esperar que el cambio se revierta con un reinicio exitoso del udevdemonio). Si usó algún otro método, descríbalo en detalle y también proporcione el texto completo y exacto de cualquier mensaje de error que vea cuando ejecute los comandos que ha intentado (para reiniciar el udevdemonio o volver a cargar sus reglas). Puede editar su pregunta para proporcionar esta información.
Eliah Kagan
@Eliah Kagan: actualizada. ps: ¿por qué debería revertirse? No debería ;-)
zerkms
udevgenera dinámicamente sus dispositivos en /dev. Si lo reinicia, los regenerará de acuerdo con sus reglas. Los cambios realizados directamente a ellos no son, en general, persistentes. Parece que reiniciar udevfunciona bien, pero que simplemente no ha cambiado correctamente los nombres de los dispositivos.
Eliah Kagan el
@Eliah Kagan: udev solo agrega (no modifica) nuevas reglas si no puede encontrar una para un dispositivo en particular. Si hay una regla que coincide, simplemente la sigue sin modificaciones.
zerkms
@Eliah Kagan: y lo cambié correctamente. Solo creo que puedo cambiar un personaje en una línea ;-) (también reiniciar helpes, y esto prueba que todo está bien con las reglas)
zerkms

Respuestas:

29

No sé si esto ayuda a recargar la configuración de la red, pero cuando modifiqué /etc/udev/rules.d/70-persistent-cd.rulespara corregir el enlace del dispositivo DVD de /dev/dvd1a /dev/dvd, tuve que ejecutar

sudo udevadm trigger

para tener los nuevos enlaces creados.

akaihola
fuente
3
Creo que sudo udevadm trigger --action=changees más seguro, según este correo electrónico sobre lo que es seguro y lo que no es seguro hacer udev: lists.ubuntu.com/archives/ubuntu-devel/2009-January/027260.html
Ehtesh Choudhury
De hecho, y se llama/etc/udev/rules.d/70-persistent-net.rules
msanford
En Ubuntu 15.04 udevadm triggerbloqueé mi sesión X11 y me devolvió a mi pantalla de inicio de sesión.
Ian D. Allen
20

Debe combinar todos los consejos que se dan aquí en el orden correcto:

  1. Derribar la red service networking stop
  2. Descargue el módulo del controlador del núcleo
    1. Encuentre el nombre del módulo lspci -vy busque "Kernel driver in use:"
    2. modprobe -r <driver module>
  3. Recargar las reglas de udev udevadm control --reload-rules
  4. Activa las nuevas reglas udevadm trigger
  5. Controlador de carga modprobe <driver module>
  6. Reiniciar la red service networking start
  7. (opcional) Vuelva a ejecutar las iptablessecuencias de comandos que hacen referencia al ethnombre de la interfaz antes de que se activara.

Sospecho que el paso 4 o el paso 5 no son realmente necesarios, pero estos pasos funcionaron para mí. Puede verificar después del paso 4 con el paso 2.1 para ver si el comando de disparo ya hizo el paso 5, edite esta respuesta para reflejar sus hallazgos si lo hace.

Chris Wesseling
fuente
1
Ubuntu 15.04 con todos los dispositivos enumerados /etc/network/interfaces(por lo que Network Manager los deja solos): todo lo que necesitaba hacer era editar y /etc/udev/rules.d/70-persistent-net.rulesluego hacer # 2, # 3, # 5. No es necesario detener todas las redes; No hay necesidad de nada más.
Ian D. Allen
5

Tuve un problema similar. Como no quería tomarme el tiempo para reiniciar, utilicé una sugerencia utilizando la sugerencia de Chris Wesseling.

/etc/init.d/networking stop && modprobe -r tg3 && udevadm control --reload-rules && udevadm trigger && modprobe tg3 && /etc/init.d/networking start

Esto funcionó para mí usando el servidor Ubuntu 12.04.02. Mis nics estaban usando el controlador del módulo de kernel tg3, así que cambie tg3 al módulo que están usando sus interfaces. Encontré los que usaba el mío /etc/udev/rules.d/70-persistent-net.rules:

Dispositivo PCI 0x14e4: / sys / devices / pci0000: 00/0000: 00: 1c.4 / 0000: 02: 00.1 (tg3) <-controlador de módulo de núcleo para el nic

El único problema que tuve fue una mala ruta que solucioné con un simple comando de agregar ruta. Gracias por la ayuda Chris!

usuario197674
fuente
3

sudo /etc/init.d/udev restartdebería hacer el truco. Algunos de los comandos que había probado, si se ejecutaban sudo, también podrían ser efectivos.

Eliah Kagan
fuente
No, ifconfig -atodavía me muestra la eth1interfaz anterior
zerkms
3

Esto debería hacerlo de manera segura:

sudo reload udev

Como he usado este comando sin problemas.

rdh
fuente
No, ifconfig -atodavía me muestra la eth1interfaz anterior
zerkms
1

He estado investigando esto por un tiempo con el mismo propósito, y no he podido encontrar una manera de cambiar el nombre de la interfaz de red en un sistema en vivo.

La solución que he seguido es eliminar el archivo /etc/udev/rules.d/70-persistent-net.rules en la plantilla, lo que significa que en el próximo inicio verá cualquier tarjeta de red como eth0.

Merlijn
fuente
1

Debe volver a cargar udev para activar el cambio de regla, pero el dispositivo no cambiará de nombre a menos que descargue / vuelva a cargar el módulo del controlador.

Entonces, modprobe -r e1000 && modprobe e1000después de udev reload debería hacer el truco. Por supuesto, no haga eso si necesita la red y solo tiene interfaces e1000.

nodens
fuente
0

Entonces, para mí en VirtualBox con Ubuntu 12.04, a menudo cambio entre ethernet e inalámbrico.

Entonces, cuando cambie mi conexión, debo elegir el adaptador en puente de Dispositivos> Configuración de red. Ya sea 'Intel 82579LM Gigabit Network Connection' o 'Intel Centrino Ultimate-N 6300 AGN'.

Después de hacer esto, puedo correr

sudo modprobe -r e1000
sudo service udev restart
sudo modprobe e1000
ping google.com # To test I ran this between each command.

Esto es solo una explicación de mis resultados después de leer todas las respuestas anteriores.

Derek Robati
fuente