Linux / Unix-kommandoen insmod installerer et ladbart modul i kørslen.insmod forsøger at forbinde et modul i den kørende kerne ved at løse alle symboler fra kernens eksporterede symboltabel.
Hvis modulfilnavnet er givet uden mapper eller udvidelser,insmod vil søge efter modulet i nogle almindelige standardmapper. MiljøvariablenMODPATH kan bruges til at tilsidesætte denne standard. Hvis en modulkonfigurationsfil som f.eks/etc/modules.conf eksisterer, vil det tilsidesætte de stier, der er defineret iMODPATH.
MiljøvariablenMODULECONF kan også bruges til at vælge en anden konfigurationsfil fra standardværdien/etc/modules.conf (eller/etc/conf.modules (Forældet)). Denne miljøvariabel overstyrer alle definitionerne ovenfor.
Når miljøvariabelUNAME_MACHINE er indstillet, vil modutils bruge sin værdi i stedet for maskinfeltet fra uname () syscall. Dette er primært anvendeligt, når du samler 64-bit moduler i 32-bit brugerrum eller omvendt, indstilletUNAME_MACHINE til typen af modulerne. Aktuelle modutilsystemer understøtter ikke fuld cross-build-tilstand til moduler, det er begrænset til at vælge mellem 32 og 64-bit versioner af værtsarkitekturen.
Muligheder
-e persist_name , --persist= persist_name
Angiver, hvor alle vedholdende data for modulet læses fra ved belastning og skrives til, når denne instansering af modulet læses. Denne mulighed ignoreres lydløst, hvis modulet ikke har vedholdende data. Vedvarende data læses kun afinsmod hvis denne indstilling er til stede, som standardinsmod behandler ikke vedvarende data.
Som en stenografi form,-e "" (en tom streng) fortolkes afinsmod som værdien afpersistdir som defineret imodules.conf, efterfulgt af modulets filnavn i forhold til modulets søgevej, der blev fundet i, minus eventuelle efterfølgende ".gz", ".o" eller ".mod". Hvismodules.conf specificerer "persistdir ="(dvs.persistdir er et tomt felt), så ignoreres denne stenografi form. (Semodules.conf (5).)
-f, --kraft
Forsøg indlæse modulet, selvom versionen af den kørende kerne og den version af kernen, som modulet blev sammensat, ikke stemmer overens med. Dette udelukker kun kerneversionstjekket, det har ingen indvirkning på symbolnavnetekontrollen. Hvis symbolnavnet i modulet ikke passer til kernen, er der ingen måde at tvinge påinsmod at indlæse modulet.
-h, --Hjælp
Vis et resumé af muligheder og straks afslutte.
-k, --autoclean
Indstil det automatisk rengørings flag på modulet. Dette flag vil blive brugt afkerneld(8) for at fjerne moduler, der ikke er blevet brugt i løbet af et tidsrum - normalt et minut.
-L, --låse
Brugflok(2) for at forhindre samtidige belastninger af det samme modul.
-m, --kort
Udfør et belastningskort på stdout, hvilket gør det nemmere at fejle modulet i tilfælde af kernepanik.
-n, --noload
Dummy run, gør alt undtagen indlæse modulet i kernen. På anmodning af en-m eller-O, vil kørslen producere en kort eller blob-fil. Da modulet ikke er indlæst, er den reelle kernebelastningsadresse ukendt, så kortet og blob-filen er baseret på en vilkårlig belastningsadresse på 0x12340000.
-o MODULE_NAME , --navn= MODULE_NAME
Navngiv navnet på modulet, snarere end at hent navnet fra kildeobjektets basisnavn.
-O blob_name , --blob= blob_name
Gem den binære objekt i blob_name . Resultatet er en binær blob (ingen ELF-overskrifter) viser præcis, hvad der er indlæst i kernen efter sektionsmanipulation og flytning. Mulighed-m anbefales at få et kort over objektet.
-p, --probe
Probe modulet for at se om det kunne læses korrekt. Dette omfatter at finde objektfilen i modulbanen, kontrollere versionsnumre og løse symboler. Det kontrollerer ikke flytningerne, og det producerer heller ikke en kort- eller blob-fil.
-P præfiks , --præfiks= præfiks
Denne mulighed kan bruges med versionsmoduler til en SMP- eller bigmem-kernel, da sådanne moduler har et ekstra præfiks tilføjet i deres symbolnavne. Hvis kernen blev bygget med symbolversioner såinsmod vil automatisk udpakke præfikset fra definitionen af "get_module_symbol" eller "inter_module_get", hvoraf den ene skal eksistere i en hvilken som helst kerne, der understøtter moduler. Hvis kernen ikke har nogen symbolversioner, men modulet er bygget med symbolversioner, skal brugeren levere-P.
-q, --rolige
Udskriv ikke en liste over eventuelle uløste symboler. Ikke klage over version mismatch. Problemet afspejles kun i udgangsstatus forinsmod.
-r, --rod
Nogle brugere kompilerer moduler under en ikke-root userid, så installer modulerne som root. Denne proces kan forlade modulerne ejet af non-root userid, selvom modulkataloget ejes af root. Hvis ikke-root userid er kompromitteret, kan en indtrenger overskrive eksisterende moduler, der ejes af det pågældende userid, og bruge denne eksponering til bootstrap op til rootadgang.
Modutils vil som standard afvise forsøg på at bruge et modul, der ikke ejes af root. Angivelse -r vil skifte tjek og tillade root at indlæse moduler, der ikke ejes af root.
Bemærk: Standardværdien for rootcheck kan ændres, når modutils er konfigureret.Brug af -r for at deaktivere root-kontrol eller indstilling af standard til "no root check" ved konfigurationstid er en stor sikkerhedseksponering og anbefales ikke.
-s, --syslog
Udfør alt tilsyslog(3) i stedet for terminalen.
-S, --kallsyms
Tving det indlæste modul til at havekallsyms data, selvom kernen ikke understøtter det. Denne mulighed er for små systemer, hvor kernen er indlæst udenkallsyms data, men udvalgte moduler behøverkallsyms til debugging. Denne indstilling er standard på Red Hat Linux.
-v, --ordrig
Være verbose
-V, --version
Vis versionen afinsmod.
-X, --eksport; -x, --noexport
Udfør og udfør ikke alle modulets eksterne symboler. Standardværdien er, at symbolerne skal eksporteres. Denne indstilling er kun effektiv, hvis modulet ikke eksplicit eksporterer sin egen kontrollerede symboltabell, og dermed afskrives.
-Y, --ksymoops; -y, --noksymoops
Gør og ikke tilføjksymoops symboler til ksyms. Disse symboler bruges afksymoops at give bedre fejlfinding, hvis der er en uopsigt i dette modul. Standard er forksymoopssymboler der skal defineres. Denne mulighed er uafhængig af-X/-x muligheder.
ksymoops symboler tilføjer ca. 260 bytes pr. indlæst modul. Medmindre du er meget kort på kernelplads og forsøger at reducere ksyms til den mindste størrelse, skal du tage standard og få mere præcis Ups-fejlfinding.ksymoops symboler er nødvendige for at gemme vedvarende moduldata.
N, --numeric kun
Kontroller kun den numeriske del af modulversionen mod kernelversionen, dvs. ignorér EXTRAVERSION, når der afgøres om et modul tilhører en kerne. Dette flag indstilles automatisk til kerne 2.5 og frem, det er valgfrit for tidligere kerne.
Modulparametre
Nogle moduler accepterer load-time parametre for at tilpasse deres drift. Disse parametre er ofte I / O port og IRQ numre, der varierer fra maskine til maskine og kan ikke bestemmes af hardware.
I moduler bygget til 2.0 seriekerner kan ethvert heltals- eller tegnpegersymbol behandles som en parameter og ændret. Begynder i 2.1-seriens kerner, symboler er udtrykkeligt markeret som parametre, således at kun specifikke værdier kan ændres. Derudover er der angivet typedata for at kontrollere de værdier, der er angivet ved indlæsningstiden.
I tilfælde af heltal kan alle værdier være i decimal, oktal eller hexadecimal a la C: 17, 021 eller 0x11. Array elementer er specificeret sekvens adskilt af kommaer. Elementer kan springes over ved at udelade værdien.
I 2,0-seriemoduler betragtes værdier, der ikke begynder med et tal, som strenge. Begyndende i 2.1 angiver parameterens typeoplysninger, om værdien skal tolkes som en streng. Hvis værdien begynder med dobbelt citater ('), fortolkes strengen som i C, undslippesekvenser og alle. Vær opmærksom på, at citaterne selv fra beskyttelsesprøven måske skal beskyttes mod shell-tolkning.
GPL Licensed Modules and Symbols
Startende med kernel 2.4.10, skal moduler have en licens streng, defineret ved hjælp afMODULE_LICENSE (). Flere strenge er anerkendt som GPL-kompatible; enhver anden licens streng eller ingen licens på alle måder at modulet behandles som proprietære.
Hvis kernen understøtter/ Proc / sys / kernel / plettet flag derefterinsmod vil OR det tainted flag med '1' når du lægger et modul uden en GPL licens. En advarsel udstedes, hvis kernen understøtter besvær og et modul er lastet uden en licens. En advarsel udstedes altid for moduler, der har aMODULE_LICENSE () det er ikke GPL-kompatibelt, selv på ældre kerner, der ikke understøtter besvær. Dette minimerer advarsler, når en ny modutils bruges på ældre kerner.
insmod -f (force) mode vil ELLER det tainted flag med '2' på kerner, der understøtter tainting. Det udsender altid en advarsel.
Nogle kerneudviklere kræver, at symboler, der eksporteres af deres kode, kun må bruges af moduler med en GPL-kompatibel licens. Disse symboler eksporteres afEXPORT_SYMBOL_GPL i stedet for det normaleEXPORT_SYMBOL. GPL-only-symboler, der eksporteres af kernen og af andre moduler, er kun synlige for moduler med en GPL-kompatibel licens, disse symboler vises i/ Proc / ksyms med et præfiks af 'GPLONLY_'. insmod ignorererGPLONLY_ præfiks på symboler, mens du lægger et GPL-licensmodul, så modulet refererer kun til det normale symbolnavn uden præfiks. GPL-kun symboler er ikke tilgængelige for moduler uden en GPL-kompatibel licens, dette omfatter moduler uden nogen licens overhovedet.
Ksymoops Assistance
At hjælpe med fejlsøgning af kernel Ups, når du bruger moduler,insmod standard til at tilføje nogle symboler til ksyms, se-Y mulighed. Disse symboler begynder med__insmod_ modulename_ . Det modulename er forpligtet til at gøre symbolerne unikke. Det er lovligt at indlæse det samme objekt mere end én gang under forskellige modulnavne. I øjeblikket er definerede symboler:
__insmod_ modulename _ Oobjectfile _ Mmtime _ vVERSION
objectfile er navnet på den fil, som objektet blev hentet fra. Dette sikrer, at ksymoops kan matche koden til det korrekte objekt. mtime er den sidste ændrede tidsstempel på den pågældende fil i hex, nul hvis stat mislykkedes. version er den kerneversion, som modulet blev sammensat til, -1 hvis der ikke findes nogen version. Det_O Symbolet har samme startadresse som moduloverskriften.
__insmod_ modulename _ Ssectionname _ Middellængde
Dette symbol vises ved starten af valgte ELF sektioner, i øjeblikket .text, .rodata, .data, .bss og .sbss. Det vises kun, hvis sektionen har en ikke-nul størrelse. sectionname er navnet på ELF sektionen, længde er længden af sektionen i decimal. Disse symboler hjælper ksymoops kortadresser til sektioner, når der ikke findes nogen symboler.
__insmod_ modulename _Ppersistent_ filnavn
Kun oprettet afinsmod hvis modulet har en eller flere parametre, der er markeret som vedholdende data og et filnavn for at gemme vedvarende data (se-e, ovenfor) er tilgængelig.
Det andet problem med debugging kernel Ups i moduler er det indholdet af / proc / ksyms og / proc / moduler kan skifte mellem Ups, og når du behandler logfilen. For at hjælpe med at løse dette problem, hvis mappen / var / log / ksymoops eksisterer dainsmod ogrmmod vil automatisk kopiere / proc / ksyms og / proc / modules til / var / log / ksymoops med et præfiks af `dato +% Y% m% d% H% M% S`. Systemadministratoren kan fortælle ksymoops, hvilke snapshot-filer der skal bruges, når debugging af en Ups. Der er ingen skifte til at deaktivere denne automatiske kopi. Hvis du ikke vil have det, skal du ikke oprette / var / log / ksymoops. Hvis denne mappe eksisterer, skal den ejes af root og være mode 644 eller 600, og du skal køre dette script hver dag eller deromkring. Skriptet nedenfor er installeret som insmod_ksymoops_clean.
#! / Bin / sh # Slet gemte ksymer og moduler, der ikke blev åbnet om 2 dage hvis -d / var / log / ksymoops derefter sæt -e # Sørg for, at der altid er mindst en version d = `dato +% Y% m% d% H% M% S` cp -a / proc / ksyms /var/log/ksymoops/${d}.ksyms cp -a / proc / modules /var/log/ksymoops/${d}.modules find / var / log / ksymoops -type f -atime +2 -exec rm {} ; fi NAVN insmod - Installer læsbar kernemodul SYNOPSIS insmod -fhkLmnpqrsSvVxXyYN -e persist_name -o MODULE_NAME -O blob_name -P præfiks modul symbol= værdi … Grundlæggende oplysninger at vide