Hoe kernelmodules in Linux te laden en te verwijderen
Een kernelmodule is een programma dat op verzoek in de kernel kan worden geladen of daaruit kan worden verwijderd, zonder de kernel noodzakelijkerwijs opnieuw te compileren of het systeem opnieuw op te starten, en is bedoeld om de functionaliteit van de kernel te verbeteren.
In algemene softwaretermen lijken modules min of meer op plug-ins voor software zoals WordPress. Plug-ins bieden middelen om de softwarefunctionaliteit uit te breiden. Zonder plug-ins zouden ontwikkelaars één enorme software moeten bouwen met alle functionaliteiten geïntegreerd in een pakket. Als er nieuwe functionaliteiten nodig zijn, moeten deze in nieuwe versies van software worden toegevoegd.
Op dezelfde manier zou de kernel zonder modules moeten worden gebouwd met alle functionaliteiten rechtstreeks in het kernelimage geïntegreerd. Dit zou betekenen dat we grotere kernels moeten hebben, en systeembeheerders zouden de kernel opnieuw moeten compileren elke keer dat er nieuwe functionaliteit nodig is.
Een eenvoudig voorbeeld van een module is een apparaatstuurprogramma – waarmee de kernel toegang kan krijgen tot een hardwarecomponent/apparaat dat op het systeem is aangesloten.
Voorgesteld leesvoer: Hoe kom je erachter welke versie van Linux je gebruikt
Maak een lijst van alle geladen kernelmodules in Linux
In Linux eindigen alle modules met de extensie .ko
en worden ze normaal gesproken automatisch geladen als de hardware wordt gedetecteerd bij het opstarten van het systeem. Een systeembeheerder kan de modules echter beheren met behulp van bepaalde commando's.
Om alle momenteel geladen modules in Linux weer te geven, kunnen we de opdracht lsmod (lijst modules) gebruiken, die de inhoud van /proc/modules op deze manier leest.
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
....
Hoe kernelmodules in Linux te laden en te verwijderen
Om een kernelmodule te laden, kunnen we de opdracht insmod (insert module) gebruiken. Hier moeten we het volledige pad van de module opgeven. Met het onderstaande commando wordt de module speedstep-lib.ko ingevoegd.
insmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko
Om een kernelmodule te verwijderen, gebruiken we de opdracht rmmod (module verwijderen). In het volgende voorbeeld wordt de module speedstep-lib.ko verwijderd of verwijderd.
rmmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko
Kernelmodules beheren met de modprobe-opdracht
modprobe is een intelligent commando voor het weergeven, invoegen en verwijderen van modules uit de kernel. Het zoekt in de moduledirectory /lib/modules/$ (uname -r) naar alle modules en gerelateerde bestanden, maar sluit alternatieve configuratiebestanden uit in /etc/modprobe.d map.
Hier heb je niet het absolute pad van een module nodig; dit is het voordeel van het gebruik van modprobe ten opzichte van de voorgaande commando's.
Om een module in te voegen, geeft u eenvoudigweg de naam ervan als volgt op.
modprobe speedstep-lib
Om een module te verwijderen, gebruikt u de vlag -r
op deze manier.
modprobe -r speedstep-lib
Opmerking: onder modprobe wordt automatische conversie van onderstrepingstekens uitgevoerd, dus er is geen verschil tussen _
en –
terwijl modulenamen invoeren.
Voor meer gebruiksinformatie en opties, lees de modprobe manpagina.
man modprobe
Vergeet niet uit te checken:
- Hoe u Kernel Runtime-parameters op een persistente en niet-persistente manier kunt wijzigen
- Hoe te installeren of upgraden naar de nieuwste kernelversie in CentOS 7
- Hoe Kernel te upgraden naar de nieuwste versie in Ubuntu
Dat is het voor nu! Heeft u nuttige ideeën die u aan deze handleiding wilt toevoegen of heeft u vragen, gebruik dan het onderstaande feedbackformulier om ze naar ons te sturen.