Linux / Unix kommando: insmod

It kommando insmod Linux / Unix ynstallearret in laden module yn 'e rinnende kernel. Insmod besiket in module te keppeljen yn 'e rinnende kernel troch it bewarjen fan alle symboalen fan' e eksportearre symboalstafel fan 'e kernel.

As de module-triemnamme sûnder mappen of útwreiding is, sil ynsmod sykje nei it modul yn guon normale standerttriemmen. De omjouwingsfariabele MODPATH kin brûkt wurde om dizze standert te feroverjen . As in module-konfiguraasjetriem as /etc/modules.conf bestiet, sil it paden yn MODPATH bewarre wurde .

De omjouwingsfariabele MODULECONF kin ek brûkt wurde om in oare konfiguraasjetrift te selektearjen fan de standert /etc/modules.conf (of / etc/conf.modules (ferwurde)). Dizze omjouwingsfariabele sille alle hjirboppe definieare oerskriuwe.

As de omjouwingsfariabele UNAME_MACHINE ynsteld wurdt, sille modutils har wearde brûke ynstee fan it masinefjild fan 'e uname () syscall. Dit is benammen fan gebrûk as jo 64-bitmodule yn 32-bit brûkersromte kompilearje of oarsom, set UNAME_MACHINE nei it type fan de modules. Aktuele modifikaasjes stypje gjin folsleine cross-build-modus foar modulen, it is beheind ta selektearjen tusken 32- en 64-bit ferzjes fan 'e host-arsjitektuer.

Opsjes

-e persist_name , --persist = persist_name

Beskriuwt wêr't persistente gegevens foar it module lêzen wurde fan op laden en skreaune oan wannear't dizze ynstânsje fan it module ûntlient. Dizze opsje sil sil negeare wurde as de module gjin persistente gegevens hat. Persistinsjele gegevens wurde allinich lêzen troch insmod as dizze opsje is, standert ynsmod gjin persistente data.

As in skowe-foarm , -e "" (in lege string) wurdt ynterpretearre troch insmod as wearde fan persistdir as definiearre yn modules.conf , folge troch de namme fan it module foar it module-sykpaad dat it fûn waard, minus elk trailing ".gz", ".o" of ".mod". As modules.conf bepaalde " persistdir = " (dus persistdir is in lege fjild) dan wurdt dizze skriftlike foarm stil stean litte. (Sjoch modules.conf (5).)

-f , - fersterkje

It probleem probearje it module lykwols ek as de ferzje fan it funksjonele kernel en de ferzje fan it kernel wêrnei it module kompilearre is, net oerienkomme. Dit allinich beoardielet de kernelferzje-check, it hat gjin effekt op symboalyske kontrôles. As de symbo-nammen yn it module net oerien komme mei de kernel, dan is der gjin manier om ynsmod te ferkraanjen om it module te laden.

-h , --help

Toant in gearfetting fan opsjes en fuortdaliks út.

-k , --autoklean

Set de auto-skjinne flagge op 'e module. Dizze flagge wurdt brûkt troch kerneld (8) om modules te wiskjen dy't net in geweldige perioade brûkt wurde - meast ien minuut.

-L , --lock

Flock (2) brûke om simultane loads fan deselde module te foarkommen.

-m , --map

Utfier in laden map op stdout, wêrtroch it makliker wurdt it module te debuggen yn it gefal fan in kearnpanike.

-n , -noload

Dummy rune, alles dwaan as it laden fan it module yn 'e kearn. As jo ​​frege wurde troch in -m of -O , sil de run in map of blob-triem generearje. Omdat it module net laden is, is de echte kerneladres adres ûnbekend, sadat de map en blob-bestân basearre binne op in willekeurige adres fan 0x12340000.

-o module_name , - name = module_name

Wiskje it modul explicitly, mar it ûntfange de namme net fan 'e basisnammen fan it boarneobjektfile.

-O blob_name , --blob = blob_name

Bewarje it binêre objekt yn blob_name . It resultaat is in binêre blob (gjin ELF-kopteksten) dy't krekt sjen wat yn 'e kernel nei de manipulaasje en ferhuzing fan' e siel laden is. Option -m is oanrikkemandearre om in kaart fan it objekt te krijen.

-p , -probe

Besykje it module om te sjen oft it mei súksesfol laden wurde koe. Dit omfetsje it ynstellen fan it objektfile yn it modulepaad, kontrolearjen fan ferzjen nûmers, en bepaalde symboalen. It kontrolearret de relocations net noch produktearret in map of blob-bestân.

-P prefix , --prefix = prefix

Dizze opsje kin brûkt wurde mei ferwurke modulen foar in SMP of grutmem kernel, om't soksoarte modulen in ekstra prefix tafoegje yn harren symboalnammen. As de kernel mei symbolferzjes boud is, ûntfilt automatysk it prefix út de definiasje fan "get_module_symbol" of "inter_module_get", ien fan dy moat wêze yn elke kernel dy't modules stipet. As de kernel gjin symbolferzjes hat, mar it module is boud mei symboalferzjes dan moat de brûker -P oanfiere.

-q , --komst

Druk gjin list mei alle unrjochte symboalen. Net klagje oer ferfange net-passaazje. It probleem sil allinich werjûn wurde yn 'e útgongstatus fan insmod .

-r , - root

Guon brûkers kompilearje modules ûnder in net-root-brûker, dus dan de module as root ynstallearje. Dit proses kin de mûlemen fan 'e net-root brûkerside ferlitte, hoewol it module's directory is eigendom fan root. As de net-root-brûkerside kompromisearre is, kin in yndrukte besteande modulen oerskriuwe dy't eigendom fan dizze userid binne en brûk dizze eksposysje nei bootstrap oant root-tagong.

Standert sil modultielen problemen wegerje om in module te brûken dat net eigendom is fan root. It oantsjutte -r sil it kontrôle toetsen en it root oanmeitsje om modules te laden dy't net eigendom binne fan root. Taljochting: de standertwearde foar root-check kin wizige wurde as de modutilen ynsteld binne.

Brûk fan -r om de root-kontrôle te ûntsiferje of de standert yn te stellen foar "gjin root-check" by konfiguraasjetriem is in grutte feiligensbelesting en wurdt net oanrikkemandearre.

-s , - syslog

Allegear útfier nei syslog (3) ynstee fan it terminal.

-S , - kallsyms

Meitsje it laden module om ksysys gegevens te hawwen, sels as de kernel it net stipet. Dizze opsje is foar lytse systemen wêr de kernel sûnder kalssyms data lade, mar selektearre modules nedich binne kallsyms foar debuggen. Dizze opsje is de standert op Red Hat Linux.

-v , --verbose

Be verbose.

-V , - ferzje

Lit de ferzje fan insmod sjen .

-X , - eksportearje ; -x , -noexport

Doch alle eksimplaren fan de module fan 'e module eksportearje en respektearje. De standert is foar de symboalen eksportearre. Dizze opsje is allinich effektyf as de module dizze explikaal eksimplaar net eksportearre hat, en sadwaande wurdt ferwurde.

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

Gean en ksymoops- symbols net oan ksyms oan. Dizze symboalen wurde brûkt troch ksymoops foar bettere debuggen as der in Oops is yn dit module. De standert is foar de ksymoopssymbols dy't definiearre wurde. Dizze opsje is ûnôfhinklik fan de -X / -x opsjes.

ksymoops- symboalen sakje sa'n 260 bytes per laden module. Ast net echt koarte op kernelromte hast en besykje ksyms op syn minimale grutte te ferleegjen, nim de standertwearde en krije mear genôch Oops debuggen. Ksymoops- symboalen binne ferplichte om persistente module-data te bewarjen.

-N , --nûmerike-allinich

Kontrolearje allinich it numerike diel fan 'e module-ferzje tsjin' e kernelferzje, dus ek EXTRAVERSION negearje as beslút as in module in kernel heart. Dizze flagge wurdt automatysk opset foar kernel 2.5, it is wizigje foar eardere kernels.

Module Parameters

Guon modules akseptearje load-time parameters om har operaasje oan te passen. Dizze parameters binne faak I / O-poarte en IRQ-nûmers dy't ferskille fan de masine nei de masine en kinne net fêststeld wurde fan de hardware.

Yn modules dy't boud binne foar 2.0-rige kernels, kin in inkel of in karakter-pointer-symboal as parameter behannele wurde en feroare wurde. Begjin yn 'e searje kernels fan 2.1 binne symboalen eksplisyt markearre as parameters, sadat allinich spesifike wearden feroare wurde kinne. Fierder wurdt ynformaasje ynsteld foar it kontrolearjen fan de wearden dy 't op laden tiid binne.

Yn it gefal fan intekeningen kinne alle wearden yn desimale, octaal of hexadezimal binne in la C: 17, 021 of 0x11. Rânestruktueren binne bepaald sesje opnommen troch komma's. Eleminten kinne skipped wurde troch it útlitten fan de wearde.

Yn 2.0-rige modulen binne wearden dy't net begjinne mei in nûmer wurde as stringen beskôge. Begjin yn 2.1, de ynformaasje fan de type fan 'e parameter jout oan wannear't de wearde as in teken te interpretearjen is. As de wearde begjint mei dûbele-quotes ( " ), wurdt de tekenrige ynterpretearre as yn C, útbrekkings ensfh. Alles notearje dat út 'e shell útfiere, kinne de quotes sels beskerme wurde fan' e shellinterpretaasje.

GPL lisinsearre modules en symboalen

Utgong mei kernel 2.4.10, moatte modulen moatte in lisinsje-string hawwe, fêstlein mei MODULE_LICENSE () . Ferskillende snaren wurde erkend as GPL kompatibel; elke oare lisinsje-string of gjin fergunning mei-inoar betsjut dat it module as proprietêr behannele wurdt.

As it kernel stipet de / proc / sys / kernel / tainted flag dan sil ynmod de OAR- flagge mei '1' as it laden fan in module sûnder in GPL-lisinsje. In warskôging wurdt útsteld as de kernel fergruttet en in module wurdt laden sûnder lisinsje. In warskôging wurdt altyd útjûn foar modulen dy't in MODULE_LICENSE () hawwe dat gjin GPL kompatibel is, ek op âldere kernels dy't net stypje. Dit minimearje warskôgings as in nije modutils brûkt wurdt op âldere kernels.

Insmod -f (krêft) modus sil ODER de ferhurde flagge mei '2' op kernels dy't stypje stypje. It jout altyd in warskôging.

Guon kernelûntwikkelders fereaskje dat symboalen eksportearre wurde troch har koade allinich troch modules brûkt wurde mei in GPL kompatibel lisinsje. Dizze symboalen wurde eksportearre troch EXPORT_SYMBOL_GPL ynstee fan it normale EXPORT_SYMBOL . GPL-allinnich symboalen dy't eksportearre binne troch de kearn en troch oare modules binne allinich foar modules mei in GPL-kompatibele lisinsje sichtber, dy symboalen ferskine yn / proc / ksyms mei in prefix fan ' GPLONLY_ '. insmod ignorearret it prefix GPLONLY_ op symboalen by it laden fan in GPL- ljeppermodul, sadat it module just op de normale symboal neamt, sûnder it prefix. GPL allinne symboalen wurde net beskikber makke foar modules sûnder in GPL-kompatibele lisinsje, dit befettet modules sûnder lisinsje.

Ksymoops Assistance

Om te helpen mei it debugjen fan kernel Oops as it brûken fan modules is, set de ynsmod bygelyks guon symboalen oan ksym oan, sjoch de -Y- opsje. Dizze symboalen begjinne mei __insmod_modulename_ . De modulenamme is ferplichte om de symboalen unyk te meitsjen. It is juridyske dat itselde objekt mear as ien kear ûnder ferskillende modulenammen te laden is. Op it stuit binne bepaalde symboalen:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

Objektfile is de namme fan 'e triem dat it objekt fan' t laden is. Dit soarget derfoar dat ksymoops mei de koade oerienkomme mei it goede objekt. mtime is de lêste bewurkende timestamp op dy triem yn hex, nul as jo mislearre. ferzje is de kernelferzje dat it module kompilearre is foar -1, as gjin ferzje beskikber is. It _O- symboal hat itselde startadres as de modulekopf .

__insmod_modulename_Ssectionname_Llength

Dit symboal ferskynt by it begjin fan selekteare ELF-seksje, no. Tekst, .rodata, .data, .bss en .sbss. It ferskynt allinne as de seksje hat in net-nul grutte. seksje namme is de namme fan it ELF-seksje, ling is de lingte fan 'e seksje yn desimaal. Dizze symboalen helpe ksymoops mapadressen nei seksjes as jo gjin symboalen beskikber binne.

__insmod_modulename_Ppersistent_filename

Allinnich makke troch insmod as de module ien of mear parameter hat dy't as persistente gegevens markearre binne en in filename om persistente gegevens te besparjen (sjoch -e , boppe-op) is beskikber.

It oare probleem mei debuggen kernel Oopsje yn modules is dat de ynhâld fan / proc / ksyms en / proc / modules tusken de Oops en as jo de lochbestân ferwurkje kinne. Om dit probleem te oerwinnen, as de map / var / log / ksymoops bestiet, dan wurdt ynmod en rmmod automatysk kopiearje / proc / ksyms en / proc / modules nei / var / log / ksymoops mei in prefix fan datum% Y% m % d% H% M% S`. De systeembehearder kin ksymoops sizze dat snapshot triemmen brûke as jo in Oops debuggen. Der is gjin skeakel om dizze automatyske kopy te ûntsiferjen. As jo ​​net wolle dat it foarkomt, skeakel net / var / log / ksymoops . As dizze map bestiet, dan moat it eigendom wêze fan root en wêze as modus 644 of 600 en jo moatte elke dei sa skript útfiere. It skript hjirûnder is ynstallearre as insmod_ksymoops_clean .

Basis ynformaasje te witten

NAMME

insmod - ljepper kernel module ynstallearje

SYNOPSIS

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o module_name ] [-O blob_name ] [-P prefix ] module [ symbol = value ...]