DEPMOD(8)

NAZWA
depmod - obsługa opisu zależności pomiędzy modułami jądra

SKŁADNIA
depmod -[aA] [-enqsvVru] [-C plikkofiguracyjny] [-F symbolejądra] [-b katalogbazowy] [wymuszona_wersja]
depmod [-enqsvru] [-F symbolejądra] moduł1.o moduł2.o ...

OPCJE

-a  Poszukuje modułów we wszystkich katalogach wymienionych w (opcjonalnym) pliku kofiguracyjnym /etc/modules.conf.

-A  Porównuje znaczniki czasowe plików i, jeśli trzeba, działa jak depmod -a. Ta opcja aktualizuje zależności jedynie, gdy coś się zmieniło.

-e  Pokazuje wszystkie nierozwiązane symbole dla poszczególnych modułów.

-n  Wypisuje plik zależności na standardowe wyjście, zamiast do drzewa /lib/modules.

-s  Wypisuje komunikaty o błędach za pośrednictwem demona syslog, zamiast na standardową diagnostykę.

-v  Wypisuje nazwy poszczególnych modułów podczas ich przetwarzania.

-q  Każe depmodowi zamilknąć i nie narzekać na brakujące symbole.

-V  Wypisuje numer wersji programu depmod

-r  Niektórzy użytkownicy kompilują moduły jako użytkownik inny niż root, a następnie instalują je jako root. W wyniku tego właścicielem modułów nie będzie root, nawet jeśli jest on właścicielem katalogu modułów. Jeśli dopuści się innego użytkownika niż root jako właściciela modułów, umożliwi się nieproszonemu gościowi nadpisanie istniejących modułów będących własnością tego użytkownika i wykorzystanie załadowania go do uzyskania uprawnień roota.

    Domyślnie, modutils odrzucą próbę załadowania modułu nie należącego do root-a. Podanie -r zniesie błąd i pozwoli root-owi załadować moduły, które nie są jego własnością.

    Używanie -r jest poważnym naruszeniem bezpieczeństwa i nie jest zalecane.

-u  depmod 2.4 nie ustawia kodu powrotu, gdy występują nierozwiązane symbole. Następna główna wersja modutils (2.5) będzie to robić. Niektóre dystrybucje wymagają niezerowego kodu powrotu przy nierozwiązanych symbolach, ale taka zmiana mogłaby spowodować problemy u użytkowników oczekujących starego zachowania. Jeśli niezerowy kodu powrotu jest potrzebny w depmod 2.4, należy podać -u. depmod 2.5 będzie milcząco ignorować flagę -u i będzie zawsze zwracać niezerowy kodu powrotu przy nierozwiązanych symbolach.

Następujące opcje są przydatne dla osób zarządzających dystrybucjami:

-b katalogbazowy
    Jeśli drzewo katalogów /lib/modules zawierające poddrzewa modułów zostanie przeniesione gdzie indziej, aby obsługiwać moduły w innym środowisku, opcja katalogbazowy mówi depmodowi, gdzie szukać przeniesionego obrazu drzewa /lib/modules. Odwołania do plików w pliku wynikowym depmoda, modules.dep, który zostanie utworzony nie będą zawierać ścieżki katalogbazowy. Oznacza to, że gdy drzewo plików zostanie przeniesione z powrotem z katalogbazowy/lib/modules do /lib/modules w ostatecznej dystrybucji, wszystkie odwołania będą poprawne.

-C plikkofiguracyjny
    Każe korzystać z pliku plikkofiguracyjny zamiast /etc/modules.conf.
    Do wybrania innego pliku konfiguracyjnego niż domyślny /etc/modules.conf (lub /etc/conf.modules (przestarzałe)) można również wykorzystać zmienną środowiska MODULECONF.

-F symbolejądra
    Podczas budowania pliku zależności dla innego jądra niż aktualnie działąjące ważne jest, aby depmod korzystał z właściwego zbioru symboli jądraa przy rozwiązywaniu odwołań do jądra z poszczególnych modułów. Symbole te mogą być kopią albo kopią pliku System.map z właściwego jądra, albo kopią zawartości /proc/ksyms. Jeśli jądro używa a wersjonowanych symboli, najlepiej korzystać z kopii zawartości /proc/ksyms, gdyż plik ten zawiera wersje symboli jądra. Jednakże, nawet z wersjonowanymi symbolami, można używać System.map.

OPIS
Programy narzędziowe depmod i modprobe służą do zarządzania zmodularyzowanym jądrem Linuksa przez zwykłych użytkowników, administratorów i twórców dystrybucji.

depmod tworzy podobny do "Makefile" plik z zależnościami, oparty na symbolach, które znajdzie w zbiorze modułów podanych w linii poleceń lub w katalogach wymienionych w pliku konfiguracyjnym. Plik zależności może być potem wykorzystany przez modprobe w celu automatycznego ładowania odpowiednich modułów lub zestawów modułów.

Typowe użycie depmod polega na umieszczeniu linii /sbin/depmod -a gdzieś w skryptach startowych w /etc/rc.d tak, aby odpowiednie powiązania modułów były dostępne zaraz po uruchomieniu się systemu. Należy zauważyć, że parametr -a jest obecnie opcjonalny. Dla stosowania podczas startu systemu opcja -q może być bardziej właściwa, gdyż wycisza ona depmoda w kwestii nierozwiązanych symboli.

Istnieje także możliwość utworzenia pliku zależności zaraz po skompilowaniu nowego jądra. Wydanie polecenia "depmod -a 2.2.99" po wcześniejszej kompilacji jądra 2.2.99 i jego modułów po raz pierwszy, używając wciąż jądra 2.2.98, spowoduje utworzenie pliku we właściwym miejscu. Jednakże w tym przypadku, wygenerowane zależności mogą nie być poprawne. Zobacz opis opcji -F, -C i -b powyżej aby uzyskać więcej informacji na temat obsługi tej sytuacji.

Podczas tworzenia związków pomiędzy modułami i symbolami udostępnionymi przez inne moduły depmod nie bierze pod uwagę stosunku modułu lub udostępnionych syboli do licencji GPL. To znaczy, depmod nie zgłosi błędu jeśli moduł na licencji niezgodnej z GPL będzie się odwoływać to symboli zastrzeżonych dla GPL (EXPORT_SYMBOL_GPL w jądrze). Jednakże, insmod odmówi rozwiązania symboli zastrzeżonych dla GPL dla modułów nie-GPL, więc modułu nie uda się załadować.

KONFIGURACJA
Zachowanie się depmod i modprobe może być dostosowane przez (opcjonalny) plik konfiguracyjny /etc/modules.conf.
Zajrzyj do modprobe(8) i modules.conf(5) po pełny opis.

STRATEGIA
Za każdym razem podczas kompilacji nowego jądra, polecenie make modules_install stworzy nowy katalog, ale nie zmieni katalogu domyślnego.

Kiedy otrzyma się moduł nie związany z konkretnym jądrem należy go umieścić w jednym z katalogów nie zależnych od wersji jądra w /lib/modules.

Takie jest standardowe zachowanie, które jednakże może być zmienione poprzez odpowiednie wpisy do /etc/modules.conf.

PLIKI
/etc/modules.conf (alternatywnie, przestarzały /etc/conf.modules)
/lib/modules/*/modules.dep,
/lib/modules/*

ZOBACZ TAKŻE
modules.conf(5), modprobe(8), modinfo(8), lsmod(8), ksyms(8)

AUTOR
Jacques Gelinas (jack@solucorp.qc.ca)
Bjorn Ekwall (bj0rn@blox.se)