udev – system plików zastępujący starszą implementację (devfs) mechanizmu dynamicznej alokacji tzw. plików urządzeń. Został wprowadzony w jądrze Linux począwszy od serii 2.6.
W przeciwieństwie do tradycyjnego zarządzania plikami urządzeń w Linuksie udev nie przechowuje statycznego katalogu /dev. Zamiast tego w /dev umieszczane są jedynie pliki reprezentujące urządzenia faktycznie obecne w systemie. W odróżnieniu od devfs, udev działa w przestrzeni użytkownika i pozwala na znacznie swobodniejszą obsługę katalogu /dev. Przeniesienie obsługi /dev z jądra do przestrzeni użytkownika wywołało wiele dyskusji. Porównanie devfs i udev jest dostępne w archiwach kernel.org[1].
Najważniejsze zalety udev według powyższego dokumentu to:
udev pozwala posiadać reguły opisujące jaką nazwę powinno otrzymać dane urządzenie, niezależnie od tego w jaki sposób zostanie do systemu podłączone. Oznacza to, że w przypadku urządzeń zawierających się w klasie dysków (USB, cyfrowy aparat fotograficzny, pendrive i odtwarzacz MP3) mogą one być podłączane w różnej kolejności i do różnych kontrolerów/portów USB, a i tak otrzymają swoje stałe nazwy, np. /dev/camera, /dev/iriver. W przypadku devfs o nazwach decydowałaby kolejność podłączenia, a nazwy byłyby generowane na zasadzie dodania kolejnego numeru do typu urządzenia, np. /dev/sda0, /dev/sda1. udev umożliwia pisanie skryptów bazujących na nazwach urządzeń i mieć gwarancję, że po zmianie sposobu czy kolejności podłączenia urządzeń skrypty nadal będą działać prawidłowo.
Początkowo udev działał otrzymując informacje o zdarzeniach od /sbin/hotplug (który otrzymuje je od jądra) za każdym razem kiedy urządzenie jest dodawane lub usuwane z systemu. Aktualnie funkcje programu /sbin/hotplug zostały zaimplementowane w udev i nie jest on już potrzebny.
udev zostało opracowane przez Grega Kroah-Hartmana we współpracy z Dane Stekloffem, Kayem Sieversem i wieloma innymi.