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 до типот на модулите. Тековните modutils не го поддржуваат целосниот начин на изградување на модули, тој е ограничен на изборот помеѓу 32 и 64-битни верзии на архитектурата на домаќинот.

Опции

-и persist_name , -persist = persist_name

Одредува каде се читаат сите постојани податоци за модулот и се пишуваат кога оваа инстанција на модулот е растована. Оваа опција е тивко игнорирана ако модулот нема постојани податоци. Постојаните податоци се читаат само од insmod, ако оваа опција е присутна, стандардно insmod не обработува постојани податоци.

Како стенографија , " -e" (празен стринг) се толкува од insmod како вредност на persistdir како што е дефинирано во modules.conf , по што следи името на датотеката во модулот во однос на патеката за пребарување на модулот во која е пронајден, минус било заостанува ".gz", ".o" или ".mod". Ако modules.conf специфицира " persistdir = " (т.е. persistdir е празно поле) тогаш оваа гласовна форма е тивко игнорирана. (Видете modules.conf (5).)

-f , -force

Обидете се да го вчитате модулот дури и ако верзијата на тековниот кернел и верзијата на кернелот за која е составен модулот не се совпаѓаат. Ова само ја прекорува проверката на верзијата на кернелот, нема ефект врз проверките за името на симболот. Ако имињата на симболите во модулот не се совпаѓаат со кернелот тогаш нема начин да се принуди insmod да го вчита модулот.

, - помош

Прикажете резиме на опции и веднаш излезете.

-k , - автокеански

Поставете го знакот за автоматско чистење на модулот. Ова знаме ќе го користи kerneld (8) за да се отстранат модулите кои не се користеле во одреден временски период - обично една минута.

-L , - заклучи

Користете стадо (2) за да спречите истовремени товари од истиот модул.

-m , --map

Излези мапа на оптоварување на stdout, што го олеснува отстранувањето на модулот во случај на паника на кернелот.

, --Ново

Лажна работи, стори сé освен да го вчита модулот во кернелот. Ако е побарано од -m или -O , трката ќе произведе карта или blob датотека. Бидејќи модулот не е вчитан, вистинската адреса за оптоварување на јадрото е непозната, па картата и blob датотеката се базираат на произволна адрес на оптоварување од 0x12340000.

module_name , -name = module_name

Експлицитно наведете го модулот, наместо да го изнесете името од основното име на изворната датотека на објектот.

-O blob_name , --blob = blob_name

Зачувај го бинарниот објект во blob_name . Резултатот е бинарна дупка (без ELF заглавија) ​​што покажува точно што е вчитано во кернелот по манипулација со дел и преместување. Опцијата -m се препорачува да се добие карта на објектот.

-p , --проба

Проверете го модулот за да видите дали може успешно да се вчита . Ова вклучува лоцирање на објектната датотека во патеката на модулот, проверка на броевите на верзии и решавање на симболи. Не ги проверува преместувањата, ниту пак создава карта или блоп-датотека.

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

Оваа опција може да се користи со верзионирани модули за SMP или bigmem кернел, бидејќи таквите модули имаат дополнителен префикс додаден во нивните имиња на симболи. Ако кернелот е изграден со верзии на симболи тогаш insmod автоматски ќе го извлече префиксот од дефиницијата за "get_module_symbol" или "inter_module_get", од кои една мора да постои во било кој кернел кој ги поддржува модулите. Ако кернелот нема верзии на симболи, но модулот е изграден со верзии на симболи, тогаш корисникот мора да набави -P .

-q , --quiet

Не отпечатете листа на какви било нерешени симболи. Не се жалат на неусогласеност на верзијата. Проблемот ќе се одрази само во излезниот статус на insmod .

-r , - root

Некои корисници компилираат модули под некорински userid потоа инсталираат модули како root. Овој процес може да ги остави модулите во сопственост на не-root userid, иако директориумот на модули е во сопственост на root. Ако не е root root userid, компромитарот може да ги пребрише постоечките модули во сопственост на тој userid и да ја користи оваа изложеност на bootstrap до root пристапот.

Стандардно, modutils ќе одбие обиди да се користи модул кој не е во сопственост на root. Утврдувањето -r ќе ја префрли проверката и ќе дозволи root да ги вчита модулите кои не се во сопственост на root. Забелешка: стандардната вредност за проверка на root може да се смени кога modutils е конфигуриран.

Употребата на -r за да се оневозможи проверка на коренот или поставување на стандардно на "без проверка на коренот" при конфигурациско време е главна безбедносна експозиција и не се препорачува.

-s , - syslog

Излез сè до syslog (3) наместо на терминалот.

-S , --kallsyms

Принудете го натоварениот модул да има податоци за kallsyms , дури и ако кернелот не го поддржува. Оваа опција е за мали системи каде кернелот се вчитува без податоци за kallsyms, но избраните модули треба да користат kallsyms за дебагирање. Оваа опција е стандардно на Red Hat Linux.

, -вербоза

Бидете опширни.

-V , --верзија

Прикажи ја верзијата на insmod .

-X , - извоз ; -x , --неизверз

Направете и не извезете ги сите надворешни симболи на модулот, соодветно. Стандардно е за симболите што треба да се извезат. Оваа опција е ефективна само ако модулот експлицитно не извезува своја контролирана табела со симболи и затоа е застарена.

-Y , --ксимоп ; -y , -noksymoops

Направете и не додавајте симболи на ksymoops на ksyms. Овие симболи се користат од ksymoops за да обезбедат подобро дебагирање ако има Упс во овој модул. Стандардно е да се дефинираат симболите ksymoops . Оваа опција е независна од опциите -X / -x .

симболи ksymoops додадете приближно 260 бајти по наполнет модул. Освен ако не сте навистина кратки во простор на кернелот и се обидувате да ги намалите ksyms на нејзината минимална големина, земете стандардно и да добиете повеќе точни Oops debugging. симболи на ksymoops се потребни за да се зачуваат постојаните податоци за модулот.

-N , - само за нумерички

Само проверете го нумеричкиот дел од верзијата на модулот во однос на верзијата на кернелот, односно игнорирајте EXTRAVERSION кога одлучувате дали модулот припаѓа на јадрото. Ова знаме автоматски се поставува за јадрото 2.5 натаму, не е задолжително за претходните кернели.

Параметри на модулот

Некои модули ги прифаќаат параметрите за оптоварување за да ја прилагодат нивната работа. Овие параметри се често I / O порта и IRQ броеви кои се разликуваат од машина до машина и не може да се одредат од хардверот.

Во модулите изградени за кернели од 2,0 серија, секој симбол на цел број или симболот на карактери може да се третира како параметар и да се модифицира. Почнувајќи од кернелите од серијата 2.1, симболите се експлицитно обележани како параметри, така што само одредени вредности може да се променат. Понатаму, се даваат информации за тип за проверка на вредностите што се обезбедени при натовареното време.

Во случај на цели броеви, сите вредности може да бидат во децимална, октална или хексадецимална a la C: 17, 021 или 0x11. Елементите на низата се наведени низа одделени со запирки. Елементите може да се прескокнат со пропуштање на вредноста.

Во модулите од серијата 2.0, вредностите кои не започнуваат со број се сметаат за низи. Почнувајќи од 2.1, информацијата за типот на параметарот покажува дали да се интерпретира вредноста како низа. Ако вредноста започнува со двојни цитати ( " ), стрингот се толкува како во C, избега секвенци и сите. Забележете дека од школка прашува, самите цитати можеби ќе треба да бидат заштитени од толкување на школка.

GPL лиценцирани модули и симболи

Почнувајќи од кернелот 2.4.10, модулите треба да имаат лиценца стринг, дефинирана со користење MODULE_LICENSE () . Неколку жици се препознаваат како GPL компатибилни; било која друга лиценца низа или без лиценца воопшто значи дека модулот се третира како комерцијален.

Ако кернелот го поддржува знакот / proc / sys / kernel / tainted, тогаш insmod ќе го означи означеното знаменце со '1' кога ќе се вчита модул без GPL лиценца. Предупредување се издава ако кернелот поддржува зацврстување и модул се вчитува без лиценца. Секогаш се издава предупредување за модули кои имаат MODULE_LICENSE () кој не е компатибилен со GPL, дури и кај постарите кернели кои не поддржуваат tainting. Ова ги минимизира предупредувањата кога се користат нови modutils кај постарите кернели.

insmod -f (сила) на владата ќе ИЛИ означено знаменце со '2' на кернели кои го поддржуваат tainting. Секогаш издава предупредување.

Некои програмери на јадрото бараат симболи извезени од нивниот код да можат да се користат само од модули со 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 е последното модифицирано временско означување на таа датотека во хексадецимален, нула ако статијата не успее. верзијата е верзијата на кернелот за кој е составен модулот, -1 ако не е достапна верзија. Симболот _O ја има истата почетна адреса како заглавјето на модулот.

__insmod_modulename_Ssectionname_Length

Овој симбол се појавува на почетокот на избраните делови на ELF, моментално .text, .rodata, .data, .bss и .sbss. Се појавува само ако делот има не-нула големина. sectionname е името на секцијата ELF, должината е должината на делот во децимална. Овие симболи им помагаат на адресите на адресите на ksymoops на делови кога нема симболи.

__insmod_modulename_Ppersistent_filename

Единствено креирано од insmod ако модулот има еден или повеќе параметри кои се означени како постојани податоци и име на датотека за спасување на постојани податоци (види -e , погоре).

Друг проблем со дебагирање на кернелот Упс во модулите е дека содржината на / proc / ksyms и / proc / модулите може да се промени помеѓу Упс и кога ја обработувате датотеката за евиденција. За да помогне во надминување на овој проблем, ако постои директориумот / var / log / ksymoops , тогаш insmod и rmmod автоматски ќе ги копираат / proc / ksyms и / proc / модулите на / var / log / ksymoops со префиксот `date +% Y% m % d% H% M% S`. Системскиот администратор може да им каже на ksymoops кои датотеки за копирање да ги користат при дебагирање на Упс. Нема прекинувач за оневозможување на оваа автоматска копија. Ако не сакате да се случи, не креирајте / var / log / ksymoops . Ако тој директориум постои, тој треба да биде во сопственост на root и да биде мод 644 или 600, и секој ден треба да ја извршите оваа скрипта. Скриптата подолу е инсталирана како insmod_ksymoops_clean .

Основни информации за да знаете

NAME

insmod - инсталирај модул на товарниот кернел

СИНОПСИС

insmod [-fhkLmnpqrsSvVxXyYN] [ -и persist_name ] [-o module_name ] [-O blob_name ] [-P prefix ] модул [ симбол = вредност ...]