Linux Kernel Module Management 101


Linux-kjernen gjør at sjåfører og funksjoner for å være kompilert som moduler i stedet for som en del av kjernen i seg selv. Dette betyr at brukerne kan ofte endre funksjoner i kjernen eller legge til drivere uten rekompileres, og at Linux-kjernen ikke trenger å bære en masse unødvendig bagasje. Lyst til å lære å håndtere dine moduler? Det er lett å gjøre, bare fortsette å lese.

I denne opplæringen, vil vi gå gjennom trinnene for å se hva som allerede er lagt inn i den løpende kjernen, og legge til og fjerne moduler fra kjernen.

Hva er Loaded?

De første verktøyene som du ønsker å bli kjent med er lsmod og modinfo. Åpne en terminal og kjøre lsmod. Merk at du ikke trenger å bruke sudo eller logge inn som root bare for å sondere modulene i systemet

Du vil se et resultat som dette når du bruker lsmod.


 Module Size Used byparport_pc 18855 0 ppdev 5030 0 lp 7462 0 sco 7209 2 parport 27954 3 parport_pc, ppdev, lpbridge 39630 0 stp 1 440 1 bridgebnep 9427 2 

Dette viser modulene som er lastet, deres størrelse, og om de blir brukt av andre moduler. Ta parport modul, for eksempel. Det blir brukt av flere andre moduler, men hva er de? Den modinfo verktøyet vil fortelle oss – . kanskje

Kjør modinfo parport, og du vil se omtrent slik ut:


 filnavn: /lib/modules/2.6.32-5-amd64/kernel/drivere /parport /parport.kolicense: GPLdepends: vermagic: 2.6.32-5-amd64 SMP mod_unload modversions 

Den forteller oss hvor modulen er funnet, og sin lisens, og at det har ingen avhengigheter. Dessverre, vi vet ikke noe mer enn der vi startet fordi denne modulen forfatteren har valgt å ikke gi en beskrivelse av modulen. Men mange moduler vil ha en beskrivelse og gi noen indikasjon på hva de brukes til. Siden vi fikk ingen glede fra parport modul, hva med å prøve å finne ut om en av modulene som er avhengige av det? La oss prøve modinfo parport_pc. Dette, i alle fall på mitt system, produserer ganske heftig utgang, men den aktuelle delen her er beskrivelsen feltet som gir:

beskrivelse: PC-style parallellport driver

Så vi kan anta at den parport sjåføren har noe å gjøre med å støtte en parallellport. Faktisk er den parport modul generiske støtte for parallellporter, og parport_pc gir støtte for parallellporter på x86 /x86_64 systemer. Dette er ikke noe du vil finne med modinfo, dessverre. Men når alt annet svikter, sjekk kjernen kilde under Documentation katalogen.

Fjerne Moduler

Moduler kan fjernes ved hjelp av rmmod verktøyet. Bruken er enkel, bare rmmod module
. Men hvis vi prøver å fjerne parport modulen, vi får denne feilmeldingen:


 FEIL: Modul parport er i bruk av parport_pc, ppdev, lp 

Du kan tvinge modul fjerning hjelp rmmod -f, men det er ikke en god idé, vanligvis. En bedre måte å gjøre det på er å bruke modprobe -r som automatisk vil se for å se hva andre moduler er avhengig av den, og losse disse modulene også. Hvis de er i bruk, så modprobe vil nekte å fjerne dem også, med mindre du bruker f alternativet med modprobe også.

Installere Moduler

Hva hvis du har en modul du vil å laste inn i kjernen? Du kan gjøre det med insmod eller modprobe.

Den foretrukne metoden er modprobe, fordi det vil også laste noen moduler som den etterspurte modulen er avhengig av. For eksempel, hvis jeg ikke har den parport modulen lastet og gikk for å laste LP eller parport_pc moduler, ville modprobe gå videre og laste parport også.

For å laste en modul med modprobe kjøre modprobe module

Svartelisting Moduler

Du kan til tider trenger å ". svarteliste " en modul. Hvorfor ville du trenger denne funksjonen? Noen ganger kan en modul vil føre til en konflikt med en annen modul, er erstattet av en annen modul, eller på annen måte er uønsket.

For å svarteliste en modul, den enkleste måten å gjøre det (det er vanligvis mer enn én måte å gjøre ting. ..) er å legge til modulen til /etc/modprobe.d/blacklist.conf. For eksempel, på Debian-systemer i evbug modulen automatisk svartelistet fordi det ikke er noe de fleste brukere vil trenge. For å legge til en modul til svartelisten, bare legge en linje til en blacklist.conf filen:?

svarteliste module

Det er forfriskende grei, er det ikke

Sammendrag

Mesteparten av tiden, vil du bare trenger å rote med kjernemoduler hvis din distribusjon ikke støtter maskinvare ut av boksen, eller når du arbeider med tredjepartsprogrammer som VMware som leverer kjernemoduler av sine egne.

Men det er en god ting å vite hvordan man skal håndtere kjernemoduler når og hvis du trenger å legge til eller fjerne dem. Selv om du ikke har behov for dem akkurat nå, bruke litt tid på å teste modulen verktøy nå – kan du oppleve at de kommer til nytte senere. Snakker av " senere, " vi har mer å dekke. I neste avdrag, vil vi se på kompilering moduler, modul aliaser, og mye mer. Anmeldelser