Linux / Unix командалы: insmod

Linux / Unix командалары insmod іске қосылған ядроға жүктелетін модульді орнатады . insmod ядро экспортталған символдар кестесінен барлық таңбаларды шешу арқылы жұмыс істейтін ядроға модульді байланыстыруға тырысады.

Модуль файлының атауы каталогтар немесе кеңейтілімсіз берілсе, insmod кейбір жалпы әдепкі каталогтарда модульді іздейді. MODPATH ортасының айнымалы мәнін бұл әдепкі бойынша анықтауға болады. Егер /etc/modules.conf сияқты модуль конфигурациясының файлы болса, MODPATH ішінде анықталған жолдарды алдын ала анықтайды.

MODULECONF ортасының айнымалы мәнін әдепкі /etc/modules.conf (немесе /etc/conf.modules (ескірген)) басқа конфигурациялық файлды таңдау үшін де пайдалануға болады. Бұл ортаны айнымалысы жоғарыдағы барлық анықтамаларды ауыстырады.

UNAME_MACHINE айнымалы ортаны орнатқан кезде, modutils uname () жүйесінен машина өрісінің орнына оның мәнін пайдаланады. Бұл көбінесе 32 биттік пайдаланушы кеңістігінде 64-биттік модульдерді құрастырған кезде немесе керісінше пайдаланғанда, UNAME_MACHINE модулінің түріне орнатыңыз. Ағымдағы модульдер модульдер үшін толық қиылысу режимін қолдамайды, ол хост архитектурасының 32- және 64-биттік нұсқаларын таңдау арқылы шектеледі.

Опциялар

-e persist_name , --persist = persist_name

Модуль үшін кез-келген тұрақты деректердің жүктеуден оқылғанын және модульдің бұл құрылуы түсірілген кезде жазылғанын анықтайды. Бұл модуль тұрақты деректер болмаса, үнсіз еленбейді. Тұрақты деректер insmod арқылы оқылады, егер бұл параметр бар болса, әдепкі бойынша insmod тұрақты деректерді өңдемейді.

Кілтеме нысаны ретінде - «» (бос жол) insmod арқылы modules.conf- де анықталғандай persistdir мәні ретінде интерпретирленеді, одан кейін модульдің файл атауын модульдің іздеу жолына қатысты «.gz», «.o» немесе «.mod» тіркеді. Егер modules.conf « persistdir = » (яғни, бос өріс болса) анықтаса , онда бұл стенограмма үнсіз еленбейді. ( Modules.conf (5) бөлімін қараңыз.)

-f , -force

Модульді құрастыруға болатын ядро ​​нұсқасы және ядро ​​нұсқасы сәйкес болмаса да, модульді жүктеуге тырысыңыз. Бұл тек ядро ​​нұсқасын тексеруді тексереді, ол символды атауы тексерулеріне әсер етпейді. Егер модульдегі символдық атаулар ядроға сәйкес келмесе, онда модульді жүктеуге индмодты мәжбүрлеудің ешқандай тәсілі жоқ.

-h , --help

Опциялар жиынтығын көрсету және дереу шығу.

, - автоклеан

Модульдегі автоматты тазалау жалауын орнатыңыз. Бұл жалауша kerneld (8) арқылы белгілі бір уақыт аралығында пайдаланылмаған модульдерді (әдетте бір минут) жою үшін пайдаланылады.

-L , --lock

Бір модульдің мезгілде жүктелуін болдырмау үшін отарыңызды пайдаланыңыз (2).

-m , --map

Stdout-дағы жүктеме картасын шығарып, ядро ​​қобалжуы жағдайында модульді жөндеуді жеңілдетеді.

-n , --noload

Кескіндей жүгіріп, модульді ядродан басқа барлық нәрсені жасаңыз. Егер -m немесе -O сұраған болса, жүгіріс карта немесе блоб файлын шығарады. Модуль жүктелмегендіктен, нақты ядро ​​жүктеу мекенжайы белгісіз, сондықтан карта және блоб файлы 0x12340000 еркін жүктеу мекен-жайына негізделеді.

-o module_name , --name = module_name

Бастапқы нысан файлының атауынан атауды алудың орнына, модульді атаңыз.

-O blob_name , --blob = blob_name

Blob_name ішінде екілік нысанды сақтаңыз . Нәтиже секцияларды манипуляциялаудан және қоныс аударудан кейін ядроға жүктелгенді дәл көрсететін екілік блоб (ELF тақырыптары жоқ). Нұсқама -m нысанның картасын алу ұсынылады.

-p , --probe

Модульді сәтті жүктеп алуға болатындығын тексеру үшін тексеріңіз. Бұл нысан файлын модуль жолына орналастыру, нұсқалар сандарын тексеру және таңбаларды шешуді қамтиды. Ол қоныс аударуды тексермейді және карта немесе блоб файлын шығармайды.

-P префиксі , --prefix = префикс

Бұл опция SMP немесе bigmem ядросы үшін нұсқалы модульдермен бірге пайдаланылуы мүмкін, себебі мұндай модульдер олардың таңбалар атауларына қосылған қосымша префиксі бар. Егер ядро ​​символдық нұсқамен салынса, insmod автоматты түрде модульдерді қолдайтын кез келген ядрода болуы керек «get_module_symbol» немесе «inter_module_get» анықтамасынан префиксті автоматты түрде шығарады. Егер ядрода символдық нұсқасы болмаса, бірақ модуль символдық нұсқамен құрастырылған болса, онда пайдаланушы -P .

-q , --quiet

Шешілмеген таңбалардың тізімін басып шығармаңыз. Нұсқаға сай келмеу туралы шағым жасамаңыз. Мәселе тек insmod шығу күйінде көрсетіледі.

-r , - түбірі

Кейбір пайдаланушылар модульдерді түбірлік пайдаланушы идентификаторы бойынша құрастырады, содан кейін модульдерді түбір ретінде орнатады. Бұл процесс түбірлік иеленуші модульдер каталогы болса да, түбірлік пайдаланушы идентификаторына тиесілі модульдерді қалдыра алады. Егер түбірлік емес пайдаланушы идентификаторы бұзылса, зиянкес пайдаланушы осы пайдаланушы иелігіне тиесілі бар модульдерді қайта жаза алады және бұл экспозицияны түбірлік қатынауға дейін жүктеуді қолдануы мүмкін.

Әдепкі бойынша, modutils түбірге тиесілі емес модульді қолдану әрекетін қабылдамайды. -r-анықтайды, чекті ауыстырады және root-ге тиесілі емес модульдерді жүктеуге мүмкіндік береді. Ескерту: түбірлік тексеру үшін әдепкі мән модульдер конфигурацияланған кезде өзгертілуі мүмкін.

-R түбіртекті тексеруді өшіру немесе әдепкі параметрді «түбіртектен тазартуды» конфигурациялау уақытында орнату негізгі қауіпсіздікке әсер ету болып табылады және ұсынылмайды.

-s , - syslog

Терминалдың орнына syslog (3) -ке барлық нәтиже беріңіз.

-S , -коллексимдер

Жүктелетін модульге kallcell деректері бар болса да, ядро ​​оны қолдамаса да мәжбүрлейді . Бұл опция kalsel деректерінсіз жүктелетін шағын жүйелерге арналған, бірақ таңдаған модульдер отладпен жұмыс істеу үшін қоңырауларға қажет. Бұл опция Red Hat Linux жүйесінде әдепкі болып табылады.

-v , -verbose

Сөзсіз болыңыз.

-V , - түрлендіру

Insmod нұсқасын көрсету.

-X , --экспорт ; -x , --noexport

Сәйкесінше барлық модульдердің сыртқы таңбаларын экспорттамаңыз және жібермеңіз. Экспортталатын таңбалар әдепкі болып табылады. Бұл опция тек модуль өзінің басқарылатын символдық кестесін анық экспорттамаса тиімді болады және осылайша ескірмейді.

-Y , - симмуоптар ; -y , - noksymoops

Ksymoops таңбаларын ксимдерге қосып, қоспа. Бұл символдар ksymoops арқылы осы модульде « Оопс» бар болса, жақсы отладпен қамтамасыз ету үшін қолданылады. Әдепкі бойынша, ksymoops белгілері анықталады. Бұл параметр -X / -x опцияларына тәуелсіз.

ksymoops таңбалары жүктелген модульге шамамен 260 байтты қосады. Сіз ядро ​​кеңістігінде шынымен қысқа болмасаңыз және ksyms-ді ең аз мөлшеріне дейін азайтуға тырыссаңыз, әдепкіді қабылдап, дәлірек Oops отладтауын алыңыз. ksymoops таңбалары тұрақты модульдік деректерді сақтау үшін қажет.

-N , - сандар ғана

Тек модуль нұсқасының сандық бөлігін ядро ​​нұсқасына қарсы тексеріңіз, яғни модульдің ядроға тиесілі екенін шешкен кезде EXTRAVERSION елемеу. Бұл жалау автоматты түрде ядроның 2.5 нұсқасына орнатылады, ол алдыңғы ядро ​​үшін міндетті емес.

Модульдің параметрлері

Кейбір модульдер олардың жұмысын теңшеу үшін жүктеме уақыт параметрлерін қабылдайды. Бұл параметрлер көбінесе I / O порты және машинадан машинаға байланысты IRQ нөмірлері болып табылады және аппараттық құралдан анықталмайды.

2.0 сериялы ядро ​​үшін орнатылған модульдерде кез келген бүтін немесе таңба көрсеткішінің белгісі параметр ретінде қаралуы және өзгертілген болуы мүмкін. 2.1 сериялы ядролардан бастап, таңбалар параметрлері ретінде нақты белгіленеді, осылайша тек нақты мәндер өзгертілуі мүмкін. Сонымен қатар, ақпарат туралы ақпарат жүктеменің уақытында берілген мәндерді тексеру үшін берілген.

Бүтін сандар жағдайында, барлық мәндер ондық, сегіздік немесе он алтылық санатта болуы мүмкін: 17, 021 немесе 0x11. Массив элементтері үтірлермен бөлінген ретімен көрсетіледі. Элементтер мәнді елемеу арқылы өткізіп жіберілуі мүмкін.

2.0 сериялы модульдерде санмен басталмайтын мәндер жолдар деп саналады. 2.1-ден бастап, параметрдің типі туралы ақпарат мәнді жол ретінде түсіндіруді көрсетеді. Егер мән қос тырнақшалармен ( « ) басталса, жол C сияқты түсіндіріледі, қашу кезектіліктерімен және барлық. Ескерту: қабықтың шақыруынан тырнақшалардың өзіндік қабығы түсіндіруден қорғау қажет болуы мүмкін.

GPL лицензияланған модульдері мен белгілері

2.4.10 ядросынан бастап, модульдер MODULE_LICENSE () көмегімен анықталған лицензия жолына ие болуы керек. Бірнеше жолдар GPL үйлесімді ретінде танылады; кез келген басқа лицензиялық жол немесе ешқандай лицензия жоқ, бұл модуль жеке меншік ретінде қарастырылады.

Егер ядро / proc / sys / kernel / tinted жалаушасын қолдаса, онда insmod модулін GPL лицензиясыз жүктеген кезде «1» белгісімен немесе «жасырын» жалауша болады. Егер ядро ​​қолтаңбаны қолдайтын болса және модуль лицензиясыз жүктелсе, ескерту шығарылады. GPL үйлесімді емес MODULE_LICENSE () модульдері үшін ескерту әрдайым жасалмаған ескі ядраларда да ескертіледі . Бұл ескі файлдарда жаңа модульдер қолданылғанда ескертулерді азайтады.

insmod -f (күш) режимі НЕМЕСЕ ядродағы '2' таңбаланған жалауды қолдайды. Ол үнемі ескерту жасайды.

Кейбір ядро ​​жасаушылары өздерінің кодтары бойынша экспортталған таңбаларды тек GPL үйлесімді лицензиясымен модульдермен ғана пайдалануды талап етеді. Бұл таңбалар EXPORT_SYMBOL қалыпты орнына EXPORT_SYMBOL_GPL арқылы экспортталады. GPL-тек рәміздер, ядро ​​және басқа модульдер арқылы экспортталған, GPL-үйлесімді лицензиясы бар модульдерге ғана көрінеді, бұл символдар « GPLONLY_ » префиксімен / proc / ksyms ішінде пайда болады. insmod GPLONLY_ префиксін елемейді GPL лицензияланған модулін жүктеу кезінде символдар, сондықтан модуль әдеттегі символдық атауын көрсетеді, префикс жоқ. GPL белгісі тек GPL үйлесімді лицензиясыз модульдер үшін қол жетімді емес, бұл лицензияны мүлде жоқ модульдерден тұрады.

Ksymoops Assistance

Модульдерді пайдалану кезінде ядро ​​Oops-ды отладтауға көмектесу үшін, ksyms-ге кейбір таңбаларды қосу үшін әдепкі мәндерді оқшауламаңыз, -Y параметрін көріңіз. Бұл таңбалар __insmod_modulename_ бастап басталады . Модульдік атау таңбаларды бірегей ету үшін қажет. Бірдей нысанды әртүрлі модуль атауларына бірден бірнеше жүктеу заңды. Қазіргі уақытта анықталған белгілер:

__nsmod_modulename_Oobjectfile_Mmtime_Vversion

objectfile - объект жүктелген файлдың аты. Бұл ksymoops коды дұрыс нысанға сәйкес келуін қамтамасыз етеді. mtime бұл файлдағы алты рет өзгертілген уақыт белгісі, егер статус сәтсіз болса, нөлге тең. нұсқасы - модуль құрастырылған ядро ​​нұсқасы, -1 нұсқасы болмаса. _O символы модуль тақырыбы сияқты бастапқы мекен-жайға ие.

__nsmod_modulename_Ssectionname_Llength

Бұл таңба таңдалған ELF бөлімдерінің басында пайда болады, қазіргі уақытта .extext, .rodata, .data, .bss және .sbss. Бұл бөлім нөл емес өлшемді болса ғана пайда болады. sectionname - ELF бөлімінің атауы, ұзындығы - ондық бөліктің ұзындығы. Бұл символдар символдар болмаған кезде ksymoops мекенжайларын мекенжайға бағыттайды.

__nsmod_modulename_Ppersistent_filename

Тек модульде тұрақты деректер ретінде белгіленген бір немесе бірнеше параметрлер бар болса және insomod арқылы жасалынған болса, тұрақты деректерді сақтау үшін файл атауын (жоғарыдан қараңыз - жоғары, жоғары) қараңыз.

Басқа проблема отладки ядро ​​Oops модульдерде болып табылады, бұл мазмұны / proc / ksyms және / proc / модульдер Oops арасында өзгеруі мүмкін және сіз журналды өңдеу. Бұл мәселені шешу үшін / var / log / ksymoops каталогы бар болса, онда insmod және rmmod автоматты түрде / proc / ksyms және / proc / modules файлдарын / var / log / ksymoops- ді «date +% Y% m % d% H% M% S`. Жүйе әкімшісі Oops-ды отладтау кезінде пайдаланатын файлдарды суретке түсіретін ksymoops-ке хабарлай алады. Бұл автоматты көшірмені өшіру үшін ешқандай қосқыш жоқ. Егер сіз мұны қаламасаңыз, / var / log / ksymoops жасамаңыз . Егер бұл каталог бар болса, ол түбірге тиесілі болуы керек және 644 немесе 600 режимінде болуға тиіс, және сіз бұл сценарийді күнделікті іске қосуыңыз керек. Төмендегі сценарий insmod_ksymoops_clean ретінде орнатылады .

Білудің негізгі ақпараты

NAME

insmod - жүктелетін ядро ​​модулін орнатыңыз

Синопсис

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o module_name ] [-O blob_name ] [-P префиксі ] модулі [ symbol = value ...]