udev

udevsystem 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.

Możliwości udev

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 jest niezależny od numerów major i minor urządzeń, natomiast devfs nie potrafi obsługiwać ich w ten sposób
  • w odróżnieniu od devfs, udev obsługuje nadawanie urządzeniom stałych nazw, które nie zmienią się po restarcie, i nie zależą od kolejności załadowania sterowników czy podłączenia urządzeń
  • udev jest narzędziem działającym w przestrzeni użytkownika, w przeciwieństwie do devfs (działającego w przestrzeni jądra). Powoduje to przeniesienie obsługi nazw urządzeń poza jądro, co jest uważane za zaletę.
  • udev jest mniejsze i w przeciwieństwie do devfs zgodne z wytycznymi co do sposobu nazywania urządzeń zawartego w Linux Standard Base
  • niektórzy deweloperzy uważają, że devfs cierpi z powodu braku opieki, zaprojektowany został w sposób nie nadający się do poprawienia i powoduje poważne problemy.

Działanie

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.

Autorzy

udev zostało opracowane przez Grega Kroah-Hartmana we współpracy z Dane Stekloffem, Kayem Sieversem i wieloma innymi.

Linki zewnętrzne

Przypisy

  1. Greg Kroah-Hartman: udev and devfs - The final word (ang.). 2003-12-30. [dostęp 2010-04-08]. [zarchiwizowane z tego adresu (2011-07-09)].