Linux / Unix Command: insmod

Die Linux / Unix opdrag instel 'n laaibare module in die hardloop kern. Insmod probeer om 'n module in die lopende kern te koppel deur al die simbole van die kern se simbooltafel uit te voer.

As die module lêernaam sonder gids of uitbreiding gegee word, sal insmod soek na die module in sommige algemene verstekkatalogusse. Die omgewingsveranderlike MODPATH kan gebruik word om hierdie standaard te ignoreer. As 'n modulekonfigurasie lêer soos /etc/modules.conf bestaan, sal dit die paaie in MODPATH omskryf.

Die omgewingsveranderlike MODULECONF kan ook gebruik word om 'n ander konfigurasielêer te kies uit die standaard /etc/modules.conf (of /etc/conf.modules (deprecated)). Hierdie omgewingsveranderlike sal al die definisies hierbo ignoreer.

Wanneer omgewing-veranderlike UNAME_MACHINE ingestel is, sal modutils sy waarde gebruik in plaas van die masjienveld van die uname () syscall. Dit is hoofsaaklik van toepassing as u 64-bis modules in 32-bis gebruikersruimte saamstel of andersom, stel UNAME_MACHINE op die tipe modules. Huidige modutils ondersteun nie die volle kruis bou af vir modules nie, dit is beperk tot die keuse tussen 32- en 64-bis weergawes van die gasheerargitektuur.

opsies

-de volgehoue ​​naam , --persist = persist_name

Spesifiseer waar enige aanhoudende data vir die module vanaf vrag gelees word en geskryf word wanneer hierdie instansie van die module afgelaai word. Hierdie opsie word stil geïgnoreer as die module nie aanhoudende data bevat nie. Aanhoudende data word slegs deur insmod gelees as hierdie opsie teenwoordig is. Insmod verwerk nie volgehoue ​​data nie.

As 'n kortvorm , word 'n leë string geïnterpreteer deur insmod as die waarde van persistdir soos gedefinieer in modules.conf , gevolg deur die lêernaam van die module relatief tot die module soekpad wat dit gevind is, minus enige trailing ". Gz", ".o" of ". Mod". As modules.conf spesifiseer " persistdir = " (dws persistdir is 'n leë veld) dan word hierdie kortskrifvorm stilweg geïgnoreer. (Sien modules.conf (5).)

-f , --force

Poging laai die module selfs al is die weergawe van die lopende kern en die weergawe van die kern waarvoor die module saamgestel is, nie ooreen nie. Dit oorskry slegs die kern-weergawe-kontrole, dit het geen effek op simboolnaam-tjeks nie. As die simbool name in die module nie ooreenstem met die kern nie, is daar geen manier om insmod te dwing om die module te laai nie.

-h , -help

Toon 'n opsomming van opsies en gaan onmiddellik uit.

-k , - autoclean

Stel die outomatiese skoon vlag op die module. Hierdie vlag sal deur kerneld (8) gebruik word om modules wat nie in een of ander tyd gebruik is nie - gewoonlik een minuut te verwyder.

-L , --lock

Gebruik kudde (2) om gelyktydige vragte van dieselfde module te voorkom.

-m , - map

Voer 'n laai kaart uit op stdout, wat dit makliker maak om die module te ontfout in die geval van 'n kern paniek.

-n , -noload

Dummy hardloop, doen alles behalwe laai die module in die kern. As versoek word deur 'n -m of -O , sal die lopie 'n kaart- of blob-lêer produseer. Aangesien die module nie gelaai is nie, is die werklike kernlading adres onbekend, dus die kaart- en blob-lêer is gebaseer op 'n arbitrêre laai-adres van 0x12340000.

-One module naam , - Naam = Module naam

Noem naamlik die module eerder as om die naam van die basisnaam van die bronvoorwerplêer af te lei.

-O blob_name , --blob = blob_name

Stoor die binêre voorwerp in blob_name . Die resultaat is 'n binêre blob (geen ELF hoofde) wat presies aandui wat in die kern gelaai word na seksie manipulasie en hervestiging. Opsie -m word aanbeveel om 'n kaart van die voorwerp te kry.

-p , -probe

Sonde aan die module om te sien of dit suksesvol gelaai kan word. Dit sluit in om die voorwerplêer in die modulepad te vind, die vertoning van die nommers en die oplos van simbole. Dit verifieer nie die verskuiwing nie en lewer ook nie 'n kaart- of blob-lêer nie.

-P voorvoegsel , --prefix = voorvoegsel

Hierdie opsie kan gebruik word met weergegradeerde modules vir 'n SMP of bigmem kernel, aangesien sulke modules 'n ekstra voorvoegsel in hul simbool name het. As die kern met simbool-weergawes gebou is, sal insmod die voorvoegsel outomaties onttrek uit die definisie van "get_module_symbol" of "inter_module_get", waarvan een moet bestaan ​​in enige kern wat modules ondersteun. As die kern nie simbool weergawes het nie, maar die module met simbool weergawes gebou is, moet die gebruiker -P verskaf .

-q , -quiet

Moenie 'n lys van onopgeloste simbole druk nie. Moenie kla oor weergawe mismatch nie. Die probleem word slegs weerspieël in die uitgangstatus van insmod .

-r , - wortel

Sommige gebruikers stel modules op onder 'n nie-wortel gebruiker, en installeer dan die modules as wortel. Hierdie proses kan die modules wat deur die nie-root userid besit word, verlaat, alhoewel die modules gids deur wortel besit word. As die non-root userid gekompromitteer is, kan 'n indringer die bestaande modules wat deur daardie gebruiker gebruik word, oorskryf en hierdie blootstelling aan opstartstrook gebruik om toegang tot wortel te verkry.

Standaard sal modutils poog om 'n module wat nie deur wortel besit word, te verwerp nie. Spesifiseer -r sal die tjek wissel en wortel toelaat om modules wat nie deur wortel besit word, te laai nie. Let wel: die verstekwaarde vir wortelbeheer kan verander word wanneer modutils gekonfigureer is.

Gebruik van -r om wortelkontrole uit te skakel of om die verstek te stel vir "geen wortelbeheer" by konfigurasietyd is 'n groot sekuriteitsblootstelling en word nie aanbeveel nie.

-s , - syslog

Uitset alles na syslog (3) in plaas van die terminale.

-S , - kallieme

Dwing die gelaaide module om kalsie- data te hê, selfs al ondersteun die kern dit nie. Hierdie opsie is vir klein stelsels waar die kern gelaai word sonder kalsie- data, maar geselekteerde modules benodig kalsieme vir debugging. Hierdie opsie is die verstek op Red Hat Linux.

-v , -verbose

Wees verbosend.

-V , - weergawe

Wys die weergawe van insmod .

-X , --export ; -x , --noexport

Doen en voer nie al die modules se eksterne simbole onderskeidelik uit nie. Die verstek is dat die simbole uitgevoer moet word. Hierdie opsie is slegs effektief as die module nie eksplisiet sy eie beheerde simbooltafel uitvoer nie, en word dus verval.

-Y , --ksymoops ; -y , -noksymoops

Doen en voeg nie ksymoops- simbole by ksieme nie. Hierdie simbole word deur ksymoops gebruik om beter ontfouting te bied as daar 'n Oeps in hierdie module is. Die standaard is dat die ksymoops simbole gedefinieer moet word. Hierdie opsie is onafhanklik van die -X / -x opsies.

ksymoops simbole voeg ongeveer 260 grepe per gelaaide module by. Tensy jy baie kort op kernruimte is en probeer om ksieme tot sy minimum grootte te verminder, neem die verstek en kry meer akkurate Oeps-ontfouting. ksymoops simbole word benodig om volgehoue ​​module data te red.

-N , - nommer-alleen

Kyk slegs die numeriese deel van die module weergawe teen die kern weergawe, dit wil sê ignoreer EXTRAVERSION wanneer jy besluit of 'n module aan 'n kern behoort. Hierdie vlag word outomaties vir kern 2.5 gestel, dit is opsioneel vir vroeëre pitte.

Module Parameters

Sommige modules aanvaar laai-tyd parameters om hul werking aan te pas. Hierdie parameters is dikwels I / O-poort en IRQ-nommers wat wissel van masjien tot masjien en kan nie van die apparatuur bepaal word nie.

In modules wat vir 2,0-reekspitte gebou is, kan enige heelgetal of karakterwyser simbool as 'n parameter behandel word en verander word. Begin in die 2.1-reekspitte word simbole eksplisiet gemerk as parameters sodat slegs spesifieke waardes verander kan word. Verder word tikinligting verskaf om die waardes wat by laai tyd verskaf word, na te gaan.

In die geval van heelgetalle kan alle waardes in desimale, oktaal of heksadesimale a la C: 17, 021 of 0x11 wees. Array elemente is gespesifiseerde volgorde geskei met kommas. Elemente kan oorgeslaan word deur die waarde uit te laat.

In 2,0-serie modules word waardes wat nie met 'n getal begin nie, as snare beskou. Met ingang van 2.1, dui die tipe inligting van die parameter aan of die waarde as 'n string geïnterpreteer moet word. As die waarde begin met dubbele aanhalingstekens ( " ), word die string geïnterpreteer soos in C, ontsnapvolgordes en almal. Let daarop dat die aanhalingstekens self uit die dopprompt moet beskerm word.

GPL Gelisensieerde Modules en Simbole

Begin met kern 2.4.10, modules moet 'n lisensiestring hê, gedefinieer met MODULE_LICENSE () . Verskeie snare word erken as GPL-versoenbaar; enige ander lisensiestring of geen lisensie hoegenaamd dat die module as eiendom beskou word nie.

As die kern die / proc / sys / kern / besmette vlag ondersteun, sal inmode OF die besmette vlag met '1' by die laai van 'n module sonder 'n GPL lisensie. 'N Waarskuwing word uitgereik as die kern spanning ondersteun en 'n module is gelaai sonder 'n lisensie. 'N Waarskuwing word altyd uitgereik vir modules wat 'n MODULE_LICENSE () bevat wat nie GPL-versoenbaar is nie, selfs op ouer pitte wat nie speling ondersteun nie. Dit verminder waarskuwings wanneer 'n nuwe modutils op ouer pitte gebruik word.

Insmod -f (krag) modus sal OF die besmette vlag met '2' op pitte wat spanning ondersteun. Dit gee altyd 'n waarskuwing uit.

Sommige kernontwikkelaars vereis dat simbole wat volgens hul kode uitgevoer word, slegs deur modules met 'n GPL-verenigbare lisensie gebruik moet word. Hierdie simbole word uitgevoer deur EXPORT_SYMBOL_GPL in plaas van die normale EXPORT_SYMBOL . GPL-enigste simbole wat deur die kern en ander modules uitgevoer word, is slegs sigbaar vir modules met 'n GPL-verenigbare lisensie. Hierdie simbole verskyn in / proc / ksyms met 'n voorvoegsel van ' GPLONLY_ '. insmod ignoreer die GPLONLY_ voorvoegsel op simbole terwyl jy 'n GPL gelisensieerde module laai sodat die module net na die gewone simboolnaam verwys, sonder die voorvoegsel. GPL-simbole word nie beskikbaar gestel aan modules sonder 'n GPL-verenigbare lisensie nie, dit sluit modules met geen lisensie in nie.

Ksymoops Bystand

Om te help met die ontfouting van kern Oeps wanneer u modules gebruik, versamel standaards om sommige simbole by ksieme te voeg, sien die -Y opsie. Hierdie simbole begin met __insmod_modulename_ . Die module naam is nodig om die simbole uniek te maak. Dit is wettig om dieselfde voorwerp meer as een keer onder verskillende module name te laai. Tans is gedefinieerde simbole:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

objekfile is die naam van die lêer waarna die objek gelaai is. Dit verseker dat ksymoops die kode by die korrekte voorwerp kan pas. mtime is die laaste gewysigde tydstempel op daardie lêer in hex, zero as stat misluk. weergawe is die kern weergawe waarop die module saamgestel is, -1 indien geen weergawe beskikbaar is nie. Die _O simbool het dieselfde begin adres as die module header.

__insmod_modulename_Ssectionname_Llength

Hierdie simbool verskyn aan die begin van geselekteerde ELF afdelings, tans .text, .rodata, .data, .bss en .sbss. Dit verskyn net as die afdeling 'n nie-nul grootte het. afdelingnaam is die naam van die ELF-afdeling, lengte is die lengte van die gedeelte in desimale. Hierdie simbole help ksymoops kaartadresse na afdelings wanneer geen simbole beskikbaar is nie.

__insmod_modulename_Ppersistent_filename

Slegs geskep deur insmod as die module een of meer parameters het wat gemerk word as aanhoudende data en 'n lêernaam om volgehoue ​​data te stoor (sien -a , hierbo) is beskikbaar.

Die ander probleem met ontfouting van kern Oeps in modules is dat die inhoud van / proc / ksyms en / proc / modules tussen die Oeps kan verander en wanneer u die logbestand verwerk. Om te help om hierdie probleem te oorkom, as die gids / var / log / ksymoops bestaan, sal insmod en rmmod outomaties kopieer / proc / ksyms en / proc / modules na / var / log / ksymoops met 'n voorvoegsel van `datum +% Y% m % d% H% M% s`. Die stelseladministrateur kan ksymoops vertel wat momentopname-lêers moet gebruik wanneer 'n Oeps ontfout word. Daar is geen skakelaar om hierdie outomatiese kopie uit te skakel nie. As jy nie wil hê dit moet plaasvind nie, skep nie / var / log / ksymoops nie . As die gids bestaan, moet dit in besit wees van die wortel en wees modus 644 of 600 en jy moet hierdie skrif elke dag of so hardloop. Die onderstaande skrip is geïnstalleer as insmod_ksymoops_clean .

Basiese inligting om te weet

NAAM

Insmod - installeer die laaibare kernmodule

SINOPSIS

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o module_name ] [-O blob_name ] [-P prefix ] module [ simbool = waarde ...]