
Ich arbeite an einem Projekt mit einer Reihe von Raspberry Pis, jeweils mit zwei verschiedenen WLAN-Karten (mit unterschiedlichen Chipsätzen / unter Verwendung unterschiedlicher Module, eine ist rtl8187 und die andere ist rt2800usb).
Im Moment habe ich für jeden Pi dauerhafte Benennungsregeln eingerichtet. Wenn ich also einen neuen Pi einrichte oder die WLAN-Karten zwischen den Pis austausche, muss ich diese anschließend so bearbeiten, dass die neue RTL8187-Karte weiterhin WLAN0 und die neue RT2800USB-Karte weiterhin WLAN1 ist.
Gibt es eine Möglichkeit, die persistenten Regeln zu ändern, um die Schnittstellen basierend auf dem von ihnen verwendeten Modul oder etwas Ähnlichem zu benennen? Idealerweise hätte ich gerne die Möglichkeit, dass es weiß, dass die RTL8187-Karte, die ich einstecke, WLAN0 sein soll und die RT2800USB-Karte, die ich einstecke, WLAN1 sein soll.
Oder gibt es als Workaround eine Möglichkeit, einen teilweisen Platzhalter für die MAC-Adressübereinstimmung zu verwenden? Jede Karte mit demselben Chipsatz, die ich habe, hat dasselbe Hersteller-MAC-Präfix.
Antwort1
Als erstes würde ich versuchen, einfach die
ATTR{address}=="12:34:56:78:9A:AB"
Zu
ATTR{address}=="12:34:56:*"
in /etc/udev/rules.d/70-persistent-net.rules
(vorausgesetzt, es befindet sich an der gleichen Stelle auf Ihrem RaspPi).
Ich habe es nicht getestet, aber so funktioniert das übliche Matching.
Wenn es funktioniert, kopieren Sie diese Datei einfach auf jeden neuen RaspPi.
Antwort2
Ich glaube nicht, dass es hilft, dem Gerät einen Namen zu geben, da Sie bemerkt haben, dass der entscheidende Faktor, ob es sich bei dem Gerät um WAN0 oder WAN1 handelt, auf der MAC-Adresse basiert.
Die einzige Lösung, die mir einfällt, ist sehr schmutzig ... zwei Kopien der Netzwerkkonfiguration haben und eine Udev-Regel verwenden, um die gewünschte Netzwerkkonfiguration an die richtige Stelle zu kopieren. (Das würde funktionieren, ist aber sehr schmutzig ...)
Vielleicht fällt jemandem eine bessere Lösung ein, aber wenn Sie sich für diese Methode entscheiden, besteht sie darin, das Gerät in einer Udev-Regel abzugleichen und am Ende der Udev-Regel +RUN=/usr/local/bin/bashscript.sh einzutragen (achten Sie darauf, die Berechtigungen zu sperren).
Meine einzige Frage ist, dass ich nicht verstehe, was das Problem wäre, wenn ich eine Netzwerkkarte als WLAN1 hätte.
Ich glaube, die Lösung Ihres Problems liegt nicht darin, von WLAN1 auf WLAN0 umzusteigen, sondern herauszufinden, warum Sie das tun müssen ...
hier ist ein Beispiel für eine Udev-Regel, die ich mit einem Bash-Skript habe:
ATTRS{idVendor}=="1050", ATTRS{idProduct}=="0010|0110|0111|0114|0116|0401|0403|0405|0407|0410", ACTION=="remove", RUN+="/usr/local/bin/secdev_lock.sh"
(meinen Laptop-Bildschirm sperren, wenn ich einen Sicherheitsschlüssel abziehe)
AKTUALISIEREN:
Zum Debuggen der Karte stehen folgende Attribute zur Verfügung:
SUBSYSTEM=="net", ACTION=="add", RUN+="/usr/local/bin/addnic.sh"
in addnic.sh;
#!/bin/bash
env > /home/user/udev_$RANDOM.txt
Ich bin sicher, dass Sie dort alle relevanten Informationen finden werden.