GNU/Linux >> Znalost Linux >  >> Linux

Linux – Pravidla Udev:Jak spárovat pouze zařízení jádra (ne oddíly) po zařízení #26?

Některé systémy mají více než 26 (blokových) zařízení (jako jsou pevné disky), které jádro pojmenuje následovně:

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

Většina příkladů pravidel udev je poměrně jednoduchá, odpovídá pouze prvním 26 zařízením, jako například:

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

Ale jak spárovat po 26. zařízení?
Nelze napsat sd* protože oddíly jako sda1 by se neměly shodovat.

Umím si představit, že napíšu další „nebo“ (symbol potrubí:| ), aby se shodovalo, jako:

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

Nebo rozdělte zápas na pozitivní a negativní část, například:

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

Existuje lepší způsob, jak napsat pravidla udev, která jsou čitelná, vyhovují zařízení #27 a vyššímu, ale ne žádnému oddílu?

Přijatá odpověď:

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

Lze je nalézt v samotných pravidlech udev dodaných operačním systémem.

V tomto případě Arch Linuxu se podívejte na soubor:

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

Sekce 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. Jen 4 MB? Jak opravit USB ‚Destroyed‘ od Etcher a Rufus po vytvoření Live Linux USB

  2. Jak upgradovat jádro na ploše Linuxu

  3. Linux – Jak linuxové jádro zná hlavní a vedlejší čísla zařízení?

  1. Jak spustit událost ve skriptu Shell, když je odebráno zařízení USB?

  2. Linux – Udev nepřejmenuje zařízení USB Ethernet?

  3. Jak kódovat modul jádra Linuxu?

  1. Linuxový výstup lsblk

  2. Jak připojit zařízení v Linuxu?

  3. Přimět udev, aby během bootování ignoroval určitá zařízení