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): https://web.archive.org/web/20110709174547/http://kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs

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 
*  udev erregelak idatzi
*  udev-i buruzko galderak eta erantzunak
*  Gentoo-ren udev gida
*  udev vs. devfs