GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Udev-Regeln:Wie werden nur Kernel-Geräte (keine Partitionen) nach Gerät Nr. 26 abgeglichen?

Einige Systeme haben mehr als 26 (Block-)Geräte (wie Festplattenlaufwerke), die der Kernel wie folgt benennt:

/dev/sda
...
/dev/sdz
/dev/sdaa
/dev/sdab
/dev/sdac
...

Die meisten Beispiele für udev-Regeln sind recht einfach und passen nur zu den ersten 26 Geräten, wie zum Beispiel:

ACTION=="add|change", KERNEL=="sd[a-z]|sr[0-9]", SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="deadline"

Aber wie passt man nach dem 26. Gerät zusammen?
Man kann nicht sd* schreiben weil Partitionen wie sda1 sollte nicht übereinstimmen.

Ich kann mir vorstellen, noch ein „oder“ zu schreiben (Pipe-Symbol:| ), um die Übereinstimmung herzustellen, wie:

KERNEL=="sd[a-z]|sd[a-z][a-z]|sr[0-9]"

Oder teilen Sie die Übereinstimmung in einen positiven und einen negativen Teil auf, wie:

..., KERNEL=="sd[a-z]*|sr[0-9]", KERNEL!="sd[a-z]*[0-9]", ...

Gibt es einen besseren Weg, udev-Regeln zu schreiben, die lesbar sind und mit Gerät Nr. 27 und höher übereinstimmen, aber nicht mit irgendeiner Partition?

Akzeptierte Antwort:

KERNEL=="sd*[!0-9]|sr*"

Zu finden sind die vom Betriebssystem bereitgestellten udev-Regeln selbst.

Sehen Sie sich in diesem Arch-Linux-Fall die Datei an:

/usr/lib/udev/rules.d/60-persistent-storage.rules

Abschnitt ATA:

$ grep /usr/lib/udev/rules.d/60-persistent-storage.rules -e \"ATA\"
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", IMPORT{program}="ata_id --export $devnode"

Linux
  1. So installieren Sie einen Gerätetreiber unter Linux

  2. So aktualisieren Sie den Kernel auf dem Linux-Desktop

  3. So richten Sie Chroot SFTP unter Linux ein (nur SFTP zulassen, nicht SSH)

  4. udev veranlassen, bestimmte Geräte während des Bootens zu ignorieren

  5. Wie überprüfe ich, ob der Linux-Kernel Retpoline-fähig ist oder nicht?

So laden oder entladen Sie ein Linux-Kernel-Modul

So listen Sie Festplattenpartitionen unter Linux auf

So erkennen und verwalten Sie Geräte unter Linux

So erhalten Sie MAC-Adressen von Geräten, die sich nicht im Netzwerk befinden

Wie mounte ich ein Gerät unter Linux?

Udev:Meine Netzwerkschnittstelle umbenennen