Linux / Unix amri: insmod

Linux / Unix amri insmod inaweka moduli inayoweza kudhibitiwa katika kernel inayoendesha. insmod inajaribu kuunganisha moduli kwenye kernel inayoendesha kwa kutatua alama zote kutoka kwenye meza ya alama ya nje ya kernel.

Ikiwa jina la faili la moduli linapewa bila directories au ugani, insmod itatafuta moduli kwenye vichopo vya kawaida vya kawaida. Hali ya mazingira ya MODPATH inaweza kutumika kupitisha hii default. Ikiwa faili ya usanidi wa moduli kama vile /etc/modules.conf ipo, itapunguza njia zinazoelezwa katika MODPATH .

Mchanganyiko wa mazingira MODULECONF pia inaweza kutumika kuchagua faili tofauti ya usanidi kutoka kwa default /etc/modules.conf (au /etc/conf.modules (imepungua). Tofauti hii ya mazingira itazidisha ufafanuzi wote hapo juu.

Wakati mazingira ya variable UNAME_MACHINE yamewekwa, modutils itatumia thamani yake badala ya uwanja wa mashine kutoka kwa uname () syscall. Hii ni hasa ya matumizi wakati unapojumuisha modules 64-bit katika nafasi ya 32-bit user au kinyume chake, kuweka UNAME_MACHINE aina ya modules. Sasa modutils haziunga mkono mfumo kamili wa kujenga msalaba wa modules, ni mdogo wa kuchagua kati ya matoleo 32- na 64-bit ya usanifu wa jeshi.

Chaguo

-e persist_name , --persist = persist_name

Inatafanua ambapo data yoyote inayoendelea ya moduli inasomewa kutoka kwenye mzigo na imeandikwa wakati utaratibu huu wa moduli unafunguliwa. Chaguo hili ni kupuuzwa kimya kama moduli haina data iliyoendelea. Data inayoendelea inasoma tu na insmod ikiwa chaguo hili lipo, kwa kuwa default insmod haina mchakato wa data zilizoendelea.

Kama fomu ya fupi , -e "" (kamba tupu) inafasiriwa na insmod kama thamani ya kuendelea kama ilivyoelezwa katika modules.conf , ikifuatiwa na jina la faili la moduli kuhusiana na njia ya utafutaji ya moduli iliyopatikana, kushoto yoyote trailing ".gz", ".o" au ".mod". Ikiwa modules.conf inataja " kuendelea = " (yaani kuendelea ni shamba tupu) basi fomu hii ya fupi imepuuzwa kimya. (Angalia modules.conf (5).)

-f , - fanya

Jaribio la mzigo wa moduli hata kama toleo la kernel inayoendesha na toleo la kernel ambalo moduli ilifanyika hailingani. Hii ni zaidi ya hundi ya toleo la kernel, haina athari katika hundi ya jina la ishara. Ikiwa jina la ishara katika moduli hailingani na kernel basi hakuna njia ya kulazimisha insmod kupakia moduli.

-h , --help

Onyesha muhtasari wa chaguo na uondoke mara moja.

-k , --autoclean

Weka bendera ya kibinafsi-safi kwenye moduli. Bendera hii itatumiwa na kerneld (8) kuondoa modules ambazo hazikutumiwa wakati fulani - kwa kawaida dakika moja.

-L , - kufungua

Tumia kondoo (2) kuzuia mizigo moja kwa moja ya moduli sawa.

-m , -

Panga ramani ya mzigo kwenye stdout, na iwe rahisi kuibua moduli wakati wa hofu ya kernel.

-n , usiweze tena

Kuendesha kukimbia, fanya kila kitu isipokuwa kubeba moduli kwenye kernel. Ikiwa imeombwa na -m au -O , kukimbia kutazalisha ramani au blob faili. Kwa kuwa moduli haijawekwa, anwani halisi ya mzigo wa kernel haijulikani hivyo ramani na faili ya blob hutegemea anwani ya mzigo wa kiholela ya 0x12340000.

-o moduli_name , --name = moduli_name

Fanya jina moduli, badala ya kupata jina kutoka kwa jina la msingi la faili ya kitu cha chanzo.

-O blob_name , --blob = blob_name

Hifadhi kitu cha binary katika blob_name . Matokeo yake ni blob ya binary (hakuna vichwa vya ELF) inayoonyesha hasa kile kinachowekwa ndani ya kernel baada ya uharibifu wa sehemu na uhamisho. Chaguo -m inashauriwa kupata ramani ya kitu.

-p , -

Pitia moduli ili uone ikiwa inaweza kubeba kwa ufanisi . Hii inajumuisha kuingiza faili ya kitu katika njia ya moduli, kuangalia namba za toleo, na kutatua alama. Haiangalia uhamisho wala hauzalishi ramani au blob faili.

Kiambatisho -PP , --prefix = kiambatisho

Chaguo hili linaweza kutumika kwa modules zilizopangwa kwa SMP au bigmem kernel, kwani moduli hizo zina kiambishi cha ziada kilichoongezwa katika majina yao ya ishara. Ikiwa kernel ilijengwa na matoleo ya ishara basi insmod itaondoa moja kwa moja kiambishi kikuu kutoka kwa ufafanuzi wa "get_module_symbol" au "inter_module_get", moja ambayo lazima iwepo katika kernel yoyote inayounga mkono modules. Ikiwa kernel haina matoleo ya ishara lakini moduli ilijengwa kwa matoleo ya ishara basi mtumiaji lazima apewe -P .

-q , -

Usipandishe orodha ya alama yoyote zisizofutwa. Usilalamike kuhusu kutolewa kwa toleo. Tatizo litaonekana tu katika hali ya exit ya insmod .

-r , - mizizi

Watumiaji wengine hukusanya moduli chini ya mtumiaji asiye na mizizi kisha kufunga modules kama mizizi. Utaratibu huu unaweza kuondoka modules inayomilikiwa na mtumiaji asiye na mizizi, ingawa saraka ya modules inamilikiwa na mizizi. Ikiwa mtumiaji asiye na mizizi ameathiriwa, intruder inaweza overwrite modules zilizopo inayomilikiwa na mtumiaji huyo na kutumia matumizi haya kwa bootstrap hadi kufikia mizizi.

Kwa default, modutils itakataa majaribio ya kutumia moduli ambayo si inayomilikiwa na mizizi. Kufafanua -r kutabadilisha hundi na kuruhusu mizizi kupakia modules ambazo hazimiliki na mizizi. Kumbuka: thamani ya default kwa hundi ya mizizi inaweza kubadilishwa wakati modutils imewekwa.

Matumizi ya -r kuzuia mzizi kuangalia au kuweka default kwa "hakuna mizizi kuangalia" wakati wa Configuration ni mfiduo mkubwa wa usalama na haifai.

-s , - syslog

Panga kila kitu kwa syslog (3) badala ya terminal.

-S , - mipangilio

Weka moduli iliyobeba kuwa na data ya kallsyms , hata kama kernel haijasaidia . Chaguo hili ni kwa mifumo midogo ambapo kernel inafungwa bila data ya kallsyms lakini modules zilizochaguliwa zinahitaji kallsyms kwa kufuta debugging. Chaguo hili ni default kwenye Red Hat Linux.

-v , -

Kuwa verbose.

-V , --version

Onyesha toleo la insmod .

-X , - Export ; -x , - usiongeze

Fanya na usiweke nje alama zote za nje za moduli, kwa mtiririko huo. Kichapishaji ni kwa alama za kusafirishwa. Chaguo hili ni la ufanisi tu kama moduli haina nje nje kuuza meza yake kudhibitiwa mwenyewe, na hivyo ni deprecated.

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

Fanya na usiongeze ksymoops alama kwa ksyms. Ishara hizi hutumiwa na ksymoops kutoa uharibifu bora ikiwa kuna Oops katika moduli hii. Kichapishaji ni kwa alama za ksymoops zinazoelezwa. Chaguo hili ni huru ya chaguo -X / -x .

alama ksymoops kuongeza takriban 260 bytes kwa moduli iliyobeba. Isipokuwa wewe ni mfupi sana juu ya nafasi ya kernel na unajaribu kupunguza ksyms kwa ukubwa wake wa chini, kuchukua default na kupata sahihi zaidi Oops debugging. alama za ksymoops zinahitajika ili kuhifadhi data ya moduli inayoendelea.

-N , - tu-ya pekee

Cheza tu sehemu ya nambari ya toleo la moduli dhidi ya toleo la kernel, yaani, usipuuzie EXTRAVERSION wakati uamua kama moduli ni ya kernel. Bendera hii imewekwa kwa moja kwa moja kwa kernel 2.5 kuendelea, ni chaguo kwa kernel za awali.

Parameters ya Moduli

Baadhi ya moduli zinakubali vigezo vya muda wa mzigo ili kuboresha operesheni yao. Vigezo hivi mara nyingi ni bandari ya I / O na idadi ya IRQ ambazo hutofautiana kutoka kwa mashine hadi mashine na haziwezi kuamua kutoka kwenye vifaa.

Katika modules zilizojengwa kwa kernel za mfululizo 2.0, ishara yoyote ya alama ya pointi inaweza kuwa kutibiwa kama parameter na kubadilishwa. Kuanzia kwenye namba za mfululizo 2.1, alama zinawekwa wazi kama vigezo ili maadili maalum pekee yanaweza kubadilishwa. Zaidi ya hayo, habari ya aina hutolewa kwa kuchunguza maadili yaliyotolewa wakati wa mzigo.

Katika kesi ya integers, maadili yote inaweza kuwa decimal, octal au hexadecimal la C: 17, 021 au 0x11. Vipengele vya safu ni mlolongo maalum uliojitenga na vito. Vipengele vinaweza kupunguzwa kwa kuacha thamani.

Katika modules 2.0 za mfululizo, maadili ambayo hayanaanza na namba yanachukuliwa masharti. Kuanzia katika 2.1, maelezo ya aina ya parameter inaonyesha kama kutafsiri thamani kama kamba. Ikiwa thamani huanza na quotes mbili ( " ), kamba inafasiriwa kama katika C, safu za kutoroka na yote. Je, kumbuka kwamba kutoka kwa haraka ya kamba, vikwisho wenyewe vinaweza kutetewa kutoka kwa tafsiri ya shell.

Moduli zilizosaidiwa na GPL

Kuanzia na kernel 2.4.10, modules zinapaswa kuwa na kamba ya leseni, inayoelezwa kwa kutumia MODULE_LICENSE () . Simba kadhaa zinatambuliwa kuwa ni GPL sambamba; kamba yoyote ya leseni au leseni hakuna maana kwamba moduli inachukuliwa kama wamiliki.

Ikiwa kernel inaunga mkono bendera / proc / sys / kernel / tainted kisha insmod itakuwa OR bendera iliyojisi na '1' wakati wa kupakia moduli bila leseni ya GPL. Onyo hutolewa kama kernel inasaidia tainting na moduli ni kubeba bila leseni. Onyo daima hutolewa kwa modules ambazo zina MODULE_LICENSE () ambazo sio GPL sambamba, hata kwenye kernels za zamani ambazo haziunga mkono tainting. Hii inapunguza maonyo wakati modutils mpya inatumiwa kwenye kernels za zamani.

mode-f (nguvu) mode itakuwa OR bendera iliyojenga na '2' juu ya kernels kwamba mkono tainting. Daima hutoa onyo.

Baadhi ya waendelezaji wa kernel wanahitaji kuwa alama zilizo nje na msimbo wao zinatumiwa tu na modules na leseni ya sambamba ya GPL. Ishara hizi zinafirishwa na EXPORT_SYMBOL_GPL badala ya EXPORT_SYMBOL ya kawaida. Ishara za GPL-nje zilizo nje ya kernel na kwa moduli zingine zinaonekana tu kwa modules na leseni inayoendana na GPL, alama hizi zinaonekana katika / proc / ksyms na kiambishi cha ' GPLONLY_ '. insmod inakataa kiambatisho cha GPLONLY_ juu ya alama wakati wa kupakia moduli ya leseni ya GPL ili moduli inamaanisha jina la kawaida la ishara, bila kiambishi. Ishara za GPL pekee hazipatikani kwa modules bila leseni ya sambamba ya GPL, hii inajumuisha moduli bila leseni hata.

Msaidizi wa Ksymoops

Ili kusaidia kwa kufuta kernel Oops wakati wa kutumia modules, insmod hufafanua kuongeza alama fulani kwa ksyms, angalia chaguo -Y . Ishara hizi zinaanza na __insmod_modulename_ . Modulename inahitajika kufanya alama za pekee. Ni kisheria kupakia kitu sawa zaidi ya mara moja chini ya majina ya moduli tofauti. Hivi sasa, alama zilizoelezwa ni:

__mod_modulename_Oobjectfile_Mmtime_Vversion

Kitufe ni jina la faili ambayo kitu kilikuwa kikipakiwa kutoka. Hii inahakikisha kwamba ksymoops inaweza kufanana na msimbo kwa kitu sahihi. mtime ni timestamp iliyopita iliyopita kwenye faili hiyo katika hex, sifuri ikiwa hali imeshindwa. toleo ni toleo la kernel ambalo moduli iliundwa kwa, -1 ikiwa hakuna toleo linapatikana. Ishara _O ina anwani sawa ya kuanza kama kichwa cha moduli.

__smod_modulename_Ssectionname_Llength

Ishara hii inaonekana mwanzoni mwa sehemu za ELF zilizochaguliwa, kwa sasa .text, .rodata, .data, .bss na .sbss. Inaonekana tu ikiwa sehemu ina ukubwa usio na sifuri. jina la jina ni jina la sehemu ya ELF, urefu ni urefu wa sehemu katika decimal. Ishara hizi husaidia anwani ya ksymoops ramani kwa sehemu wakati hakuna alama zinazopatikana.

__mod_modulename_Ppersistent_filename

Inaundwa tu na insmod ikiwa moduli ina vigezo moja au zaidi ambazo ni alama kama data iliyoendelea na jina la faili ili kuhifadhi data zinazoendelea (angalia -a , hapo juu) inapatikana.

Tatizo jingine na kernel debugging Oops katika modules ni kwamba yaliyomo ya / proc / ksyms na / proc / modules inaweza kubadilisha kati ya Oops na wakati utakapofanya faili ya logi. Ili kusaidia kushinda tatizo hili, ikiwa saraka / var / log / ksymoops ipo basi insmod na rmmod itachukua moja kwa moja nakala / proc / ksyms na / proc / modules kwa / var / log / ksymoops na kiambishi cha `tarehe +% Y% m % d% H% M% S`. Msimamizi wa mfumo anaweza kuwaambia ksymoops ambayo faili za snapshot zitatumika wakati wa kufuta oops. Hakuna kubadili kuzima nakala hii ya moja kwa moja. Ikiwa hutaki kutokea, usijenge / var / log / ksymoops . Ikiwa saraka hiyo ipo, inapaswa kuwa inayomilikiwa na mizizi na kuwa mode 644 au 600 na unapaswa kuendesha script hii kila siku au zaidi. Hati chini imewekwa kama insmod_ksymoops_clean .

Maelezo ya msingi ya kujua

NAME

Weka - kufunga moduli ya kernel inayobeba

SYNOPSIS

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o moduli_name ] [-O blob_name ] moduli [-P kiambishi ] [ alama = thamani ...]