Hoe lsmod in Linux te gebruiken (met een praktisch voorbeeld)

0
135

De Linux-kernel is voor de meesten een mysterie, maar dat hoeft niet zo te zijn! Welkom in de opwindende wereld van lsmod, een tool waarmee je kunt zien welke modules de kernel gebruikt, en meer!

Wat is lsmod ?

Om lsmod, de tool waarmee je modules in de Linux-kernel kunt weergeven, uit te leggen, moet je eerst begrijpen wat een module is. Een Linux-module is een modulair stuk code (draaiend in een gecompileerd formaat) dat naar believen kan worden geladen of verwijderd uit de Linux-kernel. Het belangrijkste voordeel van het gebruik van dergelijke modules is hun modulariteit en granulariteit ervan.

Je kunt Kernel-modules zien als plug-ins in andere software. Wanneer u een specifieke – minder vaak voor, of niet universeel – functionaliteit, zal het beschikbaar zijn als een plug-in, of in het geval van de Linux Kernel als een module. Er is weinig verschil tussen een plug-in in andere software en Linux Kernel-modules. Het niveau waarop ze werken, ligt echter veel dichter bij de hardware en de belangrijkste besturingssoftware, in plaats van aan het einde van de stapel op gebruikersniveau.

Bijvoorbeeld, het stuurprogramma van uw grafische kaart – vooral als u NVidia-stuurprogramma's gebruikt – wordt geladen als een kernelmodule. Wanneer u het stuurprogramma installeert, wordt een kernelmodule geconfigureerd en geladen (mogelijk bij de volgende herstart van uw systeem).

Om terug te komen op lsmod, dat zou moeten worden opgenomen in de standaardinstallatie van uw Linux-besturingssysteem, deze tool geeft een overzicht van kernelmodules die momenteel beschikbaar zijn.

lsmod: First Looks

Interessant is dat lsmod een tool is die de inhoud van het (virtuele) /proc/modules-bestand omzet in meer voor mensen leesbare inhoud.

Advertentie

Het bestand /proc/modules is een virtueel bestand van 0 bytes dat, wanneer bekeken met bijvoorbeeld cat of vi, (of beter render) een lijst met modules zal bevatten die momenteel beschikbaar zijn voor de Linux-kernel op de systeem waarop lsmod wordt uitgevoerd.

Laten we beginnen met het controleren van de inhoud van het bestand /proc/modules op de aanwezigheid van een AHCI (Advanced Host Controller Interface) Linux Kernel-module:

cat /proc/modules | grep ahci

Hier gebruiken we cat om weer te geven (weergave) de inhoud van /proc/modules, en gebruik vervolgens grep naar grep voor de AHCI-module. Merk op dat we de -i optie (die een hoofdletterongevoelige zoekopdracht zou doen) niet gespecificeerd hebben voor grep, aangezien de volledige lijst van modules /proc/modules alleen kleine letters is.

We kunnen zien aan de output op voorwaarde dat welke AHCI Linux Kernel-modules momenteel beschikbaar zijn. Anders ziet de uitvoer er een beetje cryptisch uit en niet erg beschrijvend. Laten we in plaats daarvan nu lsmod proberen.

lsmod | grep -E '^Module|ahci'

Hier gebruikten we lsmod, een tool zonder opties, en gebruikten we grep om meerdere uitkomsten te pakken van belang. De -E optie voor grep stelt ons in staat om een ​​selector/selectielijst (strings) te maken van items die we willen zien, allemaal gescheiden door een of meer pipe-symbolen (|).

Advertentie

Hier zoeken we dus naar alle ahci-exemplaren (in de tweede selector/selectiereeks), en alle ^Module-exemplaren (in de eerste selector/selectiereeks), waarbij de ^ een reguliere expressie is (alleen van toepassing op de eerste selector), het begin van een regel selecteren, wat aangeeft dat we alleen resultaten willen zien waarbij het begin van de regel onmiddellijk wordt gevolgd door ‘Module’ en dit zou onze eerste kopregel zijn.

We zien de uitvoer nu mooi weergegeven; de eerste regel (die ons grep-commando bevatte dankzij de ^Module-selector) en de tweede en derde regel met de ahci-modules die onze grep selecteerde vanwege de tweede selector.

De uitgangen van de kopkolom vertellen ons wat elke kolom bevat; de eerste kolom de modulenaam (Module), de tweede de grootte is bytes (Size), en de derde kolom geeft een referentietelling ( Gebruikt door), of met andere woorden hoe vaak er door de kernel naar een module wordt verwezen (wat misschien vaag vertaald kan worden naar gebruikt).

Als de referentietelling in de derde kolom nul is, betekent dit dat terwijl de module beschikbaar is “in”/to the Kernel, het wordt momenteel niet gebruikt.

Tip: als je ooit -2 ziet in de uitvoer van lsmod, wil je misschien lsmod shows -2 in de “Gebruikt door& afrekenen. #8221; column op Stackexchange.

Dieper duiken met modinfo

Hoewel de lsmod-tool zelf geen opties heeft, we kunnen een ander hulpprogramma gebruiken in combinatie met lsmod om meer informatie te ontdekken: modinfo.

modinfo ahci -F 'description' modinfo ahci -F 'author'

Advertentie

Hier hebben we de opdracht modinfo gebruikt om meer informatie te krijgen over de ahci Linux Kernel-module. In het bijzonder hebben we de optie -F to modinfo gebruikt om een ​​specifiek veld te selecteren waarvan we de inhoud ervan willen leren. Merk op dat als u modinfo ahci uitvoert zonder enige opties, u een volledige lijst met alle beschikbare informatie over de ahci Kernel-module zult zien. Deze uitvoer is vrij uitgebreid omdat het ondertekeningssleutelgegevens enz. omvat.

We hadden grep ook op dezelfde manier kunnen gebruiken als we eerder deden om beide stukjes informatie in een enkel commando te selecteren. Hiervoor gebruiken we modinfo ahci | grep -E 'description|author', die dezelfde uitvoer van twee regels weergeeft, zij het direct onder elkaar.

Merk ook op dat men opnieuw de reguliere expressie ' zou kunnen gebruiken om alleen de uitvoerstrings te selecteren die aan het begin van de regel beginnen (voor beide velden waarnaar wordt gezocht), d.w.z. modinfo ahci | grep -E '^description|^author'

In tegenstelling tot lsmod heeft modinfo nog enkele andere opties die interessant kunnen zijn. Checkout man modinfoto bekijk alle beschikbare opties.

Afronding

In dit artikel hebben we de optieloze lsmod-tool en de handige uitvoer die het ons geeft, die ons laat zien welke Linux Kernel-modules beschikbaar zijn en hoe vaak er momenteel naar elke dergelijke Kernel-module wordt verwezen (“gebruikt”) door de Kernel. We hebben ook gekeken hoe we meer informatie over een specifieke module kunnen krijgen door het modinfo-commando in Linux te gebruiken. We hebben ook gekeken hoe we grep -E kunnen gebruiken om twee stukjes informatie tegelijk te verkrijgen door meerdere selectiereeksen te gebruiken om naar te scannen.

Als je dit artikel met plezier hebt gelezen, bekijk dan onze Hoe te gebruiken ltrace om bibliotheekoproepen te traceren en hoe te werken met afhankelijkheden van gedeelde objecten (bibliotheek) in Linux-artikelen. Veel plezier!