Linux / Unix ukaz: insmod

Komandni ukaz Linux / Unix insmod v tekalnem jedru namešča obremenljivi modul . 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, bo insmod poiskal modul v nekaterih pogostih imenskih imenikov. Za prevzem te privzete vrednosti lahko uporabite spremenljivko MODPATH . Če obstaja konfiguracijska datoteka modula, kot je /etc/modules.conf , bo preglasila poti, določene v MODPATHU .

Orodje MODULECONF lahko uporabite tudi za izbiro druge konfiguracijske datoteke iz privzetega /etc/modules.conf (ali /etc/conf.modules (zastarelo)). Ta spremenljivka okolja bo preglasila vse zgoraj navedene opredelitve.

Ko je nastavljena spremenljivka okolja UNAME_MACHINE , bodo modutli iz polja uname () uporabili svojo vrednost namesto polja stroja. To je predvsem v uporabi pri sestavljanju 64-bitnih modulov v 32-bitnem uporabniškem prostoru ali obratno, nastavite UNAME_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 , -persist = 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. Obstoječe podatke bere samo insmod, če je ta možnost prisotna, po privzetku insmod ne obdeluje trajnih podatkov.

Kot skrajšana oblika , -e "" (prazen niz) tolmači insmod kot vrednost persistdir, kot je določeno v modules.conf , ki mu sledi ime datoteke modula glede na pot do modula, v kateri je bilo ugotovljeno, sledi ".gz", ".o" ali ".mod". Če modules.conf določa " persistdir = " (tj. Persistdir je prazno polje), se ta stenična oblika tiho prezre. (Glej modules.conf (5).)

-f , -force

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, ni mogoče, da bi modul vstavili insmod .

-h , - pomoč

Prikažite povzetek možnosti in takoj zapustite.

-k , -autoclean

V modulu nastavite samodejno čiščenje. To zastavo bo uporabil kerneld (8), da se odstranijo moduli, ki niso bili uporabljeni v določenem časovnem obdobju - običajno eno minuto.

-L , - zapor

Uporabite jate (2), da preprečite sočasno breme istega modula.

-m , --map

Izpišite karto obremenitve na stdout, kar olajša razhroščevanje modula v primeru panike jedra.

-n , -noload

Dummy run, naredi vse, razen obremenitev modula v jedro. Če to zahteva m- ali -O , bo zagon ustvaril mapo 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 , -name = ime-modula

Izrecno navedite modul, namesto da bi dobili ime iz osnovnega imena izvorne datoteke datoteke.

-O blob_name , -blob = blob_name

Shrani 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 je priporočljiva za pridobitev zemljevida 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 , --prefix = 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, bo insmod samodejno izvlekel predpono iz definicije "get_module_symbol" ali "inter_module_get", od katerih mora biti eden 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 , - vprašanje

Ne natisnite seznam nerešenih simbolov. Ne pritožujte se zaradi neusklajenosti različice. Problem se bo odražal le v izhodnem statusu insmoda .

-r , - root

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čanje -r bo preklopilo preverjanje in dovolilo 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 , - syslog

Izvedite vse, da syslog (3) namesto terminala.

-S , --kallsimi

Prisiljeni modul napolni s podatki o kallsyms , tudi če jedro tega ne podpira. Ta možnost je za majhne sisteme, v katerih je jedro naloženo brez podatkov kallsyms, vendar izbrani moduli potrebujejo kallsimi za razhroščevanje. Ta možnost je privzeta za Red Hat Linux.

-v , --verbose

Bodi pameten.

-V , -version

Prikaže različico insmoda .

-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 , -ksymoops ; -y , -noksymoops

Do ksymoops simbolov ne dodajajte in ne dodajajte ksysov. Te simbole uporabljajo ksymoops za boljše odpravljanje napak, če v tem modulu obstaja Oops. Privzeto je za definiranje simbolov ksymoops . Ta možnost je neodvisna od možnosti -X / -x .

ksymoops simboli dodajo približno 260 bajtov na 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. Simboli ksymoops so potrebni za shranjevanje trajnih modulnih podatkov.

-N , - samo številčno

Preverite le številčno različico modula proti različici jedra, tj. 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 za izhod in vse. Upoštevajte, da je treba v ukazni vrstici ukazne lupine morda zaščititi pred tolmačenjem ukazne lupine.

GPL licencirani moduli in simboli

Začnejo z jedrom 2.4.10, morajo moduli imeti licenčni niz, ki je določen z MODULE_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 zastavico / proc / sys / kernel / tainted, bo insmod ob nalaganju modula brez licence GPL označil zastavljeno zastavico z oznako »1«. Opozorilo se izda, če jedro podpira tintiranje in je modul naložen brez licence. Vedno se izdaja opozorilo za module, ki imajo MODULE_LICENSE (), ki ni združljiva z GPL, tudi v starejših jedrcih, ki ne podpirajo taintinga. To zmanjšuje opozorila, ko se v starejših jedrih uporabljajo novi moduli.

način insmod -f (sila) bo OR zaprto zastavo 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 izvozi EXPORT_SYMBOL_GPL namesto običajnega EXPORT_SYMBOL . Simboli, ki jih samo GPL-ji 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 prezrije predpono GPLONLY_ na simbolih ob nalaganju licenčnega modula GPL, tako da se modul nanaša samo na običajno ime simbolov, 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. Pri uporabi modulov, insmod privzame dodajanje simbolov v ksyms, glejte možnost -Y . Ti simboli se začnejo z __insmod_modulename_ . Modul Ime je potrebno, da simboli postanejo edinstveni. Isti predmet je pravno večkrat naložen pod različnimi imeni modula. Trenutno so definirani simboli:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

objectfile 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čica je različica jedra, za katero je bil modul sestavljen, -1, če ni na voljo različice. Simbol _O ima isti startni naslov kot glava modula.

__insmod_modulename_Ssectionname_Length

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 razdelka je ime razdelka ELF, dolžina pa je dolžina razdelka v decimalki. Ti simboli pomagajo naslovom map ksymoops na odseke, ko ni na voljo simbolov.

__insmod_modulename_Ppersistent_filename

Ustvari ga le insmod, č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).

Druga težava z razhroščevanjem jedra Oops v modulih je, da se vsebina / proc / ksyms in / proc / modul lahko spremeni med Oops in ob obdelavi datoteke dnevnika. Če želite odpraviti to težavo, če obstaja imenik / var / log / ksymoops , bodo insmod in rmmod samodejno kopirali / proc / ksyms in / proc / module v / var / log / ksymoops s predpono `date +% 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 .

Osnovne informacije za vedenje

NAME

insmod - namestite napajalni modul jedra

POVZETEK

insmod [-fhkLmnpqrsSvVxXyYN] [-s persist_name ] [-o module_name ] [-O blob_name ] modul [-P prefix ] [ simbol = vrednost ...]