Wyszukiwanie w witrynie

Jak ładować i rozładowywać moduły jądra w systemie Linux


Moduł jądra to program, który można załadować do jądra lub wyładować z niego na żądanie, bez konieczności ponownej jego kompilacji (jądra) lub ponownego uruchamiania systemu, i ma na celu ulepszenie funkcjonalności jądra.

Ogólnie rzecz biorąc, moduły przypominają mniej więcej wtyczki do oprogramowania takiego jak WordPress. Wtyczki umożliwiają rozszerzenie funkcjonalności oprogramowania. Bez nich programiści musieliby stworzyć jedno, ogromne oprogramowanie ze wszystkimi funkcjami zintegrowanymi w pakiecie. Jeżeli potrzebne byłyby nowe funkcjonalności, musiałyby zostać dodane w nowych wersjach oprogramowania.

Podobnie bez modułów jądro musiałoby zostać zbudowane ze wszystkimi funkcjonalnościami zintegrowanymi bezpośrednio z obrazem jądra. Oznaczałoby to posiadanie większych jąder, a administratorzy systemu musieliby rekompilować jądro za każdym razem, gdy potrzebna jest nowa funkcjonalność.

Prostym przykładem modułu jest sterownik urządzenia – który umożliwia jądru dostęp do komponentu/urządzenia sprzętowego podłączonego do systemu.

Sugerowana lektura: Jak sprawdzić, jakiej wersji Linuksa używasz

Wyświetl listę wszystkich załadowanych modułów jądra w systemie Linux

W Linuksie wszystkie moduły kończą się rozszerzeniem .ko i zwykle są ładowane automatycznie po wykryciu sprzętu podczas uruchamiania systemu. Jednakże administrator systemu może zarządzać modułami za pomocą określonych poleceń.

Aby wyświetlić listę wszystkich aktualnie załadowanych modułów w systemie Linux, możemy użyć polecenia lsmod (list Modules), które odczytuje zawartość /proc/modules w ten sposób.

lsmod
Module                  Size  Used by
rfcomm                 69632  2
pci_stub               16384  1
vboxpci                24576  0
vboxnetadp             28672  0
vboxnetflt             28672  0
vboxdrv               454656  3 vboxnetadp,vboxnetflt,vboxpci
bnep                   20480  2
rtsx_usb_ms            20480  0
memstick               20480  1 rtsx_usb_ms
btusb                  45056  0
uvcvideo               90112  0
btrtl                  16384  1 btusb
btbcm                  16384  1 btusb
videobuf2_vmalloc      16384  1 uvcvideo
btintel                16384  1 btusb
videobuf2_memops       16384  1 videobuf2_vmalloc
bluetooth             520192  29 bnep,btbcm,btrtl,btusb,rfcomm,btintel
videobuf2_v4l2         28672  1 uvcvideo
videobuf2_core         36864  2 uvcvideo,videobuf2_v4l2
v4l2_common            16384  1 videobuf2_v4l2
videodev              176128  4 uvcvideo,v4l2_common,videobuf2_core,videobuf2_v4l2
intel_rapl             20480  0
x86_pkg_temp_thermal    16384  0
media                  24576  2 uvcvideo,videodev
....

Jak załadować i rozładować (usunąć) moduły jądra w systemie Linux

Aby załadować moduł jądra, możemy użyć polecenia insmod (wstaw moduł). Tutaj musimy podać pełną ścieżkę modułu. Poniższe polecenie wstawi moduł speedstep-lib.ko.

insmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko 

Aby zwolnić moduł jądra, używamy polecenia rmmod (usuń moduł). Poniższy przykład wyładuje lub usunie moduł speedstep-lib.ko.

rmmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko 

Jak zarządzać modułami jądra za pomocą polecenia modprobe

modprobe to inteligentne polecenie służące do wyświetlania, wstawiania i usuwania modułów z jądra. Wyszukuje w katalogu modułów /lib/modules/&36 (uname -r) wszystkie moduły i powiązane pliki, ale wyklucza alternatywne pliki konfiguracyjne w /etc/modprobe.d katalog.

Tutaj nie potrzebujesz bezwzględnej ścieżki modułu; to jest zaleta używania modprobe w porównaniu z poprzednimi poleceniami.

Aby wstawić moduł, po prostu podaj jego nazwę w następujący sposób.

modprobe speedstep-lib

Aby usunąć moduł, użyj flagi -r w ten sposób.

modprobe -r speedstep-lib

Uwaga: w modprobe wykonywana jest automatyczna konwersja podkreśleń, więc nie ma różnicy pomiędzy _ i podczas wprowadzanie nazw modułów.

Aby uzyskać więcej informacji o użytkowaniu i opcjach, przeczytaj stronę podręcznika modprobe.

man modprobe

Nie zapomnij sprawdzić:

  1. Jak zmieniać parametry wykonawcze jądra w sposób trwały i nietrwały
  2. Jak zainstalować lub uaktualnić do najnowszej wersji jądra w CentOS 7
  3. Jak zaktualizować jądro do najnowszej wersji w Ubuntu

To wszystko na teraz! Jeśli masz jakieś przydatne pomysły, które chciałbyś, abyśmy dodali do tego przewodnika lub masz pytania, skorzystaj z poniższego formularza opinii i prześlij je nam.