Statyczne zarządzanie modułami kernela i urządzeniami w /dev
było skomplikowane, uciążliwe i wymagało praw administratora,
stąd narodziła się idea systemu, który zautomatyzuje te czynności.
Tak oto powstał udev,
współczesne wersje udeva (następcy DevFS) mają wbudowaną obsługę
hotpluga i coldpluga.
Dzięki temu mogą automatycznie ładować potrzebne moduły, ma to sens wyłącznie
w przypadku modularnego kernela, jaki jest dostępny w PLD.
Mimo włączenia hotpluga do udeva w PLD ciągle dostępne są pakiety
z hotplugiem, są przechowywane jedynie dla wstecznej zgodności i
nie będą nam już potrzebne.
Poza nielicznymi wypadkami nie będzie już konieczne dopisywanie
nazw modułów do pliku /etc/modules, ani ich
ręczne ładowanie za pomocą programu modprobe.
Więcej o plikach urządzeń znajdziemy w
tym dokumencie.
Instalacja
W systemie domyślnie instalowany jest pakiet
dev, jeśli zechcemy przejść
na udev to wystarczy, że zainstalujemy pakiet udev
a następnie odinstalujemy dev np.:
# poldek -i udev
# poldek -e dev |
Osoby nie ufające do końca dynamicznemu tworzeniu urządzeń,
nie usuwają z systemu statycznego deva tak jak to
zrobiliśmy powyżej. Praktyka pokazuje jednak, że nie ma powodów
do obaw i poza wyjątkowo ważnymi instalacjami systemu nie ma
takiej potrzeby.
Konfiguracja
Udev w większości wypadków nie wymaga żadnych operacji
konfiguracyjnych, czasami tylko konieczne jest poprawienie lub
dodanie regułki do katalogu /etc/udev/rules.d/.
Zanim się tym zajmiemy powinniśmy zapoznać się z
dokumentacją.
W Ac do wyboru są dwa
tryby pracy: udevstart
(domyślny) i udevsynthesize.
Ten drugi wykrywa większą liczbę urządzeń, stąd
warto się pokusić o wybór właśnie jego. Aby go używać
wystarczy, że ustawimy odpowiednią opcję
w pliku /etc/udev/udev.conf:
UDEV_STARTER="udevsynthesize" |
W Th powyższe opcje nie są już
dostępne, ich miejsce zajął mechanizm udevtrigger.
Udev w praktyce
Liczba załadowanych modułów przez udev może przywrócić
o zawrót głowy, udev ładuje moduły znalezionych
urządzeń bez względu czy w ogóle z niego korzystamy.
Jedyną wadą takiego działania jest większe zużycie
pamięci przez nieużywane sterowniki. Nie powinno
przekroczyć 2MiB pamięci, więc dla ogromnej większości
współczesnych komputerów nie będzie to stanowić
żadnego problemu.
Mamy wpływ na listę ładowanych modułów, aby zablokować
ładowanie jakiegoś modułu wystarczy dodać do pliku
/etc/modprobe.conf nazwę modułu
poprzedzoną słowem blacklist np.:
blacklist rivafb
blacklist nvidiafb |
Powyższa metoda ma sens jedynie jeśli chcemy zablokować
pojedyncze moduły, jeśli mamy komputer o bardzo małej
ilości pamięci lepszym pomysłem będzie pozostanie przy
statycznej metodzie ładowania modułów.
Uwagi
Jeśli mamy kilka kontrolerów urządzeń masowych
(IDE/SATA/SCSI) to mogą występować problemy z
wykrywaniem ich na czas, tak by były gotowe do
zamontowania systemów plików określonych w
/etc/fstab.
Jedynym pewnym sposobem poradzenia sobie z tym
kłopotem jest dodanie modułów kontrolerów
do initrd.
Więcej o udev możemy poczytać w FAQ
Udev nie zajmuje się montowaniem przenośnych nośników danych,
musimy robić to ręcznie (co wymaga uprawnień administratora),
lub użyć HAL-a, D-Busa oraz np. gnome-volume-manager w przypadku
środowiska Gnome.
|