ist es möglich, Udev-Regeln zu verwenden, um ein einzelnes Gerät von der Regel auszuschließen?
Wenn ich beispielsweise fünf Festplatten angeschlossen habe und für alle Festplatten außer einer einzigen benutzerdefinierte Namen erstellen möchte, ist das möglich?
Außerdem werden Kernelnamendatenträger nach sdz mit 2 Zeichen benannt. sdaa, sdab, sdqr usw. Ich habe ein Problem damit, da ich die Partition nicht in sda1, sdb2 usw. aufnehmen möchte. Kann ich alle Zeichen, aber nicht alle Zahlen mit Platzhaltern versehen?
Beispiel:
KERNEL=="sd??", NAME="test/Disk%n", ATTRS{ID_SERIAL_SHORT}!="xxxx"
Antwort1
Wenn ich beispielsweise fünf Festplatten angeschlossen habe und für alle Festplatten außer einer einzigen benutzerdefinierte Namen erstellen möchte, ist das möglich?
Mit diesen Regeln können Sie
GOTO
Regeln überspringen:ENV{ID_SERIAL_SHORT}=="xxxx|yyyy|zzzz", GOTO="custom_names_end" ENV{ID_MODEL}=="blahblah", GOTO="custom_names_end" KERNEL=="sd*", ENV{DEVTYPE}=="disk", SYMLINK+="test/Disk%n" LABEL="custom_names_end"
Beachten Sie, dass dies
ID_SERIAL_SHORT
kein Attribut ist. Es handelt sich um eine Udev-Umgebungsvariable. Sie müssen alsoENV{}
oder verwendenENVS{}
, um sie abzugleichen. Attribute werden direkt aus sysfs gelesen.Beachten Sie auch, dass neuere Udev-Versionen das Umbenennen von Geräten verbieten. Sie können nur benutzerdefinierte symbolische Links hinzufügen.
Außerdem werden Kernelnamendatenträger nach sdz mit 2 Zeichen benannt. sdaa, sdab, sdqr usw. Ich habe ein Problem damit, da ich die Partition nicht in sda1, sdb2 usw. aufnehmen möchte. Kann ich alle Zeichen, aber nicht alle Zahlen mit Platzhaltern versehen?
Sie verwenden den falschen Ansatz. Wenn Sie Festplatten, aber keine Partitionen abgleichen möchten, dannmach genau das:
KERNEL=="sd*",ENV{DEVTYPE}=="Datenträger", …
Die
DEVTYPE
Werte sind inudevadm info /dev/sda
und zu sehenudevadm info /dev/sda1
.