web-dev-qa-db-fra.com

Quelle est la bonne façon de redémarrer udev?

J'ai changé le nom de mon interface eth1 en eth0. Comment demander maintenant à udevde relire la configuration?

service udev restart

et

udevadm control --reload-rules

n'aide pas. Alors, y a-t-il un moyen valable, sauf de redémarrer? (oui, le redémarrage aide à résoudre ce problème)

  • oui, je sais que je devrais ajouter les commandes avec Sudoname__, mais l’une ou l’autre que j’ai postée ci-dessus ne change rien à la sortie de ifconfig -a: Je vois toujours eth1, pas eth0.

  • Je viens de changer la propriété NAMEde la ligne udev-rule. Je ne connais aucune raison pour que cela soit inefficace.

Il n'y a aucune erreur dans l'exécution des deux commandes que j'ai postées ci-dessus, mais elles ne changent tout simplement pas le nom de l'interface réelle dans la sortie ifconfig -a. Si j'effectue un redémarrage, le nom de l'interface change comme prévu.

À des fins de développement, j'écris un script qui clone des machines virtuelles (pilotées par VirtualBox) et les pré-configure en quelque sorte.

J'exécute donc une commande pour cloner la machine virtuelle, la démarrer et tant que l'interface MAC du réseau est modifiée - udevajoute la deuxième règle aux règles persistantes du réseau. Juste après le démarrage de la machine pour la première fois, il y a 2 règles:

  • eth0, qui n'existe pas, tant qu'il existait dans le MAC d'origine VM.
  • eth1, qui existe, mais toute la configuration dans tous les fichiers fait référence à eth0, donc ce n'est pas très bon pour moi

Donc, avec sedname__, je supprime la ligne avec eth0 (elle est obsolète et inutile dans une image clonée) et je remplace eth1 par eth0. Donc, actuellement, j'ai une règle persistante valide, mais il reste toujours eth1 dans /dev.

Le problème: je ne veux pas redémarrer la machine (cela prendra un autre temps, ce qui n’est pas une bonne chose sous building-VM-stage) et je veux juste que mon /dev soit reconstruit avec une commande afin que je sois prêt à l’emploi VM sans redémarrage.

46
zerkms

Je ne sais pas si cela aide à recharger la configuration réseau, mais lorsque j'ai modifié /etc/udev/rules.d/70-persistent-cd.rules pour corriger le lien de périphérique DVD de /dev/dvd1 à /dev/dvd, je devais exécuter

Sudo udevadm trigger

pour avoir les nouveaux liens créés.

29
akaihola

Vous devez combiner tous les conseils donnés ici dans le bon ordre:

  1. Arrêtez le réseau service networking stop
  2. Déchargez le module de pilote du noyau
    1. Recherchez le nom du module lspci -v et recherchez "Pilote du noyau utilisé:"
    2. modprobe -r <driver module>
  3. Recharger les règles udev udevadm control --reload-rules
  4. Déclenchez les nouvelles règles udevadm trigger
  5. Charger le pilote modprobe <driver module>
  6. Redémarrez le réseau service networking start
  7. (facultatif) Ré-exécutez tous les scripts iptables qui ont référencé le eth nom de l'interface avant sa mise en service.

Je pense que les étapes 4 et 5 ne sont pas vraiment nécessaires, mais ces étapes ont fonctionné pour moi. Vous pouvez vérifier, après l’étape 4 et l’étape 2.1, si la commande de déclenchement a déjà exécuté l’étape 5, éditez cette réponse pour refléter vos conclusions, le cas échéant.

20
Chris Wesseling

J'avais un problème similaire. Comme je ne voulais pas prendre le temps de redémarrer, j’ai utilisé une seule ligne en utilisant la suggestion de Chris Wesseling.

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

Cela a fonctionné pour moi en utilisant le serveur Ubuntu 12.04.02. Mes nics utilisaient le pilote de module de noyau tg3, changez donc tg3 pour le module utilisé par vos interfaces. J'ai trouvé ceux que j'ai utilisés dans /etc/udev/rules.d/70-persistent-net.rules:

Périphérique PCI 0x14e4:/sys/devices/pci0000: 00/0000: 00: 1c.4/0000: 02: 00.1 (tg3) <pilote du module de noyau pour le nic

Le seul problème que je rencontrais était un mauvais itinéraire que j'ai corrigé avec une simple commande add route. Merci pour l'aide Chris!

5
user197674

Cela a fonctionné pour moi (sans redémarrer)

udevadm control --reload-rules ; udevadm trigger

Félicitations à l'auteur de cette page: http://memoryfail.wordpress.com/2013/04/02/renaming-network-device-names/

4
pikmaster

Sudo /etc/init.d/udev restart devrait faire l'affaire. Certaines des commandes que vous avez essayées, si elles sont exécutées avec Sudo, peuvent également être efficaces.

3
Eliah Kagan

Cela devrait le faire en toute sécurité:

Sudo reload udev

Comme j'ai utilisé cette commande sans aucun problème.

3
rdh

Je fais des recherches à ce sujet depuis un certain temps avec à peu près le même but, et je n’ai pas trouvé le moyen de changer le nom de l’interface réseau dans un système actif.

La solution de contournement que j'ai choisie consiste à supprimer le fichier /etc/udev/rules.d/70-persistent-net.rules dans le modèle, ce qui signifie qu'au prochain démarrage, toute carte réseau sera identifiée par eth0.

1
Merlijn

Vous devez recharger dev pour déclencher la modification de la règle, mais le périphérique ne sera renommé que si vous déchargez/rechargez le module du pilote.

Donc, modprobe -r e1000 && modprobe e1000 après le rechargement de udev devrait faire l'affaire. Bien sûr, ne le faites pas si vous avez besoin du réseau et que vous n’avez que des interfaces e1000.

1
nodens

Donc, pour moi sur VirtualBox avec Ubuntu 12.04, je bascule souvent entre Ethernet et sans fil.

Ainsi, lorsque ma connexion change, je dois choisir la carte pontée dans Périphériques> Paramètres réseau. Soit 'Connexion réseau Intel 82579LM Gigabit' ou 'Intel Centrino Ultimate-N 6300 AGN'.

Après cela, je peux courir

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

Ceci est juste une explication de mes résultats après avoir lu toutes les réponses ci-dessus.

0
Derek Robati
udevadm trigger 

cela fonctionnera entrez la description du lien ici

0
zhou yunjian