Kiedy jądro wykryje nowe urządzenie, uruchamia program modprobe
i przekazuje mu nazwę identyfikującą urządzenie. Większość urządzeń jest identyfikowana za pomocą zarejestrowanych numerów dla dostawcy i modelu, np . Identyfikatory PCI lub USB . modprobe
Program konsultuje tabelę moduł alias , aby znaleźć nazwę pliku, który zawiera sterownik dla tego urządzenia. Podobna zasada dotyczy sterowników rzeczy, które nie są urządzeniami sprzętowymi, takich jak systemy plików i algorytmy kryptograficzne. Aby uzyskać więcej informacji, zobacz Debian nie wykrywa szeregowej karty PCI po ponownym uruchomieniu/lib/modules/VERSION/modules.alias
Gdy modprobe zidentyfikuje, który plik modułu ( .ko
) zawiera żądany sterownik, ładuje plik modułu do jądra: kod modułu jest dynamicznie ładowany do jądra. Jeśli moduł zostanie pomyślnie załadowany, pojawi się na liście z lsmod
.
Automatyczne ładowanie modułów ma miejsce, gdy jądro wykryje nowy sprzęt z możliwością podłączenia na gorąco, np. Po podłączeniu urządzenia peryferyjnego USB. System operacyjny wykonuje również wyliczenie całego sprzętu obecnego w systemie na początku uruchamiania, aby załadować sterowniki urządzeń peryferyjnych obecnych w czasie uruchamiania.
Możliwe jest również ręczne zażądanie załadowania modułu za pomocą polecenia modprobe
lub insmod
. Większość dystrybucji zawiera skrypt startowy, który ładuje moduły wymienione w /etc/modules
. Innym sposobem ładowania modułów jest to, że zależą one od modułu: jeśli moduł A zależy od modułu B, to modprobe A
ładuje B przed załadowaniem A.
Po załadowaniu modułu pozostaje on załadowany do momentu jawnego rozładowania, nawet jeśli wszystkie urządzenia korzystające z tego sterownika zostaną odłączone. Dawno temu istniał mechanizm automatycznego rozładowywania nieużywanych modułów, ale został usunięty, jeśli dobrze pamiętam, kiedy udev pojawił się na scenie. Podejrzewam, że automatyczne rozładowywanie modułów nie jest częstą cechą, ponieważ systemy, które zwykle tego potrzebują, to w większości komputery stacjonarne, które i tak mają dużo pamięci (w skali kodu sterownika).
/etc/modules
.rt2800usb
jest w wyjściulsmod
i czy to oznacza, że podłączyłem jego urządzenie do mojego komputera przed uruchomieniem?