Linux / Unix հրաման: insmod

Linux / Unix- ի հրահանգը insmod- ն տեղադրում է բեռնվող մոդուլ `վազող միջուկում: insmod- ն փորձում է մի մոդուլի մեջ վազող միջուկը կապել `լուծելով բոլոր նիշերը միջուկի արտահանվող խորհրդանիշ սեղանից:

Եթե ​​մոդուլի ֆայլի անունը տրվում է առանց տեղեկագրքի կամ ընդլայնման, insmod- ը կգտնի մոդուլը որոշ ընդհանուր ստանդարտ դիրեկտորիաներում: MODPATH- ի շրջակա միջավայրի փոփոխությունը կարող է օգտագործվել կանխելու համար այս կանխադրվածը: Եթե ​​գոյություն ունի /etc/modules.conf- ի մոդուլի կազմաձեւման ֆայլը, ապա այն կվերանվանվի MODPATH- ում սահմանված ուղիները :

MODULECONF- ի շրջակա միջավայրի փոփոխականը կարող է օգտագործվել նաեւ այլ ձեւափոխման ֆայլ ընտրելու համար, /etc/modules.conf- ից (կամ /etc/conf.modules ( չպահված )): Այս շրջակա միջավայրի փոփոխականները կվերանվանեն վերը նշված բոլոր սահմանումները:

Երբ UNAME_MACHINE շրջակա միջավայրի փոփոխական է սահմանվել, modutils կօգտագործի իր արժեքը մեքենայի դաշտի փոխարեն uname () syscall- ից: Դա հիմնականում օգտագործվում է այն ժամանակ, երբ 64-բիթային մոդուլներ կազմեք 32-բիթանոց օգտագործողի տարածքում կամ հակառակը, սահմանեք UNAME_MACHINE- ը մոդուլների տեսակից: Ընթացիկ մոդուտիլները չեն աջակցում մոդուլների համար խաչաձեւ կառուցվածքի ամբողջական տարբերակ, այն սահմանափակվում է հյուրընկալ ճարտարապետության 32- եւ 64-բիթանոց տարբերակների միջեւ:

Ընտրանքներ

-e persist_name , --persist = persist_name

Սահմանում է, որ մոդուլի համար ցանկացած մշտական ​​տվյալներ կարդում է բեռնվածությունից եւ գրված է, երբ մոդուլի այս ակնարկը բեռնաթափվում է: Այս տարբերակը լուռ անտեսվում է, եթե մոդուլը չունի համառ տվյալներ: Անկայուն տվյալները միայն կարդացվում են insmod- ի դեպքում, եթե այս տարբերակը ներկա է, ըստ էության, insmod- ը չի մշակում կայուն տվյալներ:

Որպես ստեղնաշարի ձեւ , «-» (դատարկ տող) մեկնաբանվում է « insmod» - ի կողմից ` որպես modews.conf- ի սահմաններում պահպանվող արժեքը, որին հաջորդում է այն մոդուլի ֆայլը, որը հայտնաբերվել է մոդուլի որոնման ճանապարհին, trailing ".gz", ".o" կամ ".mod": Եթե modules.conf- ը պարունակում է " persistdir = " (այսինքն, persistdir- ն դատարկ դաշտ), ապա այս ստեղնաշարի ձեւը լուռ անտեսվում է: (Տես modules.conf (5):):

, - ուժ

Փորձեք բեռնումը մոդուլը, նույնիսկ եթե վազքի միջուկի տարբերակը եւ միջուկի տարբերակը, որի մոդուլը կազմվել է, չեն համապատասխանում: Սա միայն գերազանցում է միջուկի տարբերակի ստուգումը, այն որեւէ ազդեցություն չունի խորհրդանշանի անվանումների վրա: Եթե ​​խորհրդանիշների անունները մոդուլում չեն համապատասխանում միջուկին, ապա ոչ մի եղանակ չկա ստիպել insmod- ին բեռնել մոդուլը:

, - օգնեք

Ցուցադրել ընտրանքների ամփոփ նկարագիրը եւ անմիջապես ելքը:

-k , - autoclean

Ստեղծեք ավտոմատ մաքուր դրոշը մոդուլի վրա: Այս դրոշը կօգտագործվի kerneld (8) կողմից, հեռացնելու մոդուլներ, որոնք որոշ ժամանակահատվածում չեն օգտագործվել, սովորաբար մեկ րոպե:

, - լոկ

Օգտագործեք հոտը (2) `նույն մոդուլի միաժամանակյա բեռների կանխարգելման համար:

, - նկարագրություն

Ձեռք բերեք բեռի քարտեզը stdout- ում, դարձնելով այն ավելի հեշտ լուծելու միջուկը խնձորի միջադեպի դեպքում:

, - անսահմանափակ

Dummy վազում, ամեն ինչ արեք, բացի բեռնված մոդուլը միջուկում: Եթե -m կամ -O- ի կողմից խնդրվել է, ապա վազքը կստեղծի քարտեզ կամ բլոկ ֆայլ: Քանի որ մոդուլը բեռնված չէ, իրական միջուկի բեռնվածքի հասցեն անհայտ է, այնպես որ քարտեզն ու բլոկի ֆայլը հիմնված են 0x12340000 կամայական բեռի հասցեով:

-o module_name , --name = module_name

Ակնհայտորեն անվանեք այն մոդուլը, այլ ոչ թե աղբյուրի օբյեկտի ֆայլի բազայի անունը անվանելը:

-O blob_name , --blob = blob_name

Պահել երկուական օբյեկտը blob_name- ում : Արդյունքն այն է, որ երկուական բլոկը (ոչ ELF վերնագրերը) ցույց են տալիս այն, թե ինչն է բեռնված միջուկի հատվածում մանիպուլյացիայի եւ տեղահանման արդյունքում: Option- ը խորհուրդ է տրվում ձեռք բերել օբյեկտի քարտեզ:

-p , --probe

Մխիթարել մոդուլին `տեսնել, թե արդյոք այն հաջողությամբ բեռնված է : Սա ներառում է օբյեկտի ֆայլը մոդուլի ուղու վրա տեղադրելու, տարբերակների համարները ստուգելու եւ խորհրդանիշերը լուծելու համար: Այն չի ստուգում վերաբնակեցումները, ոչ էլ որեւէ քարտեզ կամ բլոկ ֆայլ չի առաջացնում:

-P նախածանց , - prefix = նախածանց

Այս տարբերակը կարող է օգտագործվել տարբերակված մոդուլներով SMP- ի կամ bigmem միջուկի համար, քանի որ նման մոդուլները ունեն իրենց նախադրյալները իրենց խորհրդանշաններում ավելացված նախածանց: Եթե ​​միջուկը կառուցված է խորհրդանիշ տարբերակների հետ, ապա insmod- ը ավտոմատ կերպով կթողարկի «get_module_symbol» կամ «inter_module_get» - ի սահմանման նախածանցը, որոնցից մեկը պետք է գոյություն ունենա ցանկացած միջուկում, որն աջակցում է մոդուլներ: Եթե ​​միջուկը չունի խորհրդանշանի տարբերակ, բայց մոդուլը կառուցված է խորհրդանիշ տարբերակներով, ապա օգտագործողը պետք է ապահովի -P :

-q , --quiet

Մի տպեք որեւէ չլուծված խորհրդանիշների ցանկը: Մի բողոքեք տարբերակի անհամապատասխանության մասին: Խնդիրը միայն արտացոլվում է insmod- ի ելքի կարգավիճակում:

, - արմատ

Որոշ օգտվողները օգտագործում են մոդուլներ ոչ արմատական ​​userid- ի ներքո, ապա մոդուլները տեղադրել որպես արմատ: Այս գործընթացը կարող է թողնել ոչ արմատական ​​օգտվողին պատկանող մոդուլները, չնայած որ մոդուլի դիրեկտորը պատկանում է արմատին: Եթե ​​ոչ արմատական ​​օգտագործողը վտանգված է, ինտեգրիչը կարող է վերագրել այն օգտագործողին պատկանող գոյություն ունեցող մոդուլները եւ օգտագործել այդ ազդեցությունը մինչեւ արմատ մուտք գործելու համար:

Լռելյայնորեն, modutils- ը չի հրաժարվի արմատից պատկանող մոդուլի օգտագործման փորձերից: Հստակեցնելով -r- ը անցնում է ստուգումը եւ թույլ է տալիս արմատից բեռնել բլոկները, որոնք արմատ չունեն: Նշում. Արմատային ստուգման կանխադրված արժեքը կարող է փոխվել, երբ modutils- ը կազմաձեւված է:

Արմատային ստուգումը անջատելու համար -r- ի օգտագործումը կամ կարգաբերման ժամանակ «ոչ արմատային ստուգումը» կանխադրվածը կանխորոշում է անվտանգության հիմնական սպառնալիքը եւ խորհուրդ չի տրվում:

-s , - syslog

Արդյունքում ամեն ինչ կարգին է syslog (3) տերմինալի փոխարեն:

-S , -kallsyms

Կոչված բեռնված մոդուլում, ստացականների տվյալները պետք է ունենան , նույնիսկ եթե միջուկը չի աջակցում: Այս տարբերակն այն փոքր համակարգերի համար է, որտեղ միջուկը տեղադրվում է առանց kallsyms տվյալների, բայց ընտրված մոդուլները պետք է տեղադրվեն խափանումների համար: Այս տարբերակը հանդիսանում է Red Hat Linux- ում կանխադրված:

, - բերկոտ

Եղեք մանրամասն:

, - տարբերություն

Ցուցադրել insmod- ի տարբերակը:

-X , -export ; -x , - nonexport

Կատարեք եւ չեն արտահանում բոլոր մոդուլների արտաքին նիշերը: Սխալը արտահանվում է խորհրդանիշների համար: Այս տարբերակը միայն արդյունավետ է, եթե մոդուլը հստակ չի արտահանել իր սեփական վերահսկվող խորհրդանիշ սեղան եւ այդպիսով ուժը կորցրած է:

-Y , - իքսիմոոներ ; , - նոքսիմոոպներ

Կիրառեք եւ ավելացրեք ksymoops- ի խորհրդանիշները ksyms- ին: Այս խորհրդանիշները օգտագործվում են ksymoops- ի կողմից , որպեսզի ավելի լավ կարգաբերում ապահովեն, եթե առկա է այս մոդուլում բացակայում: Սխալը նախատեսված է ksymoops- ի խորհրդանիշների համար: Այս տարբերակը անկախ է -X / -x տարբերակներից:

ksymoops խորհրդանիշները ավելացնում են մոտավորապես 260 բայթ մեկ բեռնված մոդուլում: Եթե ​​դուք իսկապես կարճ է kernel տարածքում եւ փորձում են նվազեցնել ksyms իր նվազագույն չափի, վերցնել կանխադրված եւ ստանալ ավելի ճշգրիտ Oops debugging. ksymoops- ի խորհրդանիշները պահանջվում են պահպանել համառ մոդուլային տվյալները:

-N , թվային-միայն

Միայն ստուգեք մոդուլի տարբերակի թվային մասը քերելի տարբերակի դեմ, այսինքն `անտեսել EXTRAVERSION, որոշելու, թե արդյոք մի մոդուլը պատկանում է միջուկին: Այս դրոշը ավտոմատ կերպով սահմանվում է միջուկի 2.5-ի համար, այն նախընտրելի է նախնական միջուկների համար:

Մոդուլի պարամետրեր

Որոշ մոդուլներ ընդունում են բեռի ժամանակի պարամետրերը `հարմարեցնելով նրանց գործողությունները: Այս պարամետրերը հաճախ I / O նավահանգիստ եւ IRQ համարներ են, որոնք տարբերվում են մեքենայից մեքենա եւ չեն կարող որոշվել ապարատից:

2.0 շարքի միջուկների համար կառուցված մոդուլներում ցանկացած ամբողջական կամ բնութագրական ցուցիչի նշան կարող է դիտվել որպես պարամետր եւ փոփոխվել: Սկսած 2.1 շարքի միջուկները, խորհրդանշաններն ակնհայտորեն նշվում են որպես պարամետրեր, որպեսզի միայն կոնկրետ արժեքները կարող են փոխվել: Բացի այդ, տիպի տեղեկատվությունը տրամադրվում է բեռի ժամանակ տրամադրված արժեքների ստուգման համար:

Թիվ թվերի պարագայում բոլոր արժեքները կարող են լինել տասնորդական, օկտալային կամ տասնութերորդ տասնօրյակ C la C: 17, 021 կամ 0x11: Դարակի տարրերը նշվում են ստորակետերով բաժանված ստորագրերով: Elements- ը կարող է բաց թողնել արժեքը անտեսելու միջոցով:

2.0 շարքի մոդուլներում արժեքները, որոնք չեն սկսվում թվից, համարվում են տողեր: Սկսած 2.1-ում, պարամետրի տիպի տեղեկատվությունը ցույց է տալիս, թե արդյոք արժեքը մեկնաբանվում է որպես տող: Եթե ​​արժեքը սկսվում է կրկնակի մեջբերումից ( " ), ապա տողը մեկնաբանվում է ինչպես C- ում, փախուստի հաջորդականություններից եւ բոլորից: Նշեք, որ վահանակի արագությունից կարող է պահանջվել, որ դրանք պետք է պաշտպանված լինեն shell- ի մեկնաբանությունից:

GPL լիցենզավորված մոդուլներ եւ խորհրդանիշներ

2.4.10 միջուկով սկսած մոդուլները պետք է լիցենզիա ունենան, օգտագործելով MODULE_LICENSE () : Մի քանի տողեր ճանաչվում են որպես GPL համատեղելի; որեւէ այլ լիցենզիայի լարի կամ ոչ լիցենզիա, այնուամենայնիվ, մոդուլը վերաբերվում է գույքային:

Եթե ​​միջուկը սատարում է / proc / sys / kernel / tainted դրոշը, ապա insmod- ը կամ «1» - ն անվանում է դրոշակակիր դրոշ, առանց GPL լիցենզիայի տեղադրելու: Նախազգուշացում է տրվում, եթե միջուկն աջակցում է, եւ մոդուլը բեռնված է առանց լիցենզիայի: Նախազգուշացումը միշտ տրվում է մոդուլների համար, որոնք ունեն MODULE_LICENSE () , որը GPL- ի համատեղելի չէ, նույնիսկ հին սերվերների վրա, որոնք չեն աջակցում: Սա նվազեցնում է նախազգուշացումները, երբ նոր մոդուտիլներ օգտագործվում են ավելի հին միջուկներում:

insmod -f (ուժի) ռեժիմով կամ ոչնչացվող դրոշը կամ «2» -ը դրոշմակնիքների վրա հարձակվողների վրա: Այն միշտ էլ նախազգուշացնում է:

Որոշ սերվեր մշակողները պահանջում են, որ իրենց կոդով արտահանվող խորհրդանիշները պետք է օգտագործվեն միայն GPL- ի համատեղելի լիցենզիա ունեցող մոդուլների կողմից: Այս նշանները արտահանվում են EXPORT_SYMBOL_GPL- ի կողմից, սովորական EXPORT_SYMBOL- ի փոխարեն: GPL- ի միայն սիմվոլները, որոնք արտահանվում են միջուկով եւ այլ մոդուլներով, տեսանելի են միայն GPL- համատեղելի լիցենզիա ունեցող մոդուլներ, այս նշանները հայտնվում են / proc / ksyms- ով `' GPLONLY_ ' նախածանցով: insmod անտեսում է GPLONLY_ նախածանցը խորհրդանիշների վրա, իսկ GPL լիցենզավորված մոդուլի վրա, այնպես որ մոդուլը ուղղակիորեն վերաբերում է նորմալ խորհրդանիշին, առանց նախածանցի: GPL- ի միայն խորհրդանիշները չեն հասանելի մոդուլների համար `առանց GPL- ի համատեղելի լիցենզիայի, այսինքն` լիցենզիա չունեցող մոդուլներ:

Ksymoops Աջակցություն

Աջակցել միջուկի վրիպազերծման օջախներին, մոդուլներ օգտագործելու ժամանակ, insmod կանխորոշիչները ավելացնելու համար որոշակի խորհրդանիշներ ksyms, տես -Y տարբերակը: Այս նշանները սկսվում են __insmod_modulename_- ից : Մոդուլի անվանումը պահանջվում է, որպեսզի խորհրդանիշները եզակի լինեն: Իրավունքը նույնն է օբյեկտը մեկից ավելի անգամ տարբեր մոդուլների անուններով բեռնված: Ներկայումս, սահմանված նշանները հետեւյալն են.

__insmod_modulename_Oobjectfile_Mmtime_Vversion

objectfile- ը օբյեկտի անունն է, որը օբյեկտը բեռնված է: Սա ապահովում է, որ ksymoops- ը կարող է համապատասխանել կոդի ճիշտ օբյեկտին: mtime- ը վերջին անգամ փոփոխված ժամանակահատվածն է, այդ ֆայլի վրա hex- ում, զրո, եթե ստատուսը ձախողվեց: տարբերակն այն միջուկային տարբերակն է, որը մոդուլը կազմվել է, -1, եթե ոչ տարբերակ չկա: _O խորհրդանիշն ունի նույն մեկնարկային հասցեն, ինչպես մոդուլի վերնագիրն է:

__insmod_modulename_Ssectionname_Llength- ը

Այս խորհրդանիշը հայտնվում է ընտրված ELF բաժինների սկզբում, ներկայում .տեքստ, .rodata, .data, .bss եւ .sbss: Այն միայն հայտնվում է, եթե բաժինը չունի ոչ զրոյական չափ: sectionname- ը ELF- ի բաժնի անունն է, երկարությունը տասնորդական հատվածի երկարությունն է: Այս խորհրդանիշները օգնում են ksymoops- ի հասցեները հասցեներ բաժիններում, երբ ոչ մի խորհրդանիշ չկա:

__insmod_modulename_Ppersistent_filename

Միայն ստեղծված insmod- ն է, եթե մոդուլն ունի մեկ կամ ավելի պարամետրեր, որոնք նշվում են որպես համառ տվյալներ եւ ֆայլի անվանում, որը պահպանում է համառ տվյալներ (տես `վերը, վերը):

Խնդիրն այն է, որ վրիպազերծման միջուկը կախված է մոդուլից, այն է, որ / proc / ksyms եւ / proc / modules- ի բովանդակությունը կարող է փոխել Oops- ը եւ երբ դուք մշակեք տեղեկամատյան ֆայլը: Այս խնդիրը հաղթահարելու համար, եթե կա / var / log / ksymoops գրացուցակը, ապա insmod- ը եւ rmmod- ը ավտոմատ կերպով պատճենում են / proc / ksyms եւ / proc / մոդուլները / var / log / ksymoops `օրվան +% Y% m նախածանցով % d% H% M% S`: Համակարգի ադմինիստրատորը կարող է ասել ksymoops- ը, որը նկարահանման ֆայլերը օգտագործելու է Oops- ի կարգաբերման ժամանակ: Այս ավտոմատ կերպով անջատելու համար անջատված չկա: Եթե ​​դուք չեք ցանկանում, որ դա տեղի ունենա, մի ստեղծեք / var / log / ksymoops : Եթե ​​այդ գրացուցակը գոյություն ունի, այն պետք է պատկանի արմատից եւ լինի 644 կամ 600 ռեժիմ, եւ ամեն օր այդ սցենարը պետք է վարեք: Ստորեւ ներկայացված սցենարը տեղադրվում է որպես insmod_ksymoops_clean :

Հիմնական տեղեկություններ իմանալու համար

ԱՆՈՒՆ

insmod - տեղադրեք բեռնված քերել մոդուլ

SYNOPSIS- ը

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o module_name ] [-O blob_name ] [-P նախածանց ] մոդուլ [ symbol = value ...]