Kif tuża Udev għal Sejbien u Ġestjoni tal-Apparat fil-Linux
Udev (userspace /dev) hija sottosistema Linux għall-iskoperta u l-ġestjoni ta 'apparat dinamiku, mill-verżjoni tal-kernel 2.6. Huwa sostituzzjoni ta 'devfs u hotplug.
Din toħloq jew tneħħi b'mod dinamiku nodi tal-apparat (interface għal sewwieq tal-apparat li jidher f'sistema ta' fajls bħallikieku kien fajl ordinarju, maħżun taħt id-direttorju /dev) fil-ħin tal-boot jew jekk iżżid apparat ma' jew tneħħi apparat minn is-sistema. Imbagħad jippropaga informazzjoni dwar apparat jew jibdel l-istat tiegħu fl-ispazju tal-utent.
Il-funzjoni tagħha hija li 1) tforni l-applikazzjonijiet tas-sistema b'avvenimenti tal-apparat, 2) timmaniġġja l-permessi tan-nodi tal-apparat, u 3) tista 'toħloq symlinks utli fid-direttorju/dev għall-aċċess tal-apparati, jew saħansitra tibdel l-isem tal-interfaces tan-netwerk.
Wieħed mill-vantaġġi ta 'udev huwa li jista' juża ismijiet ta 'apparat persistenti biex jiggarantixxi ismijiet konsistenti ta' apparati matul reboots, minkejja l-ordni ta 'skoperta tagħhom. Din il-karatteristika hija utli għaliex il-qalba sempliċement tassenja ismijiet ta 'apparat imprevedibbli bbażati fuq l-ordni ta' skoperta.
F'dan l-artikolu, se nitgħallmu kif nużaw Udev għall-iskoperta u l-ġestjoni tal-apparat fuq sistemi Linux. Innota li l-biċċa l-kbira jekk mhux id-distribuzzjonijiet moderni tal-Linux mainstream kollha jiġu ma 'Udev bħala parti mill-installazzjoni awtomatika.
Tgħallem il-Basics ta 'Udev fil-Linux
Id-demon udev, systemd-udevd (jew systemd-udevd.service) jikkomunika mal-kernel u jirċievi uevents tal-apparat direttament minnu kull darba li żżid jew tneħħi apparat mis-sistema, jew apparat jibdel l-istat tiegħu.
Udev huwa bbażat fuq regoli - ir-regoli huma flessibbli u qawwija ħafna. Kull avveniment ta' apparat riċevut jitqabbel mas-sett ta' regoli li jinqraw minn fajls li jinsabu f'/lib/udev/rules.d u /run/udev/rules.d.
Tista' tikteb fajls tar-regoli tad-dwana fid-direttorju /etc/udev/rules.d/ (il-fajls għandhom jispiċċaw bl-estensjoni .rules
) biex tipproċessa apparat. Innota li l-fajls tar-regoli f'dan id-direttorju għandhom l-ogħla prijorità.
Biex toħloq fajl tan-node tal-apparat, udev jeħtieġ li jidentifika apparat billi juża ċerti attributi bħat-tikketta, in-numru tas-serje, in-numru maġġuri u minuri tiegħu użat, in-numru tal-apparat tax-xarabank u ħafna aktar. Din l-informazzjoni hija esportata mis-sistema tal-fajls sysfs.
Kull meta tqabbad apparat mas-sistema, il-kernel jiskoprih u jinizjalizzah, u jinħoloq direttorju bl-isem tal-apparat taħt id-direttorju /sys/ li jaħżen l-attributi tal-apparat.
Il-fajl tal-konfigurazzjoni prinċipali għal udev huwa /etc/udev/udev.conf, u biex tikkontrolla l-imġieba tar-runtime id-demon udev, tista' tuża l-utilità udevadm.
Biex turi avvenimenti tal-kernel riċevuti (uevents) u avvenimenti udev (li udev jibgħat wara l-ipproċessar tar-regoli), ħaddem udevadm bil-kmand tal-monitor. Imbagħad qabbad apparat mas-sistema tiegħek u ara, mit-terminal, kif l-avveniment tat-tagħmir jiġi mmaniġġjat.
Il-screenshot li ġejja turi silta ta' avveniment ADD wara li tqabbad USB flash disk mas-sistema tat-test:
$ udevadm monitor
Biex issib l-isem assenjat lid-diska USB tiegħek, uża l-utilità lsblk li taqra s-sistema tal-fajls sysfs u l-udev db biex tiġbor informazzjoni dwar tagħmir ipproċessat.
$ lsblk
Mill-output tal-kmand preċedenti, id-diska USB hija msemmija sdb1
(passaġġ assolut għandu jkun /dev/sdb1
). Biex tistaqsi l-attributi tat-tagħmir mid-database udev, uża l-kmand info.
$ udevadm info /dev/sdb1
Kif taħdem mar-Regoli Udev fil-Linux
F'din it-taqsima, ser niddiskutu fil-qosor kif tikteb ir-regoli udev. Regola tinkludi lista separata b'virgola ta' par ta' valur-ċavetta wieħed jew aktar. Ir-regoli jippermettulek li tibdel l-isem ta 'node ta' apparat mill-isem default, timmodifika l-permessi u s-sjieda ta 'node ta' apparat, tixpruna l-eżekuzzjoni ta 'programm jew skript meta node ta' apparat jinħoloq jew jitħassar, fost oħrajn.
Aħna se niktbu regola sempliċi biex iniedu script meta jiżdied apparat USB u meta jitneħħa mis-sistema li taħdem.
Nibdew billi noħolqu ż-żewġ skripts:
$ sudo vim /bin/device_added.sh
Żid il-linji li ġejjin fl-iskrittura device_added.sh
.
#!/bin/bash echo "USB device added at $(date)" >>/tmp/scripts.log
Iftaħ it-tieni skript.
$ sudo vim /bin/device_removed.sh
Imbagħad żid il-linji li ġejjin fl-iskrittura device_removed.sh
.
#!/bin/bash echo "USB device removed at $(date)" >>/tmp/scripts.log
Issejvja l-fajls, agħlaq u agħmel iż-żewġ skripts eżekutibbli.
$ sudo chmod +x /bin/device_added.sh $ sudo chmod +x /bin/device_removed.sh
Sussegwentement, ejja noħolqu regola biex tixpruna l-eżekuzzjoni tal-iskripts ta 'hawn fuq, imsejħa /etc/udev/rules.d/80-test.rules.
$ vim /etc/udev/rules.d/80-test.rules
Żid dawn iż-żewġ regoli li ġejjin fiha.
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"
fejn:
==\
: huwa operatur li għandu jqabbel għall-ugwaljanza.\+=\
: huwa operatur li jżid il-valur ma' ċavetta li żżomm lista ta' entrati.- SUBSISTEMA: taqbel mas-subsistema tal-apparat tal-avveniment.
- AZZJONI: taqbel mal-isem tal-azzjoni tal-avveniment.
- ENV{DEVTYPE}: taqbel ma' valur ta' proprjetà ta' apparat, tip ta' apparat f'dan il-każ.
- RUN: jispeċifika programm jew skript li għandu jiġi eżegwit bħala parti mill-immaniġġjar tal-avveniment.
Issejvja l-fajl u agħlaqha. Imbagħad bħala għerq, għid lil systemd-udevd biex jerġa' jgħabbi l-fajls tar-regoli (dan jerġa' jgħabbi wkoll databases oħra bħall-indiċi tal-modulu tal-kernel), billi taħdem.
$ sudo udevadm control --reload
Issa qabbad USB drive fil-magna tiegħek u iċċekkja jekk l-iskript device_added.sh
kienx esegwit. L-ewwelnett il-fajl scripts.log għandu jinħoloq taħt /tmp.
$ ls -l /tmp/scripts.log
Imbagħad il-fajl għandu jkollu dħul bħal \apparat USB mneħħi f'date_time, kif muri fil-screenshot.
$ cat /tmp/scripts.log
Għal aktar informazzjoni dwar kif tikteb ir-regoli udev u timmaniġġja udev, ikkonsulta l-entrati manwali udev u udevadm rispettivament, billi tħaddem:
$ man udev $ man udevadm
Udev huwa maniġer tal-apparat notevoli li jipprovdi mod dinamiku ta' kif jiġu stabbiliti nodi tal-apparat fid-direttorju /dev
. Jiżgura li l-apparati jiġu kkonfigurati hekk kif jiġu pplaggjati u skoperti. Tippropaga informazzjoni dwar apparat ipproċessat jew bidliet fl-istat tiegħu, fl-ispazju tal-utent.
Jekk għandek xi mistoqsijiet jew ħsibijiet x'taqsam dwar dan is-suġġett, uża l-formola ta' feedback.