Die Datei /etc/udev/rules.d/70-persistent-net.rules
wird auf einem Linux-System mit udev automatisch generiert, sofern sie nicht vorhanden ist Neustart. Ich möchte jedoch wissen, wie diese Regeldatei (mit einem Befehl) erstellt wird, ohne den Server neu zu starten.
Ich habe eine Weile gegoogelt und festgestellt, dass die Regeldatei von diesem Skript generiert wird:
/lib/udev/write_net_rules
Es ist jedoch unmöglich, dieses Skript über die Befehlszeile auszuführen, da es (ich nehme an) von udev gestartet werden soll, wobei einige Umgebungsvariablen richtig eingestellt sind. Beim manuellen Starten wird die Fehlermeldung „fehlende $ INTERFACE“ ausgegeben. Selbst wenn ich vor dem Start des Skripts die env-Variable INTERFACE = eth0 setze, wird der Fehler „fehlende gültige Übereinstimmung“ ausgegeben. Ganz zu schweigen davon, dass ich zwei Schnittstellen habe (eth0
und eth1
) und die Regeldatei für beide generiert werden soll.
Ich habe auch darüber nachgedacht, solche udev-Ereignisse auszulösen, in der Hoffnung, dass das Skript von udev selbst gestartet wird, aber nichts ändert sich:
udevadm trigger --type=devices --action=change
Weiß also jemand Bescheid? Wie kann man die persistenten Netzregeln in der Datei /etc/udev/rules.d/70-persistent-net.rules
ohne Neustart neu generieren?
Kommentare
- Was ist Ihre Verteilung? Welche Art von Init-System verwendet es?
- Ich würde sagen, das ist irrelevant. Ich ‚ verwende Slackware mit eUdev und sysvinit. Ich habe die Startskripte untersucht, um herauszufinden, was ausgeführt wird, das die Regeldatei generiert, aber nur den udevadm-Trigger gefunden, mit dem Kommentar, dass dies der Befehl zum Generieren der persistenten Regeln ist, aber irgendwie funktioniert dies nur beim Neustart, nein Effekt, wenn ich es manuell ausführe.
- Es könnte relevant sein, da ich auf Arch weder die
70-persistent-net.rules
noch die/lib/udev/write_net_rules
script. Daher kann ich ‚ nicht überprüfen, aber vermutlich ist die Variable$INTERFACE
im Skript selbst festgelegt. Höchstwahrscheinlich wird es als Argument übergeben. Können Sie uns den Inhalt des Skripts zeigen? - Das Skript verwendet einfach die Variable
$INTERFACE
. Es gibt viel mehr Variablen, die einfach verwendet und nie deklariert werden. Es ist ‚, weil es von udev aufgerufen wird und udev alle env-Variablen festlegt, bevor das Skript beim Booten ausgeführt wird. - Müssen Sie tatsächlich wissen, wie es geht Regenerieren Sie es oder können Sie die Datei einfach bearbeiten, um die neue Realität widerzuspiegeln?
Antwort
Laut Mann Seite --action=change
ist der Standardwert für udevadm
.
-c, --action=ACTION Type of event to be triggered. The default value is change.
Versuchen Sie daher besser --action=add
. Es sollte helfen:
/sbin/udevadm trigger --type=devices --action=add
Kommentare
- intel_rapl: Keine gültigen rapl-Domänen in Paket 0 gefunden
Antwort
In Ubuntu Server 16.04LTS existiert die 70-persistent-net.rules nicht.
Ich habe nur Folgendes ausgeführt:
ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
Erstellen Sie dann die Datei mit
sudo vi /etc/systemd/network/10-internet.link
und fügen Sie Folgendes hinzu:
[Match] Path=pci-0000:(your device mac address) [Link] Name=eth0 (or whatever you want to name it)
:wq
, um die Datei
zu speichern Starten Sie dann die Datei / etc / network / interfaces neu und passen Sie sie an. Starten Sie sie dann erneut neu.
Kommentare
- Die Frage lautet Wie kann ich 70-persistent-net.rules ohne Neustart neu generieren? “ Ihre Antwort enthält zwei Neustarts. Wie ist dies eine Antwort auf die Frage?
Antwort
Ich hatte das gleiche Problem, aber ich bemerkte es konnte immer noch die Schnittstellen in der Liste. Ich habe Folgendes verwendet (als 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
Wiederholen Sie dies für jede Schnittstelle. Dies wurde verwendet, um meine Datei „wiederherzustellen“. (Hinweis: Ein Aufruf listet alle Schnittstellen auf + fügt eine Umbenennung hinzu, um eine zu finden. Ich empfehle daher, die Ausgabedatei nach einem Aufruf zu überprüfen.)
Es gibt definitiv Unterschiede zwischen Betriebssystemen und aktuellen UDEV-Implementierungen und Unterstützungsskripten Zu beachten ist, dass ich CentOS 6.8 verwendet habe, als ich dies erfolgreich durchgeführt habe.
Gutschrift – Ich habe hauptsächlich auf diese Site verwiesen. Es gibt einen Kommentar in einigen Threads, in dem es um das Ändern des Skripts geht, aber ich habe es vorgezogen, es zu verwenden Umgebungsvariablen, da sie sauberer waren: https://access.redhat.com/discussions/1240213
Kommentare
- Mist – warte. Ich ‚ Es tut mir leid, das war der Befehl, der nicht funktioniert hat. Ich muss die Antwort mit dem Schritt aktualisieren, den ich getan habe
- Ok, ich ‚ habe aktualisiert, wie ich meine tatsächlich repariert habe. Ich hoffe, es funktioniert, wenn es auf Ihre Situation zutrifft.