udev - udev
| Kehittäjä (t) | Greg Kroah-Hartman ja Kay Sievers |
|---|---|
| Ensimmäinen julkaisu | Marraskuu 2003 |
| Vakaa julkaisu | 249 (7. heinäkuuta 2021 ) [±] |
| Varasto | |
| Kirjoitettu sisään | C |
| Käyttöjärjestelmä | Linux -ydin |
| Tyyppi | Laitteen solmu |
| Lisenssi | GPLv2 |
| Verkkosivusto | Virallinen nettisivu |
udev (userspace /dev) on Linux -ytimen laitehallinta . Kuten seuraaja devfsd ja hotplug, udev ensisijaisesti hallinnoi laitteen solmut on / dev hakemistoon. Samaan aikaan udev käsittelee myös kaikki käyttäjätilatapahtumat, jotka syntyvät, kun laitteistoja lisätään järjestelmään tai poistetaan siitä, mukaan lukien laiteohjelmiston lataaminen tiettyjen laitteiden edellyttämällä tavalla.
Perustelut
Se on käyttöjärjestelmän n ydin , joka on vastuussa abstrakteja rajapintoja laitteisto muuhun ohjelmiston. Koska monoliittinen ydin The Linux-ytimen juuri näin, ja laiteohjaimet ovat osa Linux-ytimen, jotka muodostavat yli puolet sen lähdekoodin. Laitteistoon pääsee käsiksi järjestelmäpuheluiden kautta tai laitteen solmujen kautta .
Jotta voisimme käsitellä hotplug- yhteensopivia oheislaitteita käyttäjäystävällisellä tavalla, osa kaikkien näiden hotplug-yhteensopivien laitteiden käsittelystä siirrettiin ytimestä käyttäjätilassa kulkevalle daemonille . Käyttäjätilassa ajaminen palvelee turvallisuutta ja vakautta.
Design
Laiteajurit ovat osa Linux-ydintä, jonka ensisijaisia toimintoja ovat laitteen löytäminen, laitteen tilan muutosten havaitseminen ja vastaavat matalan tason laitteisto-toiminnot. Kun laiteohjain on ladattu ytimestä muistiin, havaitut tapahtumat lähetetään userpace -daemonille udevd. Laitehallinta udevd saa kaikki nämä tapahtumat kiinni ja päättää sitten, mitä tapahtuu seuraavaksi. Tätä varten udevd: llä on erittäin kattava joukko määritystiedostoja, joita tietokoneen järjestelmänvalvoja voi muokata tarpeidensa mukaan.
- Siinä tapauksessa, että uusi tallennusväline on kytketty USB, udevd ilmoitetaan ytimen ja itse ilmoittaa udisksd-daemon. Tämä demoni voisi sitten asentaa tiedostojärjestelmät.
- Jos Ethernet-verkkokorttiin kytketään uusi Ethernet-kaapeli, ydin ilmoittaa udevd : lle ja ilmoittaa siitä NetworkManager-daemonille. NetworkManager-daemon voi käynnistää dhclientin kyseiselle verkkokortille tai määrittää sen joidenkin manuaalisten määritysten mukaan.
Monimutkaisuus pakottaa sovellusten tekijät ottamaan laitteistotukilogiikan uudelleen käyttöön. Jotkin laitteistot vaativat myös etuoikeutettuja apuohjelmia niiden valmistelemiseksi käyttöön. Näitä on usein vedottava tavoilla, joita voi olla hankala ilmaista Unix -käyttöoikeusmallilla (esimerkiksi sallimalla käyttäjien liittyä langattomiin verkkoihin vain, jos he ovat kirjautuneet videokonsoliin). Sovellus kirjoittajat turvautuvat setuid binaries tai juosta palvelu demonit tarjota omia kulunvalvonnan ja etuoikeus erottaminen, mahdollisesti aiheuttamalla tietoturva-aukkoja joka kerta.
HAL luotiin käsittelemään tätä, mutta se on nyt vanhentunut useimmissa Linux -jakeluissa.
Yleiskatsaus
Toisin kuin perinteiset Unix järjestelmissä, joissa laite solmut on / dev hakemisto on staattinen joukko tiedostoja, Linux udev laitehallinta dynaamisesti vain solmut laitteille tosiasiallisesti järjestelmään. Vaikka devfs tarjosi aiemmin samankaltaisia toimintoja, Greg Kroah-Hartman mainitsi useita syitä, miksi udev oli parempi kuin devfs:
- udev tukee jatkuvaa laitteiden nimeämistä, mikä ei riipu esimerkiksi järjestyksestä, jossa laitteet liitetään järjestelmään. Udev -oletusasetus tarjoaa tallennuslaitteille pysyviä nimiä. Mikä tahansa kiintolevy tunnistetaan sen ainutlaatuisen tiedostojärjestelmän tunnuksen, levyn nimen ja fyysisen sijainnin perusteella laitteistossa, johon se on yhdistetty.
- udev suorittaa kokonaan käyttäjän tilaa , toisin kuin devfs: n ytimen tilaa . Yksi seuraus on, että udev siirsi nimeämiskäytännön ytimestä ja voi suorittaa mielivaltaisia ohjelmia laitteen nimen luomiseksi laitteen ominaisuuksista ennen solmun luomista; siellä koko prosessi on myös keskeytettävissä ja se toimii pienemmällä prioriteetilla.
Udev on kokonaisuudessaan jaettu kolmeen osaan:
- Kirjasto libudev, joka mahdollistaa pääsyn laitteen tietoihin; se sisällytettiin systemd 183 -ohjelmistopakettiin.
- Käyttäjätilien demoni udevd, joka hallinnoi virtuaalista /dev .
- Hallinnolliset komentorivin hyödyllisyys udevadm diagnostiikka.
Järjestelmä vastaanottaa puheluita ytimestä verkkolinkin kautta . Aiemmissa versioissa käytetyt hotplug , lisäämällä linkin itse /etc/hotplug.d/default tähän tarkoitukseen.
Operaatio
udev on yleinen laitehallinta, joka toimii daemonina Linux -järjestelmässä ja kuuntelee ( netlink -liitännän kautta ) ytimen lähettämiä tapahtumia, jos uusi laite alustetaan tai laite poistetaan järjestelmästä. Udev -paketin mukana tulee laaja joukko sääntöjä, jotka vastaavat tapahtuman vietyjä arvoja ja löydetyn laitteen ominaisuuksia. Vastaava sääntö mahdollisesti nimeää ja luo laitteen solmun ja suorittaa määritetyt ohjelmat laitteen asentamiseksi ja määrittämiseksi.
udev -säännöt voivat täsmätä ominaisuuksiin, kuten ytimen alijärjestelmään, ytimen laitteen nimeen, laitteen fyysiseen sijaintiin tai ominaisuuksiin, kuten laitteen sarjanumero. Säännöt voivat myös pyytää tietoja ulkoisilta ohjelmilta laitteen nimeämiseksi tai määrittää mukautetun nimen, joka on aina sama riippumatta siitä, missä järjestyksessä laitteet löytävät laitteen.
Aiemmin yleinen tapa käyttää udevia Linux-järjestelmissä oli antaa sen lähettää tapahtumia pistorasian kautta HAL: lle , joka suorittaa muita laitekohtaisia toimintoja. Esimerkiksi HAL ilmoittaisi muille järjestelmässä toimiville ohjelmistoille uuden laitteiston saapumisesta lähettämällä yleislähetysviestin D-Bus IPC -järjestelmässä kaikille kiinnostuneille prosesseille . Tällä tavalla pöytäkoneet, kuten GNOME tai K Desktop Environment 3, voivat käynnistää tiedostoselaimen selatakseen uusien USB -muistitikkujen ja SD -korttien tiedostojärjestelmiä .
Vuoden 2011 puoliväliin mennessä HAL oli poistettu käytöstä useimmissa Linux -jakeluissa sekä muun muassa KDE-, GNOME- ja Xfce -työpöytäympäristöissä. Aiemmin HAL: ssa ilmenneet toiminnot on integroitu udeviin tai siirretty erillisiin ohjelmistoihin, kuten udisks ja upower .
- udev tarjoaa matalan tason pääsyn linux-laitepuuhun. Antaa ohjelmien luetella laitteet ja niiden ominaisuudet ja saada ilmoituksia laitteiden tulosta ja katoamisesta.
- dbus on kehys, jonka avulla ohjelmat voivat kommunikoida keskenään turvallisesti, luotettavasti ja korkean tason olio-ohjelmointirajapinnan avulla.
- udisks (aiemmin tunnettu nimellä DeviceKit-levyt) on demone, joka sijaitsee libudev- ja muiden ytimen rajapintojen päällä ja tarjoaa korkean tason käyttöliittymän tallennuslaitteille ja on sovellusten käytettävissä dbus-väylän kautta.
- upower (aiemmin tunnettu nimellä DeviceKit-power) on daemon, joka sijaitsee libudev- ja muiden ytimen rajapintojen päällä ja tarjoaa korkean tason käyttöliittymän virranhallintaan ja on saatavilla dbus-sovelluksen kautta.
- NetworkManager on daemon, joka sijaitsee libudev- ja muiden ytimen rajapintojen (ja muutaman muun demonin) päällä ja tarjoaa korkean tason käyttöliittymän verkon kokoonpanoon ja asetuksiin, ja se on käytettävissä dbus-sovelluksen kautta.
udev vastaanottaa viestejä ytimestä ja välittää ne alijärjestelmän demoneille, kuten Network Manager. Sovellukset puhuvat Network Managerin kanssa D-Busin kautta.
HAL on vanhentunut ja sitä käyttää vain vanha koodi. Ubuntu 10.04 toimitetaan ilman HAL -järjestelmää. Alun perin suunniteltiin uusi daemon DeviceKit, joka korvasi tietyt HAL-osat, mutta maaliskuussa 2009 DeviceKit poistettiin käytöstä ja lisäsi saman koodin udeviin paketiksi: udev-extrat, ja jotkin toiminnot ovat nyt siirtyneet udev oikeaan.
Historia
udev esiteltiin Linux 2.5: ssä . Linux -ytimen versio 2.6.13 esitteli tai päivitti uevent -käyttöliittymän uuden version . Järjestelmä, joka käyttää uutta udev -versiota, ei käynnisty ytimillä, jotka ovat vanhempia kuin 2.6.13, ellei udev ole poistettu käytöstä ja laitteen käyttö edellyttää perinteistä /dev -hakemistoa.
Huhtikuussa 2012 udevin koodikanta yhdistettiin systemd -lähdepuuhun , jolloin systemd 183 oli ensimmäinen versio, joka sisälsi udev: n. Lokakuussa 2012 Linus Torvalds kritisoi Kay Sieversin lähestymistapaa udev -ylläpitoon ja virheiden korjaamiseen liittyen laiteohjelmiston lataamiseen ja totesi:
Kyllä, sen tekeminen ytimessä on "tehokkaampaa". Mutta älä pelaa pelejä ja lopeta valehtelu. Se on vankempi, koska meillä on ylläpitäjiä, jotka välittävät, ja koska tiedämme, että regressioita ei voida pelata nopeasti ja löysästi. Jos jotain taukoja, emmekä tiedä, mitä oikea korjaus että rikkoutuminen on, me palauttaa asia, joka hajosi. Joten kyllä, meidän on selvästi parempi tehdä se ytimessä. Ei siksi, että laiteohjelmistoa ei voida ladata käyttäjätilassa. Mutta yksinkertaisesti siksi, että udev -huolto Gregin luopumisen jälkeen on mennyt alamäkeen.
Vuonna 2012 Gentoo Linux -projekti loi haarukan systemdin udev -koodikannasta, jotta vältettäisiin riippuvuus systemd -arkkitehtuurista. Tuloksena olevaa haarukkaa kutsutaan eudeviksi, ja se tekee udev -toiminnallisuuden saataville ilman systemd -järjestelmää . Projektin tavoitteena on pitää eudev riippumattomana kaikista Linux -jakelu- tai init -järjestelmistä. Gentoo -projekti kuvaa eudevia seuraavasti:
eudev on haarukka systemd-udev jonka tavoitteena saada parempi yhteensopivuus olemassa olevien ohjelmistojen, kuten OpenRC ja Nousukas , vanhemmat ytimistä eri työvälineenä ja muuta vaatimat käyttäjien ja eri jakaumat.
29. toukokuuta 2014 udev: n kautta ladatun laiteohjelmiston tuki poistettiin systemd: stä, koska on päätetty, että ytimen tehtävänä on ladata laiteohjelmisto. Kaksi päivää myöhemmin Lennart Poettering ehdotti tämän korjaustiedoston lykkäämistä, kunnes udev alkaa käyttää kdbusia ; siinä vaiheessa suunnitelmana oli vaihtaa udev käyttämään kdbus-pohjaista viestijärjestelmää ja päästä eroon käyttäjätilojen välisestä verkkolinkkiliikenteestä.
Tekijät
udev kehitti Greg Kroah-Hartman ja Kay Sievers , paljon apua Dan Stekloff mm.