Czym są?
Sterowniki mogą być wkompilowane do wnętrza jądra lub
wydzielone jako osobne obiekty - moduły. Moduły jądra zostały
stworzone po to by kernel zajmował mało pamięci operacyjnej i
był zarazem uniwersalny. Ułatwiają one także prace ludziom
zaangażowanym w rozwój jądra i dodatkowych modułów (nie potrzeba
kompilować całego kernela by sprawdzić zmiany, wystarczy tylko
sam moduł) Wyobraź sobie sytuację, w której masz wkompilowane
do niego wszystko, a twój system nie posiada urządzeń, które
kernel potrafi obsłużyć. Jest to duże marnotrawstwo, ponieważ
w pamięci znajdą się nie potrzebne nam funkcje. Dodać należy
fakt, ograniczenia wielkości jądra (można to zmienić
odpowiednimi przeróbkami źródeł via Red Hat). Dlatego lubimy
moduły. Dają nam one możliwość wyboru między tym co niezbędne,
a brakiem wsparcia dla urządzeń. Podsumowując. Nie potrzebujesz
to nie używasz.
By móc używać modułów potrzebujesz dwóch rzeczy. Kernela z
wkompilowaną opcją Loadable module support
oraz sterowników skompilowanych jako moduły. Ponieważ
używasz PLD to nie masz co się głowić ponieważ wszystko
to masz u siebie w systemie.
Załadowanie właściwego modułu dla urządzenia
Istnieją dwie metody załadowania modułów:
-
statyczna - metoda tradycyjna,
polega na wskazaniu modułów do załadowania przez
administratora
-
dynamiczna - automatyczne ładowanie modułów, kiedy urządzenie zostaje wykryte
Obydwie metody zostaną przedstawione w dalszych rozdziałach.
Konfiguracja modułów
Plik /etc/modprobe.conf jest przeznaczony do
ustawiania opcji dla ładowanych modułów. Warto dodać iż we wcześniejszych
wersjach kernela ( < 2.6.0) plik nazywał się
/etc/modules.conf. W pliku mamy dostępnych wiele opcji,
my omówimy tylko najczęściej używane: alias,
option i blacklist.
Aliasy - są to dodatkowe nazwy dla modułów,
pozwalają na wczytanie go odwołując się do aliasu. Z aliasów korzysta wiele
programów, które nie mogą wiedzieć z jakiego modułu mają korzystać
i używają ustalonych nazw (aliasów) np.:
Dzięki tej linijce wszelkie odwołania przy ładowaniu modułów
załadują automatycznie moduł 8139too.
alias parport_lowlevel parport_pc |
W tym fragmencie pliku /etc/modprobe.conf
widzimy już znany alias z tym, że w trochę innej
formie. Ponieważ występuje tu nazwa_jednego_modułu i
nazwa_drugiego_modułu. Oznacza to, że jak będzie potrzeby
moduł parport_lowlevel, to zostanie też automatycznie
załadowany moduł parport_pc.
Opcje - często używa się możliwości przesłania
do modułu ustawień. Przedstawię to na przykładzie drukarki podpiętej
do portu LPT:
options parport_pc io=0x378, irq=7 |
Linijka przesyła jako parametr do modułu parport_pc
argumenty we/wy i przerwania. Więcej informacji o dostępnych opcjach modułu
można uzyskać po wydaniu polecenia modinfo parport_pc.
Czarna lista - możemy zabronić ładowania
jakiegoś modułu za pomocą słowa kluczowego blacklist np.:
.
|