Udev

Udev
del av systemd
Generell informasjon
programtype Enhetens filsystem
utvikler Greg Kroah-Hartman og Kay Sievers
Første utgivelse november 2003 _
oppdateringsdato 2012
Tillatelse GPLv 2
Teknisk informasjon
Planlagt inn C
Versjoner
Siste stabile versjon 217 (28. oktober 2014 (7 år, 11 måneder og 18 dager))
systemd serien
Devfsd og Device FilesystemUdev
Lenker
Offesiell nettside kodelager

udev er enhetsbehandleren som brukes av Linux -kjernen versjon 2.6. Dens funksjon er å kontrollere enhetsfilene i /dev . Det er etterfølgeren til devfs og hotplug, noe som betyr at den håndterer /dev -katalogen og alle brukerområdehandlinger når du legger til eller fjerner enheter, inkludert lasting av fastvare .

Motivasjon

På et tradisjonelt Linux-system (uten udev eller devfs ), i /dev -katalogen er det enhetsnoder opprettet for hver kjent enhet, enten den er på systemet eller ikke. Det sies å være et statisk filsett , siden nodene ikke endres.

I tillegg er måten å få tilgang til et spesifikt periferutstyr på ikke alltid den samme, siden det avhenger av hvilke andre enheter som er tilkoblet: hvis disk A og B er tilkoblet, vil de bli kalt henholdsvis disk1 og disk2 . Men hvis det bare er én disk (B, for eksempel), vil den hete disk1 , fordi det bare er én. B-en har endret navn.

Denne enhetsadministrasjonsmodellen gir noen problemer:

udev løser disse problemene, spesielt å kunne få tilgang til en enhet med et fast navn. Dette var grunnen til at udev ble laget , siden det var devfs før det, som løste noen av disse problemene, men ikke alle (se avsnittet Forskjeller med devfs ).

Funksjoner

udev løser problemene ovenfor på følgende måte:

Bare tilkoblede enheter

udev opprettholder i /dev bare oppføringene som tilsvarer enhetene som er koblet til systemet. Dette fikser det overfylte /dev -problemet.

Dur og moll ikke brukt

Major- og moltall brukes ikke til å gjenkjenne hver enhet. Det kan fungere selv om de er tilfeldig valgt. Derfor påvirkes den ikke av å gå tom for tilordnede dur / moll kombinasjoner.

Tillater å gi fast navn

Det gjør det mulig å gi et fast navn for hver enhet, for eksempel kamera , uten at det avhenger av hvilke andre enheter som er tilkoblet eller rekkefølgen de er koblet til.

En harddisk, for eksempel, gjenkjennes av filsystemidentifikatoren , navnet på stasjonen og den fysiske kontakten den er på.

Fortell programmene

Den varsler via D-BUS- meldinger slik at ethvert brukerromsprogram kan vite når en enhet går online eller offline (dette er nyttig for HAL ). Den lar også programmer se listen over tilkoblede enheter og hvordan de får tilgang til hver enkelt.

Alt i brukerområdet

udev gjør all enhetsnavngivningspolicy i brukerområdet , ikke i kjernen . Dette gjør det mulig for ethvert program å bestemme navnet på en enhet, for eksempel basert på dens egenskaper. Det er ikke nødvendig å endre kjernen hvis du ikke er fornøyd med navnet som er gitt til en enhet.

En annen fordel med å ha udev - demonen ( udevd ) i brukerplass er at dette minnet kan flyttes til disk ( swap space ), i motsetning til kjerneminne . Dette gjør den egnet for innebygde systemer med lite fysisk minne .

Andre funksjoner

udev respekterer måten å navngi enheter definert i LSB på , selv om det lar brukere bruke andre navn.

Prosessen ( udevd ) tar opp lite minne og trenger ikke å kjøre hele tiden. Dette favoriserer også innebygde systemer og mindre kraftig utstyr.

Forskjeller fra devfs

devfs ble også laget for å fikse noen av de originale problemene, men ikke alle. Udev- forfatterne forklarer i [1] årsakene til at udev er bedre enn devfs .

Oppsummering:

Implementering

udev kjøres av en demon : udevd- prosessen , som oppdager når en enhet har blitt koblet til eller fra systemet.

Når en av disse hendelsene skjer, henter udev kontekstinformasjon (kjernens undersystem, fysisk kontakt som brukes, navn gitt av kjernen, ...) og også om selve enheten (serienummer, produsent, ...).

Denne informasjonen kan finnes gjennom dataene i /sys , hvor sysfs- filsystemet er montert , som håndteres av kjernen (versjon 2.6 og nyere).

Et sett med regler (i /etc/udev/rules.d/ ) bestemmer hva som skal gjøres basert på dataene som er innhentet. Det regelen vil gjøre er -sannsynligvis- å gi enheten et navn, lage den riktige enhetsfilen og kjøre det programmet som er konfigurert for å fullføre kjøringen av enheten.

Reglene kan knytte et fast navn til en enhet, men de kan også kalle et eksternt program som gir mer informasjon om enheten; slik at du kan få et mer spesifikt navn.

Eksempel på regler

To mulige regler som gir et fast navn til to forskjellige skrivere ; begge tilkoblet via USB , men med et annet serienummer (hentet av sysfs ):

BUS=="usb", SYSFS_serial=="W09090207101241330", \ NAME="lp_color" BUS=="usb", SYSFS_serial=="HXOLL0012202323480", \ NAME="lp_plain"

Forfattere

udev ble utviklet av Greg Kroah-Hartman, med hjelp fra Dan Stekloff, Kay Sievers og mange andre.

Eksterne lenker