So legen Sie den Blockgerätenamen mithilfe von Udev-Regeln basierend auf der Seriennummer des SD-Kartenlesers fest

So legen Sie den Blockgerätenamen mithilfe von Udev-Regeln basierend auf der Seriennummer des SD-Kartenlesers fest

Ich habe ein SD-Kartenlesegerät und möchte die Blockgerätenamen auf /dev/sdcard2 festlegen. Die Partitionen werden dann /dev/sdcard2p1 /dev/sdcard2p2 /dev/sdcard2p3 ... genannt (basierend auf der Partitionsanzahl der in das Lesegerät eingelegten Karte).

Diese Regel muss für alle SD-Karten (mit unterschiedlicher Partitionsanzahl) gelten, die in diesen speziellen SD-Kartenleser (unterscheidet sich durch die Seriennummer) eingelegt sind, und Blockgeräte, die auf die eingelegte SD-Karte verweisen, müssen diese Namen haben.

Der SD-Kartenleser hat diese Seriennummer ID_SERIAL_SHORT=20210500010790

Daher möchte ich eine Udev-Regel schreiben, die den Blockgerätenamen wie oben beschrieben festlegt.

Ich habe diese Regel ausprobiert:

KERNEL=="sd*", ACTION=="add", ENV{ID_SERIAL_SHORT}=="20210500010790", SYMLINK+="sdcard2%n"

Aber es funktioniert nicht. Was mache ich falsch?

Dies ist die Ausgabe von udevadm monitor --environment --udev:Pastebin

Update: Ich habe eine Lösung gefunden:

ACTION=="add", SUBSYSTEM=="block", ATTRS{serial}=="20210500010790", ENV{DEVTYPE}=="disk", SYMLINK+="sdcard2"
ACTION=="add", SUBSYSTEM=="block", ATTRS{serial}=="20210500010790", ENV{DEVTYPE}=="partition", SYMLINK+="sdcard2p%n"

Es funktioniert mit ATTRS, aber nicht mit ENV. Warum?

verwandte Informationen