Ich erstelle eine neue Grundregel
/etc/udev/rules.d/10-myrule.rules
enthält:
KERNEL!="sdb*", GOTO="auto_mount_end"
ACTION=="add", RUN+="/usr/bin/mount /dev/sdb1 /media"
LABEL="auto_mount_end"
Ich habe eine SD-Karte gespeichert, neu gestartet und eingelegt (erkannt durch /dev/sdb1
, ich sehe es mit dmesg
), aber nichts passiert. Wenn ich es manuell mache mount /dev/sdb1 /media
, funktioniert es.
Wie kann ich eine solche udev
Regel beheben / debuggen ?
Hinweis: Ich verwende ArchLinux, aber es sollte auf jeder Distribution gleich sein.
arch-linux
mount
udev
Basj
quelle
quelle
99-myrule.rules
...systemd
sich etwas am normalen Verhalten von udev?udevadm monitor
, dies und das zu sehenudevadm test
und Regeln gegen die Realität mit validiertudevadm info
.Antworten:
10-
wie von jasonwryan erwähnt, benutze eine hohe nummerierung (90er gut). Ihre Regel wird also nicht von einer anderen außer Kraft gesetzt.Verwenden Sie die Mindestanzahl von Schlüsseln so, wie Sie sie wirklich benötigen. Beispiel,
!=
&GOTO
/LABEL
, stattdessen direkt verwenden==
Ihr Ziel war
sdb1
mit festem Befehl, minimieren Sie die blinde Übereinstimmung mitKERNEL=="sdb1"
Ich finde es nützlich, eine Shadow-Debugging-Regel zu erstellen. Ich habe Shadow genannt, weil ich sie immer in derselben Datei belasse, also benutze ich sie, wenn ich sie brauche.
Hinweis:
udev-env.txt
Wird erstellt, wird die Regel trotzdem ausgelöst. Zeile==
, die einem passenden Knoten entspricht. Die in dieser Datei aufgezeichnete ENV kann eine Mischung aus zwei oder mehr Knoten sein, die fast gleichzeitig erstellt werden. Dies ist einstdout
Pufferproblem.Verwendung
udevadm monitor -u
,udevadm test ...
undudevadm trigger ...
um zu überprüfen , welche Regeln die Ereignisse verarbeitet.Innerhalb der Skripte können Sie das Debug-Protokoll erstellen und fehlgeschlagene Befehle abfangen, indem Sie deren Rückgabewert
stdout
undstderr
Nachrichten speichern .Aktualisieren:
Referenz: udev_237 -
man udev
(Ubuntu_18.04)quelle
udevadm test...
nur die Umgebungsvariablen angezeigt, damitATTRS
Sieudevadm info $DEVICE
diese anderen Einstellungen finden können.udevadm info
Rückgabe eines Gerätebaums ist darauf zu achten, dass die Einstellungen zwischen einem Gerät und seinen übergeordneten Geräten unterschieden werden (Eigenschaften scheinen vererbt zu werden, wenn sie nicht überschrieben werden). In meinem Fall war das Subsystem falsch.udevadm test "This program is for debugging only, it does not run any program specified by a RUN key. It may show incorrect results, because some values may be different, or not available at a simulation run."
Kann man nicht einfach nachvollziehen, was tatsächlich passiert?udevadm monitor -u
, um nach Ereignissen / Bedingungenudevadm trigger ...
zu suchen und deren Aktionen zu testen.Ich denke, der Befehl, den Sie hier suchen, ist
udevadm
. Sie verwenden die Parametertrigger
undtest
, um einen erneuten Scan der udev-Ereignisse auszulösen bzw. ein bestimmtes Ereignis zu testen.Ich habe das auf die harte Tour gelernt, als ich mit dem neuen Netzwerkgerätenamen in EL 7 herumgebastelt habe. Viel Glück!
quelle
Erstellen Sie eine udev-Regeldatei
Fügen Sie eine Regel hinzu, die die Udisks anweist, sie automatisch zu aktivieren
ATTRS{type}=="SD"
ist möglicherweise nicht erforderlich, wenn Sie verschiedene Typen verwenden.Regeln neu laden
Wirf es aus und lege es zurück.
Verweis: Archlinux Wiki: Einige Geräte, die als entfernbar behandelt werden sollten, sind dies nicht
quelle
Ich hatte das gleiche Problem mit RASPBERRY PI 3 B +, möglicherweise helfen Ihnen die oben genannten Befehle. Aber es hat mir NICHT geholfen. Ich habe versucht, ein Skript zum Einfügen eines USB-Speichergeräts aufzurufen. Die Regeln werden nicht in Syslog protokolliert, sodass es sehr schwierig wird zu verstehen, welche Regel funktioniert hat oder welche Regel fehlgeschlagen ist.
Also habe ich folgendes gemacht:
(1) Ich habe meine Regeldatei in /etc/udev/rules.d/100-myrule.rules erstellt
(2) Dann habe ich den Befehl ausgeführt
sudo /etc/init.d/udev restart
dann habe ich nachgesehen, ob es funktioniert hat. Eine Information kann für Sie nützlich sein oder auch nicht, aber die Dateisysteme sind nur für udev lesbar, bis der Befehl unter (2) ausgeführt wird.
quelle