Yadda ake Amfani da Udev don Gano Na'ura da Gudanarwa a cikin Linux


Udev (userspace/dev) ƙaramin tsarin Linux ne don ganowa da sarrafa na'urori masu ƙarfi, tun daga sigar kernel 2.6. Yana da maye gurbin devfs da hotplug.

Yana ƙirƙira ko cire nodes na na'ura (mai dubawa zuwa direban na'urar da ke bayyana a cikin tsarin fayil kamar fayil ne na yau da kullun, wanda aka adana a ƙarƙashin directory/dev) a lokacin taya ko kuma idan kun ƙara na'ura zuwa ko cire na'urar daga tsarin. Sannan yana yada bayanai game da na'ura ko canza zuwa yanayinta zuwa sararin mai amfani.

Ayyukansa shine 1) samar da aikace-aikacen tsarin tare da abubuwan da suka faru na na'ura, 2) sarrafa izini na nodes na na'ura, kuma 3) na iya ƙirƙirar alamomi masu amfani a cikin /dev directory don samun damar na'urori, ko ma sake suna masu mu'amala da hanyar sadarwa.

Ɗaya daga cikin ribar udev ita ce tana iya amfani da sunayen na'urori masu tsayi don tabbatar da daidaiton suna na na'urori a duk faɗin sake yi, duk da tsarin gano su. Wannan fasalin yana da amfani saboda kawai kernel yana sanya sunayen na'urar da ba za a iya faɗi ba bisa tsarin ganowa.

A cikin wannan labarin, za mu koyi yadda ake amfani da Udev don gano na'urar da sarrafawa akan tsarin Linux. Lura cewa mafi yawan idan ba duk manyan rabawa na Linux na zamani suna zuwa tare da Udev a matsayin wani ɓangare na shigarwa na tsoho ba.

Koyi Tushen Udev a cikin Linux

Udev daemon, systemd-udevd (ko systemd-udevd.service) yana sadarwa tare da kernel kuma yana karɓar abubuwan da ke faruwa kai tsaye daga na'urar a duk lokacin da kuka ƙara ko cire na'urar daga tsarin, ko na'urar ta canza yanayinta.

Udev yana dogara ne akan dokoki - dokoki ne masu sassauƙa kuma suna da ƙarfi sosai. Kowane taron na'urar da aka karɓa ya dace da tsarin ƙa'idodin da aka karanta daga fayilolin da ke cikin /lib/udev/rules.d da /run/udev/rules.d.

Kuna iya rubuta fayilolin dokoki na al'ada a cikin /etc/udev/rules.d/ directory (fiyilolin su ƙare tare da .rules tsawo) don aiwatar da na'ura. Lura cewa fayilolin dokoki a cikin wannan jagorar suna da fifiko mafi girma.

Don ƙirƙirar fayil ɗin kumburin na'ura, udev yana buƙatar gano na'urar ta amfani da wasu halaye kamar lakabin, lambar serial, babban lambarta da ƙaramar lambar da aka yi amfani da ita, lambar na'urar bas da ƙari mai yawa. Ana fitar da wannan bayanin ta tsarin fayil ɗin sysfs.

Duk lokacin da ka haɗa na'ura zuwa tsarin, kernel ɗin yana ganowa kuma ya fara farawa, kuma ana ƙirƙiri adireshi mai sunan na'urar a ƙarƙashin /sys/ directory wanda ke adana halayen na'urar.

Babban fayil ɗin daidaitawa don udev shine /etc/udev/udev.conf, kuma don sarrafa halin lokacin aiki da udev daemon, zaku iya amfani da udevadm utility.

Don nuna abubuwan da suka faru na kernel (events) da abubuwan udev (wanda udev ke aikawa bayan sarrafa mulki), gudanar da udevadm tare da umarnin saka idanu. Sannan haɗa na'ura zuwa tsarin ku kuma duba, daga tashar tashar, yadda ake tafiyar da taron na'urar.

Hoton hoton da ke gaba yana nuna wani yanki na taron ADD bayan haɗa faifan filashin USB zuwa tsarin gwaji:

$ udevadm monitor 

Don nemo sunan da aka sanya wa faifan USB ɗinku, yi amfani da lsblk utility wanda ke karanta sysfs filesystem da udev db don tattara bayanai game da na'urorin da aka sarrafa.

 
$ lsblk

Daga fitowar umarnin da ya gabata, ana kiran faifan USB sdb1 (cikakkiyar hanya ta zama /dev/sdb1). Don bincika halayen na'urar daga bayanan udev, yi amfani da umarnin bayanin.

$ udevadm info /dev/sdb1

Yadda ake Aiki tare da Dokokin Udev a cikin Linux

A cikin wannan sashe, zamu tattauna a taƙaice yadda ake rubuta dokokin udev. Doka ta ƙunshi jerin waƙafi-wakafi ɗaya ko fiye nau'i-nau'i-daraja. Dokoki suna ba ka damar sake sunan kullin na'ura daga sunan tsoho, canza izini da ikon mallakar kumburin na'ura, haifar da aiwatar da shirin ko rubutun lokacin da aka ƙirƙiri ko share kumburin na'urar, da sauransu.

Za mu rubuta ƙa'ida mai sauƙi don ƙaddamar da rubutun lokacin da aka ƙara na'urar USB da lokacin da aka cire shi daga tsarin aiki.

Bari mu fara da ƙirƙirar rubutun biyu:

$ sudo vim /bin/device_added.sh

Ƙara layin masu zuwa a cikin rubutun na'urar_added.sh.

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

Bude rubutun na biyu.

$ sudo vim /bin/device_removed.sh

Sannan ƙara layin masu zuwa zuwa rubutun device_removed.sh.

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

Ajiye fayilolin, rufe kuma sanya su biyun rubutun su aiwatar da su.

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

Na gaba, bari mu ƙirƙiri wata doka don haifar da aiwatar da rubutun da ke sama, wanda ake kira /etc/udev/rules.d/80-test.rules.

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

Ƙara waɗannan dokoki guda biyu a ciki.

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"

inda:

  • ==\ : ma'aikaci ne don kwatanta daidaito.
  • \+=\ : mai aiki ne don ƙara darajar zuwa maɓalli mai riƙe da jerin abubuwan shigarwa.
  • SUBSYSTEM: yayi daidai da tsarin na'urar taron.
  • ACTION: yayi daidai da sunan aikin taron.
  • ENV{DEVTYPE}: yayi daidai da ƙimar kayan na'ura, nau'in na'urar a wannan yanayin.
  • RUN: yana ƙayyade shirin ko rubutun da za a aiwatar a matsayin wani ɓangare na gudanar da taron.

Ajiye fayil ɗin kuma rufe shi. Sannan a matsayin tushen, gaya systemd-udevd don sake loda fayilolin dokoki (wannan kuma yana sake loda wasu bayanan bayanai kamar kernel module index), ta hanyar gudu.

$ sudo udevadm control --reload

Yanzu haɗa kebul na USB a cikin injin ku kuma duba idan an aiwatar da rubutun na'urar_added.sh. Da farko scripts.log ya kamata a ƙirƙiri a ƙarƙashin /tmp.

$ ls -l /tmp/scripts.log

Sannan fayil ɗin ya kamata ya sami shigarwa kamar \An cire na'urar USB a date_time, kamar yadda aka nuna a hoton.

$ cat /tmp/scripts.log

Don ƙarin bayani kan yadda ake rubuta dokokin udev da sarrafa udev, tuntuɓi udev da udevadm shigarwar hannu bi da bi, ta hanyar gudu:

$ man udev
$ man udevadm

Udev babban manajan na'ura ne wanda ke ba da ingantacciyar hanya ta saita nodes na na'ura a cikin kundin adireshin /dev. Yana tabbatar da cewa an saita na'urori da zarar an toshe su kuma an gano su. Yana yada bayanai game da na'urar da aka sarrafa ko canje-canje zuwa yanayinta, zuwa sararin mai amfani.

Idan kuna da wasu tambayoyi ko tunani don raba kan wannan batu, yi amfani da fam ɗin martani.