Das erneute Laden von udev-Regeln schlägt fehl

8388
Null_Fragment

Ich habe meine Regeln in /etc/udev/rules.d (Ubuntu) geändert, um die Ethernet-Portnamen von 0 in 1 und 1 in 2 zu ändern.

 sudo service udev restart sudo udevadm control --reload-rules 

meine Ethernet-Port-Nummern werden erst nach einem Neustart aktualisiert.

Dies ist offensichtlich kein Problem für einen normalen Computer. Allerdings muss ich diese Idee in eine Live-CD (Knoppix) implementieren, um die Ethernet-Ports auf mehreren Systemen zu testen, die jeweils einen unterschiedlichen Kernel benötigen, der auf bestimmte Ethernet-Ports eingestellt ist, damit meine Skripts funktionieren Die einzige Möglichkeit, die ich gefunden habe, war die Verwendung der udev-Regeln. Dies ist jedoch nicht ohne weiteres möglich, da die Regeln erst nach einem Neustart aktualisiert werden.

Gibt es jemanden, der eine Möglichkeit hat, diese Ports zu ändern, ohne die Maschine neu zu starten?

2

2 Antworten auf die Frage

1
grawity

Regeln werden nur angewendet, wenn ein Gerät angeschlossen ist. Versuchen Sie udevadm trigger, Regeln erneut auf alle Geräte anzuwenden.


Zitat aus der Handbuchseite von udevadm:

- Regeln zum Laden

Udevd signalisieren, die Regeldateien neu zu laden. Der udev-Dämon erkennt Änderungen automatisch . Diese Option ist normalerweise nicht erforderlich. Durch das Laden von Regeln werden keine Änderungen an bereits vorhandenen Geräten vorgenommen .

0
Ambroz Bizjak

Durch das erneute Laden der Regeln wird nur sichergestellt, dass das Gerät bei der nächsten Erkennung korrekt benannt wird. Sie müssen den Netzwerkschnittstellentreiber (Kernel-Modul) entladen und erneut laden.

Wenn es sich bei dem Treiber um ein Kernelmodul handelt, ermitteln Sie den Namen des Moduls und laden Sie ihn erneut (wahrscheinlich, wenn Sie den Kernel nicht selbst konfiguriert haben). Beachten Sie, dass dadurch alle Schnittstellen mit diesem Treiber heruntergefahren werden (oder siehe unten):

# ls -l /sys/class/net/eth0/device/driver lrwxrwxrwx 1 root root 0 Jul 18 19:18 /sys/class/net/eth0/device/driver -> ../../../../bus/pci/drivers/atl1c # rmmod atl1c # modprobe atl1c 

Wenn der Treiber jedoch eingebaut ist, ist es ein bisschen mehr Arbeit. Sie haben sowohl den Treibernamen als auch die PCI-ID ermittelt, den Treiber anweisen, sich vom Gerät zu lösen, und ihn zurückbinden.

# ls -l /sys/class/net/eth0/device lrwxrwxrwx 1 root root 0 Jul 18 19:18 /sys/class/net/eth0/device -> ../../../0000:06:00.0 # ls -l /sys/class/net/eth0/device/driver lrwxrwxrwx 1 root root 0 Jul 18 20:41 /sys/class/net/eth0/device/driver -> ../../../../bus/pci/drivers/atl1c # echo 0000:06:00.0 > /sys/bus/pci/drivers/atl1c/unbind # echo 0000:06:00.0 > /sys/bus/pci/drivers/atl1c/bind 
Danke für die Antwort. Ich habe nie darüber nachgedacht, Rmmod zu benutzen. Ich nehme an, ich werde alle anderen Ausgaben hier veröffentlichen. Null_Fragment vor 12 Jahren 0
Rmmod / Modprobe war der Weg zu gehen. Es funktioniert manuell in Knoppix und Ubuntu, also sollte es mit einem Skript funktionieren, aber wer weiß. Danke für die Hilfe. Null_Fragment vor 12 Jahren 0