udev | |
---|---|
Tip de | nodul dispozitivului |
Dezvoltator | Greg Kroah-Hartman și Kay Sievers |
Scris in | DIN |
Sistem de operare | Linux (kernel) |
Prima editie | noiembrie 2003 |
ultima versiune | 251 ( 21 mai 2022 ) [1] |
Licență | GPL v2 |
Site-ul web | git.kernel.org/?p=linux/… |
udev - Gestionarea dispozitivelor pentru noile versiuni ale nucleului Linux , succesorul devfs , hotplug și HAL . Sarcina sa principală este de a servi nodurile dispozitivului din directorul / dev și de a gestiona toate acțiunile efectuate în spațiul utilizatorului la adăugarea/eliminarea dispozitivelor externe, inclusiv încărcarea firmware -ului .
udev a fost adăugat în Linux 2.5.
O nouă interfață uevent a fost introdusă și actualizată în nucleul Linux 2.6.13 . Noul udev nu va funcționa pe nuclee mai vechi de 2.6.13.
În aprilie 2012, codul sursă udev a fost fuzionat cu codul sursă systemd [2] .
Proiectul eudev (o furcă a udev lui Gentoo ) a început oficial ca înlocuitor pentru Systemd-udevd. La ultima conferință FOSDEM 2013, dezvoltatorii eudev au precizat că eudev „este un proiect pur educațional pentru ei” și „codul lor în starea actuală nu ar trebui în niciun caz considerat gata de producție” [1] .
Datorită udev, directorul /dev conține doar fișiere pentru dispozitivele care sunt conectate în prezent la sistem. Fiecare dispozitiv are propriul său fișier corespunzător. Dacă dispozitivul este deconectat de la sistem, atunci acest fișier este șters. Conținutul directorului /dev este stocat pe un sistem de fișiere virtual și toate fișierele din acesta sunt create de fiecare dată când sistemul este pornit. Fișierele modificate sau create manual nu sunt salvate după repornire. Fișierele și directoarele care trebuie păstrate sau care ar trebui să fie întotdeauna prezente în directorul /dev, indiferent de starea dispozitivului respectiv, ar trebui plasate în directorul /lib/udev/devices. La pornirea sistemului, conținutul acestui director este copiat în /dev așa cum este (cu aceleași permisiuni).
Astfel, spre deosebire de schema tradițională de gestionare a directoarelor Unix /dev , în care conținutul său era un set imuabil de fișiere, udev oferă un management dinamic al dispozitivelor care se află de fapt în sistem. Deși devfs obișnuia să ofere această funcționalitate , susținătorii udev evidențiază următoarele avantaje ale soluției lor [3] :
udev rulează ca un daemon și primește uevents de la kernel prin intermediul socket -ului netlink , care sunt generate atunci când dispozitivul este inițializat sau eliminat din sistem. Regulile definite de utilizator (de sistem) sunt verificate în raport cu proprietățile evenimentului și ale dispozitivului corespunzător, iar regula potrivită (din care poate fi mai mult de una) poate denumi și crea fișierul dispozitivului corespunzător, precum și poate executa alte programe pentru inițializați și configurați dispozitivul. De exemplu, în acest fel puteți implementa montarea automată a unităților externe atunci când sunt conectate.
Regulile pot fi verificate în funcție de proprietăți, cum ar fi subsistemul specific al nucleului, numele dispozitivului din nucleu, locația fizică a dispozitivului sau numărul de serie al dispozitivului. De asemenea, regulile pot interoga informații folosind alte programe sau pot specifica că numele dispozitivului va fi întotdeauna același, indiferent de ordinea în care sistemul descoperă dispozitivele.
O modalitate tipică de a utiliza udev pe un sistem Linux este de a permite trimiterea evenimentelor HAL sau DeviceKit , astfel încât să efectueze acțiuni ulterioare specifice dispozitivului. De exemplu, HAL/DeviceKit poate notifica alte programe despre un dispozitiv nou folosind un mesaj de difuzare D-Bus . Astfel, mediile desktop precum GNOME sau KDE pot monta automat unitatea USB și pot deschide un manager de fișiere pentru a vedea conținutul acesteia.
udev este împărțit în trei părți:
udev primește evenimente de la kernel printr-un socket netlink. Versiunile timpurii foloseau hotplug adăugându-l la /etc/hotplug.d/default .