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 Filesystem | Udev | |
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 .
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 ).
udev løser problemene ovenfor på følgende måte:
udev opprettholder i /dev bare oppføringene som tilsvarer enhetene som er koblet til systemet. Dette fikser det overfylte /dev -problemet.
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.
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å.
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.
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 .
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.
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:
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.
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"udev ble utviklet av Greg Kroah-Hartman, med hjelp fra Dan Stekloff, Kay Sievers og mange andre.