Linukso / Unikso Komando: insmod

La Linukso / Unikso-komando insmod instigas ŝarĝeblan modulon en la kuranta kerno. insmod provas ligi modulon en la kurantan kernon solvante ĉiujn simbolojn de la eksportita simbolo-tablo de la kerno.

Se la modulo-dosiernomo estas donita sen dosierujoj aŭ etendo, insmod serĉos la modulon en iuj komunaj defaŭlta dosierujoj. La medio variablo MODPATH povas esti uzata por nuligi ĉi tiun defaŭltan. Se ekzistas modulo-agorda dosiero kiel /etc/modules.conf , ĝi anstataŭos la vojojn difinitajn en MODPATH .

La medio-variablo MODULECONF ankaŭ povas esti uzata por elekti alian agordon-dosieron de la defaŭlta /etc/modules.conf (aŭ /etc/conf.modules (senpaga)). Ĉi tiu media variablo anstataŭos ĉiujn difinojn supre.

Kiam ambienta variablo UNAME_MACHINE estas agordita, modutiloj uzos ĝian valoron anstataŭ la maŝina kampo de la uname () syscall. Ĉi tio estas plejparte de uzo kiam vi kunmetas 64-bitajn modulojn en 32-bitaj uzaj spacoj aŭ viceversa, agordu UNAME_MACHINE al la tipo de la moduloj. Nunaj modutiloj ne subtenas plenan krucon-konstruan reĝimon por moduloj, ĝi estas limigita al elektado inter 32- kaj 64-bitaj versioj de la gastigada arkitekturo.

Opcioj

-e persist_name , --persist = persist_name

Specifas, kie ajna konstanta datumo por la modulo estas legata de ŝarĝo kaj skribita al kiam ĉi tiu instigo de la modulo estas malŝarĝita. Ĉi tiu opcio estas silente ignorita se la modulo ne havas konstantan datumon. Persistenta datumo nur estas legita de insmod se ĉi tiu opcio estas ĉeestanta, defaŭlte la insmodo ne procesas konstantan datumon.

Kiel taŭga formo , -e "" (malplena ĉeno) estas interpretita de insmod kiel la valoro de persistdir kiel difinita en moduloj.conf , sekvita de la dosiernomo de la modulo rilate al la modulo serĉvojo ĝi estis trovita, malpli trapasante ".gz", ".o" aŭ ".mod". Se moduloj.conf specifas " persistdir = " (te persistdir estas malplena kampo) tiam ĉi tiu taŭga formularo silente ignoriĝas. (Vidu modulojn.conf (5).)

-f , --force

Provu ŝarĝi la modulon eĉ se la versio de la kuranta kerno kaj la versio de la kerno por kiu la modulo estis kompilita ne kongruas. Ĉi tio nur forĵetas la kontrolan version de la kerno, ĝi havas neniun efikon sur simbolaj ĉekoj. Se la simbolo nomiĝas en la modulo ne kongruas kun la kerno, tiam ne estas maniero devigi insmodon por ŝarĝi la modulon.

-h , - helpo

Montru resumon de ebloj kaj tuj eliras.

-k , --autoclean

Fiksu la aŭtomatan pura flago sur la modulo. Ĉi tiu flago estos uzata de kerneld (8) por forigi modulojn, kiuj ne estis uzataj dum kelka tempo - kutime unu minuto.

-L , - klako

Uzu ŝafon (2) por eviti samtempajn ŝarĝojn de la sama modulo.

-m , --map

Elsendu ŝarĝan mapon sur stdout, faciligante elpurigi la modulon en kazo de kerno-paniko.

-n , - ne plu

Dummy run, faru ĉion krom ŝarĝi la modulon en la kernon. Se oni petos per -m-O , la kuro produktos mapon aŭ blob-dosieron. Pro tio ke la modulo ne estas ŝarĝita, la reala kerno-ŝarĝo ne konas, do la mapo kaj blob-dosiero estas bazitaj sur arbitra ŝarĝo de 0x12340000.

-o module_name , --name = module_name

Eksplicite nomu la modulon, anstataŭ derivi la nomon de la baza nomo de la fonta objekto-dosiero.

-O blob_nomo , --blob = blob_nomo

Konservu la binaran celon en blob_nomo . La rezulto estas binara blob (ne ELF-kaplinioj) montrante precize kio estas ŝarĝita en la kernon post sekcio manipulado kaj translokigo. Opcio -m rekomendas akiri mapon de la objekto.

-p , --probe

Provu la modulon por vidi ĉu ĝi sukcese ŝarĝiĝis . Ĉi tio inkluzivas loki la objekto-dosieron en la modula vojo, kontrolanta versionajn nombrojn kaj solvante simbolojn. Ĝi ne kontrolas la translokiĝojn kaj ne produktas mapon aŭ bloban dosieron.

-P prefikso , --prefix = prefikso

Ĉi tiu opcio povas esti uzata kun versionaj moduloj por SMP aŭ bigmem kerno, ĉar tiaj moduloj havas kroman prefikson aldonitan en iliaj simbomoj. Se la kerno estis konstruita kun simbolaj versioj tiam insmod aŭtomate ekstraktos la prefikson de la difino de "get_module_symbol" aŭ "inter_module_get", unu el kiuj devas ekzisti en iu ajn kerno kiu subtenas modulojn. Se la kerno ne havas simbolajn versiojn, sed la modulo estis konstruita kun simbolaj versioj, tiam la uzanto devas provizi -P .

-q , -quiet

Ne printu liston de neniuj solvitaj simboloj. Ne plendu pri malsukcesa versio. La problemo nur reflektos en la eliro-statuso de insmod .

-r , - radiko

Iuj uzantoj kompiligas modulojn sub ne-radika uzanto tiam instali la modulojn kiel root. Ĉi tiu procezo povas lasi la modulojn posedataj de la ne-radika uzanto, kvankam la dosierujo de moduloj estas posedata de radiko. Se la ne-radika uzanto estas kompromitita, entrudulo povas anstataŭigi ekzistantajn modulojn posedataj de tiu uzanto kaj uzu ĉi tiun ekspozicion por eksplodi al radika aliro.

Defaŭlte, modutiloj malakceptos provojn uzi modulon, kiu ne estas posedata de radiko. Specifante -r alŝaltos la kontrolon kaj permesos radikon ŝarĝi modulojn, kiuj ne estas posedataj de radiko. Noto: la defaŭlta valoro por radika kontrolo povas esti ŝanĝita kiam modutiloj estas agorditaj.

Uzo de -r por malebligi radikadon aŭ fiksante la defaŭltecon al "neniu radika kontrolo" ĉe agorda tempo estas grava sekureca ekspozicio kaj ne rekomendas.

-s , - syslog

Elŝaltu ĉion al syslog (3) anstataŭ la fina stacio.

-S , --kallsyms

Forigu la ŝarĝitan modulon havi kallsyms- datumojn, eĉ se la kerno ne subtenas ĝin. Ĉi tiu opcio estas por malgrandaj sistemoj, kie la kerno ŝarĝas sen datumoj de kallsimoj, sed elektitaj moduloj bezonas kallsims por elpurigi. Ĉi tiu opcio estas la defaŭlta en Red Hat-Linukso.

-v , --verbose

Estu verŝajne.

-V , --versio

Montru la version de insmod .

-X , --portporto ; -x , - neeksporta

Faru kaj ne eksportu ĉiujn eksterajn simbolojn de la modulo, respektive. La defaŭlta estas por eksporti la simbolojn. Ĉi tiu opcio estas nur efika se la modulo ne eksplicite eksportas sian propran kontrolitan simbolon, kaj tiel estas senkulpigita.

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

Faru kaj ne aldonu ksymoops- simbolojn al ksyms. Ĉi tiuj simboloj estas uzataj de ksymoops por provizi pli bonan elpurigon, se ekzistas Oops en ĉi tiu modulo. La defaŭlto estas por la ksymoops- simboloj esti difinitaj. Ĉi tiu opcio estas sendependa de la -X / -x- opcioj.

ksymoops- simboloj aldonas proksimume 260 bytes per ŝarĝita modulo. Krom se vi estas vere mallonga sur la kerno de la kerno kaj provas redukti ksyms al ĝia minimuma grandeco, prenu la defaŭltan kaj akiri pli precizan Oops elpurigadon. Ksymoops- simboloj estas bezonataj por konservi konstantan modulon-datumon.

-N , --numeric-nur

Nur kontrolu la nombran parton de la modulo-versio kontraŭ la kerno-versio, tio estas, ignori EXTRAVERSION kiam decidante, se modulo apartenas al kerno. Ĉi tiu flago aŭtomate starigas por kerno 2.5 pluen, ĝi estas laŭvola por antaŭaj kernoj.

Moduloj de parametroj

Iuj moduloj akceptas ŝarĝtempajn parametrojn por personecigi ilian operacion. Ĉi tiuj parametroj ofte estas I / O haveno kaj IRQ-nombroj, kiuj varias de maŝino al maŝino kaj ne povas esti determinitaj de la aparataro.

En moduloj konstruitaj por serioj de 2.0 serioj, ĉiu simbolo aŭ signa pointer-simbolo povas esti traktita kiel parametro kaj modifita. Komencante en la serioj 2.1, la simboloj estas eksplicite markitaj kiel parametroj tiel ke nur specifaj valoroj povas esti ŝanĝitaj. Krome, tajpas informon por kontroli la valorojn provizitajn en ŝarĝo.

En la (kesto, okazo) de (entjeroj, entjeras), ĉiuj (valoroj, valoras) povas esti en decimala, octala aŭ heksadekseca al la C: 17, 021 aŭ 0x11. Arrayaj elementoj estas precizigitaj sekvenco de komoj. Elementoj povas preterlasi preterlasante la valoron.

En 2.0-modaj serioj, valoroj, kiuj ne komencas kun numero, estas konsideritaj ŝnuroj. Komencante en 2.1, la informo de la parametro indikas ĉu por interpreti la valoron kiel ĉenon. Se la valoro komenciĝas per duoblaj citaĵoj ( " ), la kordo estas interpretata kiel en C, eskapu sekvencoj kaj ĉiuj. Notu, ke el la konkaĵprogramo, la propraj citaĵoj eble devas esti protektitaj de ŝela interpreto.

GPL Licencaj Moduloj kaj Simboloj

Komencante kun kerno 2.4.10, moduloj devus havi permesilon, difinitan per MODULE_LICENSE () . Pluraj kordoj estas agnoskitaj kiel GPL kongruaj; ajna alia permesilo aŭ neniu permesilo tute signifas, ke la modulo estas traktita kiel propra.

Se la kerno elportas la / proc / sys / kernel / tainted flag tiam insmod faros OR la ​​makulitan flagon kun '1' kiam ŝarĝos modulon sen GPL-permesilo. Averto estas elsendita se la kerno subtenas malklara kaj modulo estas ŝarĝita sen permesilo. Averto ĉiam estas elsendita por moduloj, kiuj havas MODULE_LICENSE (), kiuj ne estas GPL kongruaj, eĉ en pli malnovaj kernoj, kiuj ne subtenas. Ĉi tio minimigas avertojn kiam novaj modutiloj estas uzataj sur malnovaj kernoj.

insmod -f (forto) reĝimo OR havos la flakitan flagon per '2' sur kernoj, kiuj subtenas. Ĝi ĉiam avertas.

Kelkaj kernaj programistoj postulas, ke simboloj eksportitaj de ilia kodo nur devas esti uzataj per moduloj kun GPL-kongrua permesilo. Ĉi tiuj simboloj estas eksportitaj de EXPORT_SYMBOL_GPL anstataŭ la normala EXPORT_SYMBOL . GPL-solaj simboloj eksportitaj de la kerno kaj per aliaj moduloj nur estas videblaj al moduloj kun GPL-kongrua permesilo, ĉi tiuj simboloj aperas en / proc / ksyms kun prefikso de ' GPLONLY_ '. insmod ignoras la GPLONLY_ prefikso sur simboloj dum ŝarĝas GPL-licencan modulon, do la modulo nur raportas al la normala simbola nomo, sen la prefikso. GPL-nuraj simboloj ne estas disponeblaj por moduloj sen GPL-kongrua permesilo, ĉi tio inkluzivas modulojn tute sen permesilo.

Ksymoops-Asistado

Por helpi kun elpurigado de kerno Oops, kiam oni uzas modulojn, insmod difinas por aldoni iujn simbolojn al ksyms, vidu la -Y- opcion. Ĉi tiuj simboloj komenciĝas per __insmod_modulename_ . La modulo estas necesa por fari la simbolojn sola. Ĝi estas laŭleĝa ŝarĝi la saman celon pli ol unufoje sub malsamaj moduloj. Nuntempe, difinitaj simboloj estas:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

objectfile estas la nomo de la dosiero, kiun la objekto ŝarĝis. Ĉi tio certigas, ke ksymoops povas egali la kodon al la ĝusta celo. mtime estas la lasta modifita timestamp sur tiu dosiero en hekso, nulo se stat malsukcesis. versio estas la kerno-versio, kiun la modulo estis kompilita por, -1 se neniu versio estas havebla. La O- simbolo havas la saman komencan adreson kiel la modulo-kaplinio.

__insmod_modulename_Ssectionname_Llength

Ĉi tiu simbolo aperas ĉe la komenco de elektitaj ELF-sekcioj, nuntempe .text, .rodata, .data, .bss kaj .sbss. Ĝi nur aperas se la sekcio havas ne-nula grando. sekcio nomo estas la nomo de la sekcio ELF, longo estas la longeco de la sekcio en dekuma. Ĉi tiuj simboloj helpas ksymoops-mapojn al sekcioj kiam neniu simboloj estas haveblaj.

__insmod_modulename_Ppersistent_filename

Nur kreita de insmod se la modulo havas unu aŭ pli da parametroj, kiuj estas markitaj kiel konstantaj datumoj kaj dosiernomo por konservi konstantan datumon (vidu -e , supre) estas havebla.

La alia problemo kun elpuriga kerno Oops en moduloj estas, ke la enhavo de / proc / ksyms kaj / proc / moduloj povas ŝanĝi inter la Oops kaj kiam vi procesas la protokolon. Por helpi venki ĉi tiun problemon, se la dosierujo / var / log / ksymoops ekzistas tiam insmod kaj rmmod aŭtomate kopii / proc / ksyms kaj / proc / modulojn al / var / log / ksymoops kun prefikso de 'dato +% Y% m % d% H% M% S`. La administra sistemo povas rakonti ksymoops, kiujn bildoj de ekrankopioj uzu al la elpurigi Oops. Ne estas ŝaltilo por malebligi ĉi tiun aŭtomatan kopion. Se vi ne volas ke ĝi okazas, ne kreu / var / log / ksymoops . Se tiu dosierujo ekzistas, ĝi devus esti posedata de radiko kaj estu modo 644 aŭ 600 kaj vi devus ekzekuti ĉi tiun skripton ĉiutage aŭ tiel. La skripto sube estas instalita kiel insmod_ksymoops_clean .

Baza informo scii

NAME

insmod - instali ŝarĝeblan kernan modulon

SYNOPSIS

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o module_name ] [-O blob_name ] [-P- prefikso ] modulo [ symbol = valoro ...]