Ukaz Linux / Unix insmod namešča modul, ki ga je mogoče naložiti v tekoče jedro.insmod poskuša povezati modul v tekoče jedro z razreševanjem vseh simbolov iz tabele simbolov, izvoženih iz jedra.
Če je ime datoteke modula podano brez imenikov ali razširitve,insmod bo poiskal modul v nekaterih skupnih imenikih. Okoljska spremenljivkaMODPATH se lahko uporabi za preglasitev te privzete vrednosti. Če konfiguracijska datoteka modula, kot je/etc/modules.conf obstaja, bo preglasil poti, določene vMODPATH.
Okoljska spremenljivkaMODULECONF lahko tudi izberete drugo konfiguracijsko datoteko od privzetega/etc/modules.conf (ali/etc/conf.modules (zastarelo)). Ta spremenljivka okolja bo preglasila vse zgoraj navedene opredelitve.
Ko spremenljivka okoljaUNAME_MACHINE je nastavljen, modutils bo uporabil svojo vrednost namesto polja stroj iz uname () syscall. To je predvsem v uporabi, ko sestavljate 64-bitne module v 32-bitnem uporabniškem prostoru ali obratno, nastaviteUNAME_MACHINE na vrsto modulov. Trenutni moduli ne podpirajo celotnega načina navzkrižne izgradnje modulov, omejeno je na izbiro med 32 in 64-bitnimi različicami arhitekture gostitelja.
Opcije
-e persist_name , - strokovnjak= persist_name
Določa, kje se obremenitve berejo kateri koli vztrajni podatki za modul in se zapišejo, ko je to instantiacija modula prazna. Ta možnost je tiho prezrta, če modul nima trajnih podatkov. Vztrajne podatke bere samoinsmod če je ta možnost prisotna, privzetoinsmod ne obdeluje trajnih podatkov.
Kot stenografska oblika,-e "" (prazen niz) razlagainsmod kot vrednostpersistdir kot je opredeljeno vmodules.conf, ki ji sledi ime datoteke modula glede na pot do modula, v kateri je bila najdena, minus poljubne sledilne ".gz", ".o" ali ".mod". Čemodules.conf določa "persistdir ="(t.j.persistdir je prazno polje), potem je ta skrajšana oblika tiho prezrta. (Glejmodules.conf (5).)
-f, - moč
Poskus naložite modulu, tudi če različica jedra v teku in različica jedra, za katero je bil sestavljen modul, ne ustreza. To samo preglasi preverjanje različice jedra, nima vpliva na preverjanje imena simbolov. Če se imena simbolov v modulu ne ujemajo z jedrom, potem ni možnosti za siloinsmod da naložite modul.
-H, - pomoč
Prikažite povzetek možnosti in takoj zapustite.
-k, --avtomatsko čiščenje
V modulu nastavite samodejno čiščenje. Ta zastava bo uporabljalakerneld(8), da odstranite module, ki niso bili uporabljeni v določenem časovnem obdobju - običajno eno minuto.
-L, - zakleni
Uporabajata(2), da se prepreči sočasna obremenitev istega modula.
-m, --zemljevid
Izpišite karto obremenitve na stdout, kar olajša razhroščevanje modula v primeru panike jedra.
-n, - obseg
Dummy run, naredi vse, razen obremenitev modula v jedro. Če to zahteva-m ali-O, bo potekal zemljevid ali blob datoteko. Ker modul ni naložen, je pravi naslov nalaganja jedra neznan, tako da zemljevid in blob temeljita na poljubnem naslovu 0x12340000.
-o module_name , - ime= module_name
Izrecno navedite modul, namesto da bi dobili ime iz osnovnega imena izvorne datoteke datoteke.
-O blob_name , - blob= blob_name
Shranite binarni predmet v blob_name . Rezultat je binarni blob (brez glave ELF), ki natanko prikazuje, kaj je naloženo v jedro po manipulaciji in premestitvi razdelka. Možnost-m priporočamo, da dobite zemljevid predmeta.
-p, - probe
Preverite, ali je mogoče uspešno naložiti. To vključuje iskanje datoteke objekta na poti modula, preverjanje številk različic in razreševanje simbolov. Ne preverja premestitve niti ne proizvaja zemljevida ali blob datoteke.
-P predpono , - prefiks= predpono
To možnost lahko uporabite z različicami modulov za SMP ali bigmem jedro, saj imajo ti moduli dodaten predpono, ki je dodana v njihovih imenih simbolov. Če je bilo jedro zgrajeno s simbolnimi različicami, poteminsmod bo samodejno izvlekel predpono iz definicije "get_module_symbol" ali "inter_module_get", od katerih mora eno obstajati v katerem koli jedru, ki podpira module. Če jedro nima simbolov, vendar je bil modul zgrajen z različicami simbolov, mora uporabnik priskrbeti-P.
-q, --tih
Ne natisnite seznam nerešenih simbolov. Ne pritožujte se zaradi neusklajenosti različice. Težava se bo odražala le v izhodnem statusuinsmod.
-r, - roba
Nekateri uporabniki sestavijo module pod nekorenskim uporabniškim nadimkom in nato namestijo module kot root. Ta proces lahko zapusti module, ki so v lasti nekorenskega uporabnika, čeprav je imenik modulov v lasti root. Če nekrjanski userid ogrozi, lahko vsiljivec prepisuje obstoječe module, ki so v lasti tega uporabniškega uporabnika, in to izpostavljenost uporabite za bootstrap do dostopa do root-a.
Modutils bo privzeto zavrnil poskuse uporabe modula, ki ni v lasti root. Določitev -r bo preklopil preverjanje in dovolil root naložiti module, ki niso v lasti root.
Opomba: Privzeta vrednost za preverjanje korena se lahko spremeni, ko nastavite modutils.Uporaba -r za onemogočanje preverjanja korenin ali nastavitev privzete nastavitve na »brez korenskega preverjanja« pri konfiguracijskem času je večja varnostna izpostavljenost in ni priporočljiva.
-s, --sloglog
Izkoristite vsesyslog(3) namesto terminala.
-S, - klešče
Prisiljeni naloženi modulkallsyms podatkov, tudi če jedro tega ne podpira. Ta možnost je za majhne sisteme, v katerih je jedro naloženo brezkallsyms podatkov, vendar izbrani moduli potrebujejokallsyms za razhroščevanje. Ta možnost je privzeta za Red Hat Linux.
-v, -verbose
Bodi pameten.
-V, - različica
Prikaži različicoinsmod.
-X, - izvoz; -x, --noexport
Naredite in ne izvozite vseh modulovih zunanjih simbolov. Privzeto je za izvoze simbolov. Ta možnost je učinkovita samo, če modul eksplicitno ne izvaža svoje kontrolne tabele simbolov in je zato opuščen.
-Y, - ksimo; -y, --noksymoops
Naredite in ne dodajteksymoops simboli za ksimi. Te simbole uporabljajoksymoops da zagotovite boljše odpravljanje napak, če v tem modulu obstaja Oops. Privzeto je zaksymoopssimboli, ki jih je treba opredeliti. Ta možnost je neodvisna od-X/-x opcije.
ksymoops simboli dodajo približno 260 bajtov za naloženi modul. Razen če resnično ni dovolj prostora na jedru in poskušate zmanjšati ksyms na svojo najmanjšo velikost, vzemite privzeto in dobili natančnejše Oops debugging.ksymoops simboli so potrebni za shranjevanje trajnih modulnih podatkov.
-N, - samo številčno
Preverite samo številko dela modula glede na različico jedra, npr. Prezrite EXTRAVERSION pri odločanju, ali modul pripada jedru. Ta zastavica se samodejno nastavi za jedro 2.5 naprej, neobvezna je za prejšnja jedra.
Parametri modula
Nekateri moduli sprejemajo parametre obremenitve, da prilagodijo njihovo delovanje. Ti parametri so pogosto vhodno / izhodna vrata in številke IRQ, ki se razlikujejo od naprave do naprave in jih ni mogoče določiti s strojne opreme.
V modulih, zgrajenih za jedro serije 2,0, se lahko poljubno število znakov ali simbol kazalca obravnava kot parameter in spremeni. Od začetka v jedru serije 2.1 so simboli izrecno označeni kot parametri, tako da se lahko spremenijo le določene vrednosti. Poleg tega so na voljo informacije o tipu za preverjanje vrednosti, ki so bile zagotovljene ob času nalaganja.
V primeru celih števil lahko vse vrednosti v decimalnem, oktalnem ali šestnajstiškem a la C: 17, 021 ali 0x11. Elementi matrike so določeni zaporedji, ločeni z vejicami. Elemente lahko preskočite tako, da izpuščate vrednost.
V modulih serij 2.0 se vrednosti, ki se ne začnejo s številom, štejejo za nize. Od 2.1 naprej podatki o tipu parametra kažejo, ali naj vrednost razume kot niz. Če se vrednost začne z dvojnimi narekovaji ('), se niz razlaga kot v C, zaporedja pobega in vse. Upoštevajte, da je treba v ukazni vrstici ukazne lupine morda zaščititi pred razlago ukazne lupine.
GPL licencirani moduli in simboli
Začetek z jezgrom 2.4.10 mora imeti modul licenčni niz, ki je definiran z uporaboMODULE_LICENSE (). Več nizov je priznano kot združljivo z GPL; kateri koli drug licenčni niz ali licenca sploh ne pomeni, da se modul obravnava kot lastniško.
Če jedro podpira/ proc / sys / jedro / rumene barve nato zateminsmod bo ob nalaganju modula brez licence GPL prikazal ALI zastrto zastavo z oznako »1«. Opozorilo se izda, če jedro podpira tintiranje in je modul naložen brez licence. Za module, ki imajo aMODULE_LICENSE () to ni združljivo z GPL, tudi v starejših jedrcih, ki ne podpirajo taintinga. To zmanjšuje opozorila, ko se v starejših jedrih uporabljajo novi moduli.
insmod -f (sila) bo ALI zastajana zastava z '2' na jedrcih, ki podpirajo tainting. Vedno izda opozorilo.
Nekateri razvijalci jedra zahtevajo, da simbole, ki se izvažajo po njihovi kodi, uporabljajo samo moduli z licenco, združljivo z GPL. Te simbole izvoziEXPORT_SYMBOL_GPL namesto normalneEXPORT_SYMBOL. Simboli, ki jih GPL izvažajo jedro in drugi moduli, so vidni le modulom z licenco, združljivo z GPL, ti simboli se pojavijo v/ proc / ksyms s predpono "GPLONLY_'. insmod ignoriraGPLONLY_ predpone na simbolih pri nalaganju licenčnega modula GPL, tako da se modul nanaša samo na običajno ime simbola, brez predpono. Simboli s simbolom GPL niso na voljo modulom brez licence, združljive z GPL, to vključuje modele brez licence.
Pomoč Ksymoops
Pomagati pri razhroščevanju jedra Ups, ko uporabljate module,insmod privzeto dodaja nekaj simbolov k ksimi, glejte-Y možnost. Ti simboli se začnejo__insmod_ modulename_ . The modulename je potrebno, da so simboli edinstveni. Isti predmet je pravno večkrat naložen pod različnimi imeni modula. Trenutno so definirani simboli:
__insmod_ modulename _ Oobjectfile _ Mmtime _ Vversion
objektni objekt je ime datoteke, iz katere je bil naložen predmet. To zagotavlja, da lahko ksymoops ustreza kodi pravilnemu objektu. mtime je zadnji modificirani časovni žig v tej datoteki v hex, nič, če stat ni uspel. različico je različica jedra, za katero je bil modul sestavljen, -1, če ni na voljo različice. The_O simbol ima isti zagonski naslov kot glava modula.
__insmod_ modulename _ Ime ssekcije _ Dolžina
Ta simbol se prikaže na začetku izbranih razdelkov ELF, trenutno .text, .rodata, .data, .bss in .sbss. Pojavi se samo, če ima razdelek velikost, ki ni nič. ime oddelka je ime razdelka ELF, dolžina je dolžina razdelka v decimalki. Ti simboli pomagajo naslovom map ksymoops na odseke, ko ni na voljo simbolov.
__insmod_ modulename _Ppersistent_ Ime datoteke
Ustvaril je leinsmod če ima modul enega ali več parametrov, ki so označeni kot trajni podatki, in ime datoteke, ki omogoča shranjevanje trajnih podatkov (glej-e, zgoraj) je na voljo.
Druga težava z razhroščevanjem jedra Oops v modulih je vsebina / proc / ksyms in / proc / moduli se lahko spremenijo med Oops in ob obdelavi datoteke dnevnika. Če želite odpraviti to težavo, potem imenik / var / log / ksymoops obstajainsmod inrmmod bo samodejno prepisal / proc / ksyms in / proc / module v / var / log / ksymoops s predpono `datum +% Y% m% d% H% M% S`. Skrbnik sistema lahko ksymoopsu pove, katere posnetke datotek uporabite pri razhroščevanju Oops. Samodejna kopija ni onemogočena. Če ne želite, da se to zgodi, ne ustvarite / var / log / ksymoops. Če ta imenik obstaja, mora biti v lasti root in je način 644 ali 600 in vsak dan bi morali zagnati ta skript. Spodnji skript je nameščen kot insmod_ksymoops_clean.
#! / bin / sh # Izbris shranjenih ksyms in modulov, do katerih dostopa v 2 dneh če je -d / var / log / ksymoops potem set -e # Prepričajte se, da je vedno na voljo vsaj ena različica d = `datum +% Y% m% d% H% M% S` cp -a / proc / ksyms /var/log/ksymoops/${{}.ksyms cp -a / proc / modules /var/log/ksymoops/${d}.modules našli / var / log / ksymoops -type f-atime +2 -exec rm {} ; fi NAME insmod - namestite napajalni modul jedra POVZETEK insmod -fhkLmnpqrsSvVxXyYN -e persist_name -o module_name -O blob_name -P predpono modul simbol= vrednost … Osnovne informacije za vedenje













