udev | |
---|---|
Type | enhedsknudepunkt |
Udvikler | Greg Kroah-Hartman og Kay Sievers |
Skrevet i | FRA |
Operativ system | Linux (kerne) |
Første udgave | november 2003 |
nyeste version | 251 ( 21. maj 2022 ) [1] |
Licens | GPL v2 |
Internet side | git.kernel.org/?p=linux/... |
udev - Enhedsstyring til nye versioner af Linux-kernen , efterfølger til devfs , hotplug og HAL . Dens hovedopgave er at betjene enhedsknuderne i mappen / dev og håndtere alle handlinger, der udføres i brugerrummet , når der tilføjes/fjernes eksterne enheder, inklusive indlæsning af firmware .
udev blev tilføjet i Linux 2.5.
En ny uevent -grænseflade er blevet introduceret og opdateret i Linux 2.6.13 -kernen. Den nye udev vil ikke fungere på kerner ældre end 2.6.13.
I april 2012 blev udev-kildekoden flettet ind i systemd -kildekoden [2] .
eudev- projektet (en forgrening af Gentoos udev ) er officielt startet som en erstatning for Systemd-udevd. På den sidste FOSDEM 2013-konference gjorde eudev-udviklerne det klart, at eudev "er et rent uddannelsesprojekt for dem", og "deres kode i sin nuværende tilstand bør på ingen måde betragtes som produktionsklar" [1] .
Takket være udev indeholder mappen /dev kun filer til enheder, der i øjeblikket er forbundet til systemet. Hver enhed har sin egen tilsvarende fil. Hvis enheden afbrydes fra systemet, slettes denne fil. Indholdet af /dev-mappen gemmes på et virtuelt filsystem , og alle filer i det oprettes, hver gang systemet startes. Ændrede eller manuelt oprettede filer gemmes ikke efter genstart. Filer og mapper, der skal bevares, eller som altid skal være til stede i /dev-mappen, uanset tilstanden på den respektive enhed, skal placeres i mappen /lib/udev/devices. Ved systemstart kopieres indholdet af denne mappe til /dev, som det er (med samme tilladelser).
I modsætning til det traditionelle Unix /dev- katalogstyringssystem , hvor indholdet var et uforanderligt sæt filer, giver udev således dynamisk styring af enheder, der faktisk er i systemet. Selvom devf'er plejede at levere denne funktionalitet , fremhæver udev-tilhængere følgende fordele ved deres løsning [3] :
udev kører som en dæmon og modtager uevents fra kernen via netlink- socket , som genereres, når enheden initialiseres eller fjernes fra systemet. Brugerdefinerede (system) regler kontrolleres i forhold til egenskaberne for hændelsen og den tilsvarende enhed, og den matchede regel (hvoraf der kan være mere end én) kan navngive og oprette den tilsvarende enhedsfil, samt udføre andre programmer for at initialisere og konfigurere enheden. For eksempel kan du på denne måde implementere automatisk montering af eksterne drev, når de er tilsluttet.
Regler kan kontrolleres i forhold til egenskaber såsom det specifikke kerneundersystem, navnet på enheden i kernen, den fysiske placering af enheden eller enhedens serienummer. Regler kan også forespørge oplysninger ved hjælp af andre programmer eller angive, at enhedsnavnet altid vil være det samme, uanset hvilken rækkefølge systemet opdager enhederne.
En typisk måde at bruge udev på et Linux-system er at tillade, at HAL- eller DeviceKit- begivenheder sendes , så de udfører efterfølgende enhedsspecifikke handlinger. For eksempel kan HAL/DeviceKit underrette andre programmer om en ny enhed ved hjælp af en D-Bus- udsendelsesmeddelelse . Således kan skrivebordsmiljøer som GNOME eller KDE automatisk montere USB -drevet og åbne en filhåndtering for at se dets indhold.
udev er opdelt i tre dele:
udev modtager hændelser fra kernen via en netlink-socket. Tidlige versioner brugte hotplug ved at tilføje det til /etc/hotplug.d/default .