Hvernig á að nota Udev fyrir uppgötvun og stjórnun tækja í Linux


Udev (userspace /dev) er Linux undirkerfi fyrir kraftmikla uppgötvun og stjórnun tækja, síðan kjarnaútgáfa 2.6. Það kemur í staðinn fyrir devfs og hotplug.

Það býr til eða fjarlægir tækishnúta á virkan hátt (viðmót við tækjarekla sem birtist í skráarkerfi eins og það væri venjuleg skrá, geymd í /dev skránni) við ræsingu eða ef þú bætir tæki við eða fjarlægir tæki úr kerfið. Það dreifir síðan upplýsingum um tæki eða breytingar á ástandi þess í notendarými.

Hlutverk hans er að 1) útvega kerfisforritum tækjaviðburði, 2) stjórna heimildum fyrir hnúta tækisins og 3) geta búið til gagnlega tákntengla í /dev skránni til að fá aðgang að tækjum, eða jafnvel endurnefna netviðmót.

Einn af kostunum við udev er að það getur notað viðvarandi tækjanöfn til að tryggja stöðugt nafn á tækjum yfir endurræsingu, þrátt fyrir uppgötvun þeirra. Þessi eiginleiki er gagnlegur vegna þess að kjarninn úthlutar einfaldlega ófyrirsjáanlegum tækjanöfnum byggt á uppgötvunarröðinni.

Í þessari grein munum við læra hvernig á að nota Udev fyrir uppgötvun og stjórnun tækja á Linux kerfum. Athugaðu að flestar ef ekki allar almennar nútíma Linux dreifingar eru með Udev sem hluta af sjálfgefna uppsetningunni.

Lærðu grunnatriði Udev í Linux

Udev púkinn, systemd-udevd (eða systemd-udevd.service) hefur samskipti við kjarnann og tekur við atburðum tækisins beint frá honum í hvert sinn sem þú bætir við eða fjarlægir tæki úr kerfinu, eða tæki breytir um stöðu.

Udev er byggt á reglum - reglurnar eru sveigjanlegar og mjög öflugar. Sérhver móttekinn tækjaviðburður er samræmdur við sett af reglum sem lesnar eru úr skrám sem staðsettar eru í /lib/udev/rules.d og /run/udev/rules.d.

Þú getur skrifað sérsniðnar regluskrár í /etc/udev/rules.d/ möppuna (skrár ættu að enda á .rules endingunni) til að vinna úr tæki. Athugaðu að regluskrár í þessari möppu hafa hæsta forgang.

Til að búa til hnútaskrá tækis þarf udev að auðkenna tæki með því að nota ákveðna eiginleika eins og merkimiðann, raðnúmerið, aðal- og minninúmer þess sem notað er, númer rútutækja og svo margt fleira. Þessar upplýsingar eru fluttar út af sysfs skráarkerfinu.

Alltaf þegar þú tengir tæki við kerfið finnur kjarninn hann og frumstillir hann og möppu með heiti tækisins er búin til undir /sys/ möppunni sem geymir eiginleika tækisins.

Aðalstillingarskráin fyrir udev er /etc/udev/udev.conf, og til að stjórna keyrsluhegðun udev púksins geturðu notað udevadm tólið.

Til að sýna móttekna kjarnaviðburði (uevents) og udev atburði (sem udev sendir út eftir regluvinnslu), keyrðu udevadm með monitor skipuninni. Tengdu síðan tæki við kerfið þitt og horfðu á, frá flugstöðinni, hvernig tækisatburðurinn er meðhöndlaður.

Eftirfarandi skjáskot sýnir brot af ADD atburði eftir að USB flash diskur hefur verið tengdur við prófunarkerfið:

$ udevadm monitor 

Til að finna nafnið sem USB disknum þínum er úthlutað skaltu nota lsblk tólið sem les sysfs skráarkerfið og udev db til að safna upplýsingum um unnin tæki.

 
$ lsblk

Frá úttakinu á fyrri skipuninni er USB diskurinn nefndur sdb1 (alger slóð ætti að vera /dev/sdb1). Til að spyrjast fyrir um eiginleika tækisins úr udev gagnagrunninum skaltu nota info skipunina.

$ udevadm info /dev/sdb1

Hvernig á að vinna með Udev reglur í Linux

Í þessum hluta munum við fjalla stuttlega um hvernig á að skrifa udev reglur. Regla samanstendur af lista sem er aðskilinn með kommum yfir eitt eða fleiri lykilgildapör. Reglur leyfa þér að endurnefna tækishnút frá sjálfgefna nafninu, breyta heimildum og eignarhaldi á tækishnút, kveikja á framkvæmd forrits eða handrits þegar tækishnút er búið til eða eytt, meðal annars.

Við munum skrifa einfalda reglu til að ræsa skriftu þegar USB tæki er bætt við og þegar það er fjarlægt úr keyrandi kerfinu.

Við skulum byrja á því að búa til forskriftirnar tvær:

$ sudo vim /bin/device_added.sh

Bættu við eftirfarandi línum í device_added.sh forskriftinni.

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

Opnaðu annað handritið.

$ sudo vim /bin/device_removed.sh

Bættu síðan eftirfarandi línum við device_removed.sh forskrift.

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

Vistaðu skrárnar, lokaðu og gerðu bæði forskriftirnar keyranlegar.

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

Næst skulum við búa til reglu til að koma af stað framkvæmd ofangreindra forskrifta, sem kallast /etc/udev/rules.d/80-test.rules.

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

Bættu þessum tveimur eftirfarandi reglum við.

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"

hvar:

  • ==\: er rekstraraðili til að bera saman fyrir jafnrétti.
  • \+=\: er stjórnandi til að bæta gildinu við lykil sem geymir lista yfir færslur.
  • UNDIRKERFI: passar við undirkerfi viðburðartækisins.
  • AÐGERÐ: samsvarar heiti viðburðaraðgerðarinnar.
  • ENV{DEVTYPE}: samsvarar gildi tækiseiginleika, tækistegund í þessu tilviki.
  • RUN: tilgreinir forrit eða skriftu til að keyra sem hluta af viðburðameðferðinni.

Vistaðu skrána og lokaðu henni. Síðan sem rót, segðu systemd-udevd að endurhlaða regluskrárnar (þetta endurhleður líka aðra gagnagrunna eins og kjarnaeiningavísitöluna), með því að keyra.

$ sudo udevadm control --reload

Tengdu nú USB drif við vélina þína og athugaðu hvort device_added.sh forskriftin hafi verið keyrð. Fyrst af öllu ætti að búa til skrána scripts.log undir /tmp.

$ ls -l /tmp/scripts.log

Þá ætti skráin að vera með færslu eins og USB tæki fjarlægt á date_time, eins og sýnt er á skjámyndinni.

$ cat /tmp/scripts.log

Fyrir frekari upplýsingar um hvernig á að skrifa udev reglur og stjórna udev, skoðaðu udev og udevadm handbókarfærslurnar í sömu röð með því að keyra:

$ man udev
$ man udevadm

Udev er merkilegur tækjastjóri sem veitir kraftmikla leið til að setja upp tækjahnúta í /dev skránni. Það tryggir að tæki séu stillt um leið og þau eru tengd og uppgötvað. Það dreifir upplýsingum um unnið tæki eða breytingar á ástandi þess, til notendarýmis.

Ef þú hefur einhverjar spurningar eða hugsanir til að deila um þetta efni, notaðu athugasemdareyðublaðið.