# Udev

udev Linuxen kernelak bere 2.6 bertsioan erabiltzen duen gailuen kudeatzailea da. /dev-en dauden gailu fitxategiak kontrolatzea da bere funtzioa. devfs-ren ondorengo bat da.

## Zergatia

udev eta devfs ez zuten Linux-eko sistema zaharretan, sistema horrek zuen gailu bakoitzarentzat fitxategi batzuk sortzen ziren (gailua sistemara konektatua egon ala ez). Fitxategi multzo estatikoa zela esaten da, nodoak ez baitira aldatzen.
Gainera, periferiko bat atzitzeko modua ez da beti berdina, konektaturik dauden gailuak kontutan hartu behar baitira: A eta B diskoak konektatzen badira, disko1 eta disko2 deituko dira hurrenez hurren. Baina disko bakarra egon ezkero konektaturik (B diskoa adibidez), disko1 deituko da, disko bakarra izango baita. B diskoak beraz izenez aldatu du.
Gailuak kudeatzeko modu honek zenbait arazo eman ditzake:
* /dev katalogoa oso handia eta maneiatzeko zaila izango da, gailu posible guztien informazioa izango baitu.
* gailu bakoitzari esleitutako zenbaki nagusia (major) eta bigarren mailakoa (minor) bukatzen ari ziren
* erabiltzaileak gailu bakoitza beti modu berean atzitu nahi du; USB disko bat konektatzeagatik ez du adibidez bideo kamara berkonfiguratu nahiko
* programek gailu bat noiz konektatu eta deskonektatzen den jakitea beharrezkoa dute
udev-ek arazo hau konpontzen du, batez ere, gailu batera beti izen berarekin atzitu ahal izatearena. Horregatik sortu zen udev, nahiz eta honen aurretik devfs sortu, hauetako arazo batzuk konpontzen zituena.

## Ezaugarriak

Lehen aipatutako arazoak, udev-ek ondoren azaltzen den moduan konpontzen ditu:

### Konektaturiko gailuak bakarrik

udev-ek, sistemara konektaturik dauden gailuen sarrerak bakarrik mantentzen ditu /dev katalogoan. Honela /dev ikeragarri handiaren arazoa konpontzen da.

### Ez da zenbaki nagusia eta bigarren mailakoa erabiltzen

Gailu bakoitza ezagutarazteko ez da zenbaki nagusia eta bigarren mailakoa zenbakirik erabiliko. Ausaz aukeratuta ere ibiliko da sistema hau.

### Izen fijo bat esleitzea onartzen du

Gailu bakoitzari izen finko bat esleitzea onartzen du, adibidez, kamara. Ez dugu zein beste gailu eta zein ordenetan konektatu diren begira ibili beharko.
Adibidez, disko gogor bat, bere fitxategi sistemaren identifikadorea, bere izena eta lotutako konektore fisikoagatik ezagutuko da.

### Programak jakinaren gainean

D-BUS mezuen bidez edozein programari helaraziko dio, gailu bat noiz konektatzen den jakin dezaten. Programei ere konektaturik dauden gailuen zerrenda eskuratzeko aukera ematen die eta atzitzeko modua erakutsi.

### Dena erabiltzailearen ingurunean

Izen politika erabiltzailearen ingurunean egon dadin, eta ez kernel-aren ingurunearen menpe, lortzen da udev-i esker. Beraz, edozein programak gailuaren izena erabaki ahal izatea ahalbidetzen du. Ez da beharrezkoa izango kernela aldatzea.
udev-en deabrua den udevd erabiltzailearen ingurunean izateak ere beste abantaila du, izan ere, memoria hau diskora eramatea posible izango baita, kernelean ez bezala.

### Beste ezaugarri batzuk

Nahiz eta erabiltzaileek izenak aldatzeko aukera izan, udev-ek gailuak LSB-an definiturik dauden eran izendatzen ditu.
udevd prozesuak memoria gutxi erabiltzen du eta ez da beti exekutatu behar. Ahalmen txikiko ordenagailuetarako gauza ona da hau.

## devfs-rekiko aldeak

devfs ere arazo batzuk konpontzeko sortu zen, baina ez arazo guztiak. udev sortu zutenek ondorengo orrian devfs baino hobea izatearen arrazoiak azaltzen dituzte (ingelesez):
Laburbilduz:
* devfs-k, udev-ek bezala, /dev katalogoan konektaturik dauden gailuak bakarrik azaltzen ditu.
* devfs-k ez du nagusia/2. mailakoa zenbakien arazoa konpontzen, ez baitu dinamikoak izatea onartzen.
* devfs-k ez du gailu bakoitzari izen finko bat ematea onartzen (hau da udev sortzeko arrazoi nagusia).
* biek, programei gailuak noiz konektatzen diren ezagutaraztea baimentzen diete.
* devfs-k izen politika kernel-aren esku uzten du, eta ez programengan.
* devfs-k ez ditu LSB-n definituriko izen estandarrak jarraitzen.
* devfs txikia da, baina kernel-aren ingurunean dago eta, beraz, diskora eraman ezin den memoria zatian kokatzen da.

## Inplementazioa

udev, udevd izeneko deabru baten bidez exekutatzen da. Gailu bat noiz konektatu edo kentzen den detektatuko du.
Hauetako gertaera baten aurrean, udev-ek ingurune informazioa (kernelaren subsistema, erabilitako konektore fisikoa, kernelak emandako izena, ...) eta gailuaren informazioa (serie zenbakia, ekoizlea, ...) lortuko ditu.
/etc/udev/rules.d/-en kokatuko erregela multzo batek, jasotako datuen arabera burutu beharreko ekintzak erabakiko ditu. Erregelak seguraski ondorengoa egingo du: gailuari izen bat eman, gailuaren fitxategia sortu eta gailuak lan egin dezan beharrezko programa abiarazi.

## Egileak

udev, Greg Kroah-Hartman-ek sortu zuen Dan Stekloff, Kay Sievers eta beste askoren laguntzaz.

## Kanpo estekak

* (Ingelesez) udev erregelak idatzi
* (Ingelesez) udev-i buruzko galderak eta erantzunak
* (Ingelesez) Gentoo-ren udev gida
* (Ingelesez) udev vs. devfs
* Datuak: Q284236