Линук / Уник наредба: инсмод

Команда Линук / Уник инсмод инсталира модул који се може учитати у покретачком језгру. инсмод покушава да повеже модул са активним кернелом тако што реши све симболе из табеле са симболима за експлоатацију кернела.

Ако се име датотеке модула даје без директорија или екстензија, инсмод ће тражити модул у неким заједничким директоријима. Промена окружења МОДПАТХ се може користити за превазилажење ове подразумеване вредности. Ако постоји датотека конфигурације модула, као што је /етц/модулес.цонф , она ће превазићи путање дефинисане у МОДПАТХ-у .

Варијабла окружења МОДУЛЕЦОНФ се такођер може користити за одабир различите конфигурационе датотеке од дефаулт /етц/модулес.цонф (или /етц/цонф.модулес (застарјела)). Ова варијабла околине ће превазићи све горе наведене дефиниције.

Када је постављена варијабла окружења УНАМЕ_МАЦХИНЕ , модутилс ће користити своју вриједност умјесто поља машине из унаме () сисцалл-а. Ово се углавном користи приликом компајлирања 64-битних модула у 32-битни кориснички простор или обрнуто, подесите УНАМЕ_МАЦХИНЕ на тип модула. Тренутни модулови не подржавају режим потпуног попуштања модула, ограничен је на избор између 32 и 64-битних верзија архитектуре домаћина.

Опције

персист_наме , -персист = персист_наме

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

Као стенографски облик , -е "" (празан низ) се тумачи инсмод-ом као вриједност персистдир-а као што је дефинисано у модулес.цонф , а затим слиједи име датотеке модула у односу на путању за претрагу модула у коју је пронађен, минус било који заокружујући ".гз", ".о" или ".мод". Ако модулес.цонф специфицира " персистдир = " (тј. Персистдир је празно поље), онда је овај стенични облик тихо занемарен. (Погледајте модулес.цонф (5).)

, -форце

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

, - помоћ

Приказати резиме опција и одмах изаћи.

, --аутоклеан

Подесите ауто-чисто заставицу на модулу. Ова застава ће користити кернелд (8) за уклањање модула који нису коришћени у одређеном временском периоду - обично један минут.

, - блокирај

Користите јато (2) да бисте спречили истовремена оптерећења истог модула.

, --мап

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

, -нолоад

Думми рун, уради све осим што учитај модул у кернел. Ако то затражи или , рун ће произвести мапу или блоб датотеку. Пошто модул није учитан, стварна адреса за оптерећење кернела је непозната, тако да се мапа и блоб датотека базирају на произвољној адреси оптерећења од 0к12340000.

модуле_наме , --наме = модуле_наме

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

блоб_наме , --блоб = блоб_наме

Сачувај бинарни објект у блоб_наме . Резултат је бинарни блоб (без ЕЛФ заглавља) који показује тачно оно што се учитава у језгру након манипулације и премештања одсека. Опција препоручује се да добије мапу објекта.

-п , -пробе

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

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

Ова опција се може користити са верзионисаним модулима за СМП или бигмем кернел, јер такви модули имају додатни префикс у њиховим именима симбола. Ако је кернел изграђен са симбол верзијама, инсмод ће аутоматски извући префикс из дефиниције "гет_модуле_симбол" или "интер_модуле_гет", од којих један мора да постоји у било ком језгру који подржава модуле. Ако кернел нема верзије симбола, али модул је направљен са верзијама симбола, онда корисник мора да испоручује .

, --куиет

Не штампајте листу нерешених симбола. Немојте се жалити на неусклађеност верзије. Проблем ће се рефлектовати само у статусу изласка инсмода .

, - роот

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

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

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

, - сислог

Излази све у сислог (3) уместо на терминал.

, --каллсимс

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

, --вербосе

Будите глупи.

, - верзија

Приказати верзију инсмода .

-Кс , --екпорт ; , --ноекпорт

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

, -ксимоопс ; , -ноксимоопс

Урадите и не додајте ксимоопс симболе ксими. Ове симболе користе ксимоопс за пружање бољег отклањања ако постоји Уопс у овом модулу. Подразумевано је да се дефинишу симболи ксимоопс-а . Ова опција је независна од опција -Кс / .

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

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

Проверите само нумерички део верзије модула против верзије кернела, односно игноришите ЕКСТРАВЕРСИОН приликом одлучивања да ли модул припада једру. Ова застава се аутоматски подешава за кернел 2.5 и даље, опционална је за раније језгре.

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

Неки модули прихватају параметре оптерећења за прилагођавање њиховог рада. Ови параметри су често И / О порт и ИРК бројеви који се разликују од машине до машине и не могу се одредити од хардвера.

У модулима изграђеним за језгре серије 2.0, било који интегер или симбол показивач знакова могу се третирати као параметар и модифицирати. Почевши од језгра 2.1 серије, симболи су експлицитно означени као параметри, тако да се могу мењати само одређене вредности. Поред тога, обезбеђују се информације о типу за проверу вредности дате у време учитавања.

У случају целих бројева, све вриједности могу бити у децималним, окталним или хексадецималним а ла Ц: 17, 021 или 0к11. Елементи матрице су специфициране секвенце одвојене заповијима. Елементи се могу прескочити испуштањем вредности.

У модулима серије 2.0, вриједности које не почињу бројем се сматрају жицама. Почевши од 2.1, информације о типу параметра указују на то да ли ће се вриједност интерпретирати као низ. Ако вредност почиње двоструким наводницима ( " ), низ се тумачи као у Ц, есцапе секвенце и све. Имајте на уму да из шалтера, сами цитати можда морају бити заштићени од тумачења схелл-а.

ГПЛ лиценцирани модули и симболи

Почевши од кернела 2.4.10, модули би требали имати низ лиценци, дефинисани користећи МОДУЛЕ_ЛИЦЕНСЕ () . Неколико жица је препознато као ГПЛ компатибилно; било који други низ лиценце или ниједна лиценца уопште значи да се модул третира као власнички.

Ако кернел подржава заставицу / проц / сис / кернел / таинтед, инсмод ће ИЛИ означити застој са '1' приликом учитавања модула без ГПЛ лиценце. Упозорење се издаје ако кернел подржава тонирање и модул се учитава без дозволе. Упозорење се увек издаје за модуле који имају МОДУЛЕ_ЛИЦЕНСЕ () који није ГПЛ компатибилан, чак и за старије језгре који не подржавају таинтинг. Ово смањује упозорења када се нови модутилс користе у старијим језгрима.

режим инсмод -ф (сила) ће ИЛИ наштићену заставу са '2' на језгри који подржавају таинтинг. Увек издаје упозорење.

Неки програмери језгра захтевају да симболи извезени по њиховом коду могу користити само модули са ГПЛ компатибилном лиценцом. Ове симболе извози ЕКСПОРТ_СИМБОЛ_ГПЛ уместо нормалне ЕКСПОРТ_СИМБОЛ . Симболи само ГПЛ-а, који извозе кернел и други модули, видљиви су само на модулима са ГПЛ-компатибилном лиценцом, ови симболи се појављују у / проц / ксимс са префиксом ' ГПЛОНЛИ_ '. инсмод игнорише префикс ГПЛОНЛИ_ на симболима приликом учитавања лиценцираног модула ГПЛ, тако да се модул односи само на нормално име симбола, без префикса. Само симболи ГПЛ-а нису доступни модулима без ГПЛ компатибилне лиценце, то укључује моделе без икакве лиценце.

Ксимоопс Ассистанце

Да бисте помогли у дебаговању кернела Уопће, када користите модуле, инсмод подразумијева додавање неких симбола ксимс-у, погледајте опцију -И. Ови симболи почињу са __инсмод_модуленаме_ . Модул имена је потребан да симболи буду јединствени. Правно је учитавање истог објекта више од једном под различитим именима модула. Тренутно су дефинисани симболи:

__инсмод_модуленаме_Ообјецтфиле_Ммтиме_Вверсион

објецтфиле је име датотеке од којег је објекат учитан. Ово осигурава да ксимоопс могу подударати код са исправним објектом. мтиме је последњи модификовани временски жиг у датотеци у хеку, нула ако стат није успио. верзија је верзија кернела за коју је модул сакупљен, -1 ако није доступна ниједна верзија. симбол има исту почетну адресу као заглавље модула.

__инсмод_модуленаме_Ссецтионнаме_Лленгтх

Овај симбол се појављује на почетку изабраних ЕЛФ секција, тренутно .тект, .родата, .дата, .бсс и .сбсс. Појављује се само ако се одјељак има нулта величина. сецтионнаме је име одељка ЕЛФ, дужина је дузина секције у децималном дијелу. Ови симболи помажу адресама мапе ксимоопс-а на одељцима када нема симбола.

__инсмод_модуленаме_Пперсистент_филенаме

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

Други проблем са отклањањем кернела Оопс у модулима је да се садржај / проц / ксимс и / проц / модула може промијенити између Оопс и када обрађујете датотеку дневника. Да би превазишли овај проблем, ако постоји директоријум / вар / лог / ксимоопс онда инсмод и рммод аутоматски копирају / проц / ксимс и / проц / модуле у / вар / лог / ксимоопс са префиксом датума +% И% м % д% Х% М% С. Администратор система може рећи ксимоопс које датотеке снимања могу користити приликом отклањања Оопс. Не постоји прекидач који онемогућава ову аутоматску копију. Ако не желите да се то деси, не креирајте / вар / лог / ксимоопс . Ако тај директориј постоји, требало би да буде у власништву роот-а и да буде режим 644 или 600 и требате покренути ову скрипту сваког дана или слично. Скрипт испод је инсталиран као инсмод_ксимоопс_цлеан .

Основне информације за знање

НАМЕ

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

СИНОПСИС

инсмод [-фхкЛмнпкрсСвВкКсиИН] [-е персист_наме ] [-о модуле_наме ] [-О блоб_наме ] [-П префикс ] модул [ симбол = вредност ...]