Linux / Unix-kommandot insmod installerar en laddningsbar modul i körkärnan.insmod försöker länka en modul till kärnkärnan genom att lösa alla symboler från kärnans exporterade symboltabell.
Om modulfilnamnet ges utan kataloger eller tillägg,insmod söker efter modulen i vissa vanliga standardkataloger. MiljövariabelnMODPATH kan användas för att åsidosätta denna standard. Om en modulkonfigurationsfil, t.ex./etc/modules.conf existerar, kommer den att åsidosätta de banor som definieras iMODPATH.
MiljövariabelnMODULECONF kan också användas för att välja en annan konfigurationsfil från standardvärdet/etc/modules.conf (eller/etc/conf.modules (Inaktuell)). Denna miljövariabel kommer att åsidosätta alla definitioner ovan.
När miljövariabelnUNAME_MACHINE är inställd, kommer modutils att använda sitt värde istället för maskinfältet från uname () syscall. Detta är huvudsakligen användbart när du sammanställer 64-bitars moduler i 32-bitars användarutrymme eller vice versa, setUNAME_MACHINE till modulernas typ. Aktuella modutiler stöder inte fullständigt korsbyggnadsläge för moduler, det är begränsat till att välja mellan 32 och 64-bitars versioner av värdarkitekturen.
alternativ
-e persist_name , --envisas= persist_name
Anger var någon persistent data för modulen läses från last och skrivs till när denna instansering av modulen lossas. Det här alternativet ignoreras tyst om modulen inte har några beständiga data. Persistent data läses endast avinsmod Om det här alternativet är närvarande, är det som standardinsmod behandlar inte beständiga data.
Som en shorthandform,-e "" (en tom sträng) tolkas avinsmod som värdet avpersistdir enligt definitionen imodules.confföljt av modulens filnamn i förhållande till modulens sökväg det hittades, minus eventuella efterföljande ".gz", ".o" eller ".mod". Ommodules.conf specificerar "persistdir ="(d.v.s.persistdir är ett tomt fält) så ignoreras denna shorthandformen tyst. (Semodules.conf (5).)
-f, --tvinga
Försök ladda modulen även om versionen av körkärnan och den version av kärnan som modulen sammanställdes inte matchar. Detta överväger endast kärnversionskontrollen, det har ingen effekt på symbolnamnskontroller. Om symbolnamnen i modulen inte stämmer överens med kärnan är det inte möjligt att tvingainsmod att ladda modulen.
-h, --hjälp
Visa en sammanfattning av alternativ och lämna genast.
-k, --autoclean
Ställ in auto-ren flaggan på modulen. Denna flagga kommer att användas avkerneld(8) för att ta bort moduler som inte har använts under en tidsperiod - vanligtvis en minut.
-L, --låsa
Använda sig avflock(2) för att förhindra samtidiga belastningar av samma modul.
-m, --Karta
Utmatar en lastkarta på stdout, vilket gör det enklare att felsöka modulen vid en kärna panik.
-n, --noload
Dummy run, gör allt utom ladda modulen i kärnan. På begäran av en-m eller-O, körningen kommer att producera en karta eller blob-fil. Eftersom modulen inte är laddad är den reella kärnbelastningsadressen okänd så kart- och blobfilen är baserad på en godtycklig belastningsadress på 0x12340000.
-o modul , --namn= modul
Namnlösa namnet i stället för att härleda namnet från källnamnet på källobjektfilen.
-O blob_name , --klick= blob_name
Spara det binära objektet i blob_name . Resultatet är en binär blob (ingen ELF-rubriker) som visar exakt vad som laddas i kärnan efter sektionsmanipulation och omlokalisering. Alternativ-m rekommenderas att få en karta över objektet.
-p, --sond
Probe modulen för att se om den skulle kunna laddas. Detta inkluderar att hitta objektfilen i modulvägen, kontrollera versionsnummer och lösa symboler. Det kontrollerar inte flyttningarna eller skapar det en kart- eller blob-fil.
-P prefix , --prefix= prefix
Det här alternativet kan användas med versionsmoduler för en SMP- eller bigmem-kärna, eftersom sådana moduler har ett extra prefix i deras symbolnamn. Om kärnan byggdes med symbolversioner dåinsmod kommer automatiskt att extrahera prefixet från definitionen av "get_module_symbol" eller "inter_module_get", varav en måste finnas i någon kärna som stöder moduler. Om kärnan inte har några symbolversioner, men modulen byggdes med symbolversioner, måste användaren tillhandahålla-P.
-q, --tyst
Skriv inte ut en lista med några olösta symboler. Klaga inte om felmatchning i versionen. Problemet kommer bara att återspeglas i utgångsstatusen förinsmod.
-r, --rot
Vissa användare kompilerar moduler under en icke-root userid och installerar sedan modulerna som root. Denna process kan lämna modulerna som ägs av icke-root userid, även om modulkatalogen ägs av root. Om icke-root userid äventyras kan en inkräktare skriva över befintliga moduler som ägs av den användariden och använda denna exponering för startraden upp till root-åtkomst.
Som standard kommer modutils att avvisa försök att använda en modul som inte ägs av root. Ange -r kommer att växla kontrollen och tillåta rot att ladda moduler som inte ägs av root.
Notera: Standardvärdet för root check kan ändras när modutils konfigureras.Användning av -r för att inaktivera root-kontroll eller inställning av standard till "ingen root check" vid konfigurationstid är en stor säkerhetsexponering och rekommenderas inte.
-s, --syslog
Utmat allt tillsyslog(3) istället för terminalen.
-S, --kallsyms
Tvinga den laddade modulen att hakallsyms data, även om kärnan inte stöder den. Detta alternativ är för små system där kärnan laddas utankallsyms data men valda moduler behöverkallsyms för debugging. Det här alternativet är standard på Red Hat Linux.
-v, --mångordig
Var verboserad.
-V, --version
Visa versionen avinsmod.
-X, --exportera; -x, --noexport
Gör och exportera inte alla modulens externa symboler. Standarden är att symbolerna ska exporteras. Det här alternativet är endast effektivt om modulen inte explicit exporterar sin egen kontrollerade symboltabell och således avlägsnas.
-Y, --ksymoops; -y, --noksymoops
Gör och lägg inte tillksymoops symboler till ksyms. Dessa symboler används avksymoops för att ge bättre felsökning om det finns en oj i denna modul. Standardvärdet är förksymoopssymboler som ska definieras. Detta alternativ är oberoende av-X/-x alternativ.
ksymoops symboler lägger till cirka 260 byte per laddad modul. Om du inte är riktigt kort på kärnutrymmet och försöker minska ksyms till dess minsta storlek, ta standard och få mer exakt Oops felsökning.ksymoops symboler krävs för att spara persistenta moduldata.
-N, -Bara --numeric
Kontrollera endast den numeriska delen av modulversionen mot kärnversionen, dvs ignorera EXTRAVERSION när du bestämmer om en modul tillhör en kärna. Denna flagga ställs automatiskt in för kärna 2.5 och framåt, det är valfritt för tidigare kärnor.
Modul Parametrar
Vissa moduler accepterar laddningstidsparametrar för att anpassa sin funktion. Dessa parametrar är ofta I / O-port och IRQ-nummer som varierar från maskin till maskin och kan inte bestämmas av hårdvaran.
I moduler som är byggda för 2,0 seriekärnor kan en heltal eller teckenpekersymbol behandlas som en parameter och modifieras. Börjar i raderna 2.1, symboler är uttryckligen markerade som parametrar så att endast specifika värden kan ändras. Vidare tillhandahålls typinformation för att kontrollera värdena som anges vid laddningstiden.
För heltal kan alla värden vara i decimal, oktal eller hexadecimal a la C: 17, 021 eller 0x11. Array-element är specificerad sekvens separerad med kommatecken. Element kan hoppas över genom att utelämna värdet.
I 2.0-seriens moduler anses värden som inte börjar med ett nummer som strängar. Början i 2.1 anger parameterns typinformation om värdet ska tolkas som en sträng. Om värdet börjar med dubbla citat ('), tolkas strängen som i C, escape-sekvenser och alla. Observera att från citaten måste citaten själva vara skyddade mot skalolkolkning.
GPL Licensierade Moduler och Symboler
Från och med kärna 2.4.10 bör moduler ha en licenssträng som definieras medMODULE_LICENSE (). Flera strängar är kända som GPL-kompatibla; någon annan licens sträng eller ingen licens alls att modulen behandlas som proprietär.
Om kärnan stöder/ Proc / sys / kernel / fläckas flagga dåinsmod kommer ELLER den smittade flaggan med '1' när du laddar en modul utan en GPL-licens. En varning utfärdas om kärnan stöder tainting och en modul laddas utan licens. En varning utfärdas alltid för moduler som har aMODULE_LICENSE () Det är inte GPL-kompatibelt, även på äldre kärnor som inte stöder tainting. Detta minimerar varningar när en ny modutils används på äldre kärnor.
insmod -f (kraft) -läget kommer ELLER den tainted flaggan med '2' på kärnor som stöder tainting. Det utfärdar alltid en varning.
Vissa kärnutvecklare kräver att symboler som exporteras med deras kod endast får användas av moduler med en GPL-kompatibel licens. Dessa symboler exporteras avEXPORT_SYMBOL_GPL istället för det normalaEXPORT_SYMBOL. GPL-bara symboler som exporteras av kärnan och av andra moduler är endast synliga för moduler med en GPL-kompatibel licens, dessa symboler visas i/ Proc / ksyms med ett prefix av "GPLONLY_'. insmod ignorerarGPLONLY_ prefix på symboler medan en GPL-licensmodul laddas så modulen hänvisar bara till det normala symbolnamnet, utan prefixet. GPL-symboler är inte tillgängliga för moduler utan en GPL-kompatibel licens, inklusive moduler utan licens alls.
Ksymoops Assistance
För att hjälpa till med felsökning av kärna Oj, när du använder moduler,insmod standard för att lägga till några symboler för ksyms, se-Y alternativ. Dessa symboler börjar med__insmod_ modulename_ . De module krävs för att göra symbolerna unika. Det är lagligt att ladda samma objekt mer än en gång under olika modulnamn. För närvarande är definierade symboler:
__insmod_ module _ Oobjectfile _ Mmtime _ Vversion
objectfile är namnet på filen som objektet laddades från. Detta säkerställer att ksymoops kan matcha koden med det korrekta objektet. mtime är den senast ändrade tidstämpeln på den filen i hex, noll om stat misslyckades. version är kärnversionen som modulen kompilerades för, -1 om ingen version finns tillgänglig. De_O symbolen har samma startadress som modulhuvudet.
__insmod_ module _ Ssectionname _ Llength
Denna symbol visas i början av valda ELF-sektioner, för närvarande .text, .rodata, .data, .bss och .sbss. Det visas bara om sektionen har en icke-nollstorlek. sectionname är namnet på ELF-avdelningen, längd Är längden på avsnittet i decimal. Dessa symboler hjälper ksymoops kartadresser till sektioner när inga symboler finns tillgängliga.
__insmod_ module _Ppersistent_ filnamn
Enbart skapad avinsmod om modulen har en eller flera parametrar som är markerade som långlivade data och ett filnamn för att spara persistenta data (se-e, ovan) är tillgänglig.
Det andra problemet med debugging-kärnan Oops i moduler är att innehållet i / proc / ksyms och / proc / moduler kan ändras mellan oj och när du bearbetar loggfilen. För att komma till rätta med detta problem, om katalogen / var / log / ksymoops existerar dåinsmod ochrmmod kopierar automatiskt / proc / ksyms och / proc / modules till / var / log / ksymoops med ett prefix av `datum +% Y% m% d% H% M% S`. Systemadministratören kan berätta för ksymoops vilka snapshot-filer som ska användas vid felsökning av en Oops. Det finns ingen strömbrytare för att inaktivera den här automatiska kopian. Om du inte vill att det ska uppstå, skapa inte / var / logga / ksymoops. Om den katalogen existerar ska den ägas av root och vara mode 644 eller 600 och du ska köra det här skriptet varje dag eller så. Skriptet nedan är installerat som insmod_ksymoops_clean.
#! / Bin / sh # Radera sparade ksyms och moduler som inte nås inom 2 dagar om -d / var / log / ksymoops sedan set -e # Se till att det alltid finns minst en version d = `datum +% Y% m% d% H% M% S` cp -a / proc / ksyms /var/log/ksymoops/${d}.ksyms cp -a / proc / modules /var/log/ksymoops/${d}.modules hitta / var / logga / ksymoops-typ f -atime +2 -exec rm {} ; fi NAMN insmod - Installera laddningsbar kärnmodul SYNOPSIS insmod -fhkLmnpqrsSvVxXyYN -e persist_name -o modul -O blob_name -P prefix modul symbol= värde … Grundläggande information att veta




