Kuidas kasutada Udevit Linuxi seadme tuvastamiseks ja haldamiseks


Udev (userspace/dev) on Linuxi alamsüsteem seadme dünaamiliseks tuvastamiseks ja haldamiseks alates tuuma versioonist 2.6. See on devf-de ja hotplugi asendamine.

See loob dünaamiliselt seadme sõlmed (seadme draiveri liides, mis kuvatakse failisüsteemis nagu tavaline fail, mis on salvestatud kataloogi/dev alla) käivitamise ajal või kui lisate seadme seadmesse või eemaldate selle süsteemi. Seejärel levitab see teavet seadme kohta või muutub selle olek kasutajaruumi.

Selle ülesanne on 1) varustada süsteemirakendusi seadmesündmustega, 2) hallata seadmesõlmede õigusi ja 3) seadmetele juurdepääsemiseks luua kataloogis/dev kasulikke sümboolseid linke või isegi võrguliideseid ümber nimetada.

Üks udevi plussidest on see, et ta saab kasutada püsivaid seadmete nimesid, et tagada seadmete järjekindel nimetamine taaskäivitamisel vaatamata nende avastamise järjekorrale. See funktsioon on kasulik, kuna kern määrab avastamise järjekorra alusel lihtsalt ettearvamatud seadmete nimed.

Selles artiklis õpime, kuidas Udevit kasutada seadme tuvastamiseks ja haldamiseks Linuxi süsteemides. Pange tähele, et enamikul, kui mitte kõigil tänapäevastel peavoolu Linuxi distributsioonidel on Udev vaikimisi installimise osana.

Õppige Linuxi Udev'i põhitõdesid

Udevi deemon, systemd-udevd (või systemd-udevd.service) suhtleb kerneliga ja võtab otse vastu seadme ueventsid iga kord, kui seadme süsteemi lisate või süsteemist eemaldate või kui seade oma olekut muudab.

Udev põhineb reeglitel - reeglid on paindlikud ja väga võimsad. Iga vastuvõetud seadme sündmus vastendatakse reeglitele, mida loetakse failidest, mis asuvad /lib/udev/rules.d ja /run/udev/rules.d.

Seadme töötlemiseks võite kataloogi /etc/udev/rules.d/ kirjutada kohandatud reeglifailid (failid peaksid lõppema laiendiga .rules ). Pange tähele, et selles kataloogis olevatel reeglifailidel on kõrgeim prioriteet.

Seadmesõlmefaili loomiseks peab udev seadme tuvastama, kasutades teatud atribuute, näiteks silti, seerianumbrit, selle kasutatud suurt ja väikest numbrit, siiniseadme numbrit ja palju muud. Selle teabe eksportib failisüsteem sysfs.

Kui ühendate seadme süsteemiga, tuvastab kernel selle ja lähtestab selle ning kataloogi/sys/directory luuakse kataloog seadme nimega, mis salvestab seadme atribuudid.

Udevi peamine konfiguratsioonifail on /etc/udev/udev.conf ja udev-deemoni käitamise käitumise juhtimiseks võite kasutada utevadi utevadit.

Vastuvõetud tuuma sündmuste (uevents) ja udev sündmuste (mille udev saadab pärast reeglite töötlemist) kuvamiseks käivitage udevadm monitori käsuga. Seejärel ühendage seade oma süsteemiga ja jälgige terminalist, kuidas seadme sündmust korraldatakse.

Järgmisel ekraanipildil on väljavõte ADD-sündmusest pärast USB-välkmäluketta ühendamist testimissüsteemiga:

$ udevadm monitor 

USB-kettale määratud nime leidmiseks kasutage töödeldud seadmete kohta teabe kogumiseks utiliiti lsblk, mis loeb sysfs-failisüsteemi ja udev db.

 
$ lsblk

Eelmise käsu väljundist saab USB-ketta nimeks sdb1 (absoluutne tee peaks olema /dev/sdb1 ). Seadme atribuutide pärimiseks udevi andmebaasist kasutage käsku info.

$ udevadm info /dev/sdb1

Kuidas töötada Udevi reeglitega Linuxis

Selles osas käsitleme lühidalt, kuidas udevi reegleid kirjutada. Reegel koosneb komadega eraldatud loendist, mis sisaldab ühte või mitut võtmeväärtuste paari. Reeglid võimaldavad teil seadme sõlme vaikenimest ümber nimetada, seadmesõlme õigusi ja omandiõigusi muuta, käivitada muu hulgas seadme sõlme loomisel või kustutamisel programmi või skripti käivitamine.

Kirjutame lihtsa reegli skripti käivitamiseks, kui USB-seade lisatakse ja kui see töötavast süsteemist eemaldatakse.

Alustame kahe skripti loomisega:

$ sudo vim /bin/device_added.sh

Lisage järgmised read skripti device_added.sh .

#!/bin/bash
echo "USB device added at $(date)" >>/tmp/scripts.log

Avage teine skript.

$ sudo vim /bin/device_removed.sh

Seejärel lisage skriptile device_removed.sh järgmised read.

#!/bin/bash
echo "USB device removed  at $(date)" >>/tmp/scripts.log

Salvestage failid, sulgege ja tehke mõlemad skriptid käivitatavaks.

$ sudo chmod +x /bin/device_added.sh
$ sudo chmod +x /bin/device_removed.sh

Järgmiseks loome ülaltoodud skriptide käivitamise reegli, mida nimetatakse /etc/udev/rules.d/80-test.rules.

$ vim /etc/udev/rules.d/80-test.rules

Lisage sinna need kaks järgmist reeglit.

SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device",  RUN+="/bin/device_added.sh"
SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/bin/device_removed.sh"

kus:

  • \"== \" : on operaator, kelle võrdsustamiseks võrdsustatakse.
  • \"+ = \" : on operaator väärtuse lisamiseks võtmele, mis hoiab kirjete loendit.
  • SUBSYSTEM: sobib sündmusseadme alamsüsteemiga.
  • ACTION: sobib sündmuse toimingu nimega.
  • ENV {DEVTYPE}: vastab seadme atribuudi väärtusele ja antud juhul seadme tüübile.
  • RUN: määrab programmi või skripti, mida käivitada osana sündmuste käitlemisest.

Salvestage fail ja sulgege see. Seejärel käskige süsteemina juurkäsuna systemd-udevd reeglireeglid uuesti laadida (see laadib ka teised andmebaasid, näiteks kerneli mooduli register), käivitades.

$ sudo udevadm control --reload

Nüüd ühendage oma seadmega USB-draiv ja kontrollige, kas skript device_added.sh on käivitatud. Kõigepealt tuleks fail scripts.log luua/tmp alla.

$ ls -l /tmp/scripts.log

Seejärel peaks failil olema kirje, näiteks\"USB-seade on eemaldatud kuupäeval_aja", nagu ekraanipildil näidatud.

$ cat /tmp/scripts.log

Udevi reeglite kirjutamise ja udevi haldamise kohta lisateabe saamiseks lugege vastavalt udevi ja udevadmi käsiraamatut, käivitades:

$ man udev
$ man udevadm

Udev on tähelepanuväärne seadmehaldur, mis pakub dünaamilist viisi seadmesõlmede seadistamiseks kataloogis /dev . See tagab seadmete konfigureerimise kohe pärast ühendamist ja avastamist. See levitab töödeldud seadme kohta teavet või muudab selle olekut, kasutaja ruumi.

Kui teil on selle teema kohta küsimusi või mõtteid, kasutage tagasisidevormi.