web-dev-qa-db-fra.com

Comment modifier les règles udev sans redémarrer (par exemple, changer eth1 en eth0)?

TLDR; Comment appliquer les modifications à /etc/udev/rules.d/70-persistent-net.rules sans redémarrer? (Voir cette documentation à propos des noms logiques d'interface Ethernet.)

Version longue:

J'ai un lecteur flash USB amorçable exécutant une image créée par remastersys sur 11.04. Je veux pouvoir utiliser ce lecteur USB amorçable pour exécuter un serveur DHCP à partir de n'importe quel ordinateur. Pour ce faire, je dois attribuer une adresse IP statique à eth0 dans /etc/network/interfaces et à la référence eth0 dans /etc/default/isc-dhcp-server.

Cependant, la carte réseau est assignée ethX en fonction de l’adresse MAC. Cela ne fonctionne donc que sur le premier ordinateur sur lequel le lecteur flash USB est utilisé. Le NIC de chaque ordinateur suivant sera attribué à eth1, eth1, etc.

Il semble que deux stratégies pourraient résoudre ce problème:

  1. Réécrivez dynamiquement /etc/network/interfaces et /etc/default/isc-dhcp-server en vous basant sur le premier ethX qui apparaît lorsque vous exécutez ifconfig - il doit s'agir de ce que NIC est réellement dans l'ordinateur.
  2. Réécrivez /etc/udev/rules.d/70-persistent-net.rules de sorte que l'adresse MAC attribuée à la NIC soit nommée eth0.

Je sais que je peux le faire # 1 car les modifications apportées à ces fichiers peuvent être appliquées en redémarrant networking et isc-dhcp-server.

Cependant, le n ° 2 me semble plus propre, car je pense que le /etc/udev/rules.d/70-persistent-net.rules accumulera un tas de choses crud car ce lecteur USB est utilisé sur différents ordinateurs.

Toute aide serait appréciée.

4
Max Masnick

J'ai finalement opté pour l'option n ° 1 (réécriture dynamique des différents fichiers de configuration nécessitant ethX). Cela était facile à faire avec un simple script Ruby.

Si le script effectuant la réécriture dynamique est startup.rb, j'ai créé un wrapper appelé startup-wrapper.rb qui appelle le script réel avec exec 'Sudo startup.rb' afin que startup.rb s'exécute avec les autorisations root.

J'ai ensuite créé une entrée dans les applications de démarrage avec la commande suivante: gnome-terminal -e /path/to/startup-wrapper.rb. Cela demandera à l'utilisateur son mot de passe pour le Sudo au démarrage.

0
Max Masnick