Linux / Unix Каманда: insmod

Каманда insmod Linux / Unix ўсталёўвае загружаны модуль у загружанае ядро. insmod спрабуе звязаць модуль ў працуе ядро, вырашаючы ўсе знакі ад экспартуемай табліцы сімвалаў ядра.

Калі імя файла модуль даюцца без каталогаў або пашырэнняў, insmod будзе шукаць модуль у некаторых агульных каталогах па змаўчанні. Зменная асяроддзі MODPATH можа выкарыстоўвацца , каб перавызначыць гэта значэнне па змаўчанні. Калі файл канфігурацыі модуля , такі як /etc/modules.conf існуе, то ён будзе перакрываць шляху , вызначаныя ў MODPATH.

Пераменная MODULECONF асяроддзя можа таксама выкарыстоўвацца , каб выбраць іншы файл канфігурацыі з /etc/modules.conf па змаўчанні (або /etc/conf.modules (састарэлае)). Гэтая зменная асяроддзі перакрые ўсе вызначэння вышэй.

Калі зменная асяроддзі UNAME_MACHINE ўстаноўлена, Modutils будзе выкарыстоўваць яго значэнне замест поля машыны ад uname () сістэмнага выкліку. Гэта ў асноўным выкарыстоўваецца , калі вы компилируете 64-бітных модуляў ў 32-бітным прасторы карыстальніка ці наадварот, усталяваць UNAME_MACHINE да тыпу модуляў. Бягучыя Modutils не падтрымліваюць рэжым поўнага папярочнага зборкі модуляў, яно абмежавана выбіраць паміж 32- і 64-разрадныя версіі прымаючага архітэктуры.

опцыі

-e persist_name, --persist = persist_name

Паказвае, дзе любыя пастаянныя дадзеныя для модуля счытваюцца з пад нагрузкай і запісваецца, калі гэта стварэнне асобніка модуля разгружаецца. Гэты параметр ігнаруецца, калі модуль не мае пастаянных дадзеных. Ўстойлівыя дадзеныя счытваюцца толькі insmod , калі гэтая опцыя прысутнічае, па змаўчанні insmod не апрацоўвае пастаянныя дадзеныя.

У скарочаным выглядзе , -е «» (пустая радок) інтэрпрэтуецца insmod як значэнне persistdir , як вызначана ў modules.conf, з наступным імем файла модуля адносна пошукавага модуля шляху ён быў знойдзены ў, за вылікам любых задні ".gz", ".o" ці ".mod". Калі modules.conf вызначае «persistdir =» (г.зн. persistdir пустое поле) , то гэта скарочаная форма праігнараваная. (Глядзі modules.conf (5).)

-f, --force

Спроба загрузіць модуль, нават калі версія запушчанага ядра і версіі ядра, для якіх модуль быў складзены не супадаюць. Гэта толькі адмяняе праверку версіі ядра, гэта не мае ніякага эфекту на праверку імя знака. Калі імёны сімвалаў у модулі не адпавядаюць ядру , то няма ніякага спосабу прымусіць insmod , каб загрузіць модуль.

-h, --help

Дысплей рэзюмэ варыянтаў і неадкладна выйсці.

-k, --autoclean

Усталюйце самаачысткі сцяга на модулі. Гэты сцяг будзе выкарыстоўвацца Kerneld (8) , каб выдаліць модулі , якія не былі выкарыстаны ў якой - то перыяд часу - звычайна адну хвіліну.

-L, --lock

Выкарыстоўвайце статак (2) для прадухілення адначасовага нагрузкі аднаго і таго ж модуля.

-m, --map

Вывесці карту нагрузка на стандартны вывад, што спрашчае адладку модуля ў выпадку панікі ядра.

-n, --noload

Фіктыўная бегчы, рабіць усё, акрамя загрузіць модуль у ядро. Пры неабходнасці з дапамогай -m або -O, якая сцякае вырабіць карту або блоб файл. Так як модуль не загружаны, рэальны адрас загрузкі ядра невядомы, таму карта і файл блоб заснаваныя на адвольны адрас нагрузкі 0x12340000.

-o имя_модуль, --name = имя_модуль

Відавочнае імя модуля, а не вывядзенне назвы ад базавага імя файла зыходнага аб'екта.

-O blob_name, --blob = blob_name

Захаваць двайковы аб'ект у blob_name. У выніку двайковы блоб (без загалоўкаў ELF), які паказвае, што менавіта загружаецца ў ядро ​​пасля маніпуляцый падзелу і перамяшчэння. Опцыя -m рэкамендуецца , каб атрымаць карту аб'екта.

-p, --probe

Зонд модуль , каб убачыць , калі ён можа быць загружаны паспяхова . Гэта ўключае ў сябе месцазнаходжанне файла аб'екта ў шляху модуля, праверка нумара версіі, і дазволу знакаў. Ён не правярае пераезды і не вырабляць карту або блоб файл.

-P прэфікс, прэфікс prefix =

Гэтая опцыя можа быць выкарыстана з версированных модулямі для шматпрацэсарнай або bigmem ядра, паколькі такія модулі маюць дадатковы прэфікс, дадаваны ў іх імёнах знакаў. Калі ядро было пабудавана з версіямі сімвалаў , то insmod будзе аўтаматычна здабываць прэфікс з вызначэння «get_module_symbol» або «inter_module_get», адзін з якіх павінен існаваць у любым ядро , якое падтрымлівае модулі. Калі ядро не мае версіі сімвалаў , але модуль быў пабудаваны з версіямі сімвалаў , то карыстальнік павінен паставіць -P.

-q, --quiet

На выводзіць спіс усіх недазволеных знакаў. Не жальцеся несупадзення версій. Гэтая праблема будзе адлюстравана толькі ў стане выхаду з insmod.

-r - корань

Некаторыя карыстальнікам скампіляваць модулі пад некорнем ідэнтыфікатара карыстальніка затым ўсталяваць модулі, як корань. Гэты працэс можа пакінуць модулі, якія належаць некорневых ідэнтыфікатарам карыстальніка, нават калі каталог модуляў належаць кораню. Калі некорневая ідэнтыфікатар скампраметаваны, зламыснік можа перазапісваць існуючыя модулі, якія належаць гэтаму ідэнтыфікатару карыстальніка і выкарыстоўваць гэтую экспазіцыю для пачатковай загрузкі да каранёвага доступу.

Па змаўчанні, Modutils будзе адпрэчваць спробы выкарыстоўваць модуль, які не належыць кораню. Указанне -r перамыкае праверку і даць корань для загрузкі модуляў, якія не належаць кораню. Заўвага: Значэнне па змаўчанні для каранёвай праверкі можа быць зменена , калі Modutils настроены.

Выкарыстанне -r , каб адключыць праверку каранёвай або наладу па змаўчанні "не корань праверкі» падчас канфігурацыі з'яўляецца асноўнай экспазіцыяй і бяспекі не рэкамендуюцца.

-s, - сістэмны часопіс

Выхад усё ў сістэмны часопіс (3) замест тэрмінала.

-S, --kallsyms

Прымусова загружаны модуль , каб мець дадзеныя kallsyms, нават калі ядро не падтрымлівае яго. Гэтая опцыя прызначана для невялікіх сістэм , у якіх ядро загружаецца без дадзеных kallsyms , але выбраныя модулі павінны kallsyms для адладкі. Гэтая опцыя па змаўчанні ў Red Hat Linux.

-v, --verbose

Будзьце шматслоўныя.

-V, --version

Адлюстроўвае версію insmod.

-X, --export; -x, --noexport

Есьці і ня экспартаваць ўсе знешнія сімвалы гэтага модуля, адпаведна. Значэнне па змаўчанні для сімвалаў, якія будуць экспартаваныя. Гэты параметр эфектыўны толькі калі модуль, не адкрыта экспартаваць сваю ўласную кантраляваную табліцу сімвалаў, і, такім чынам, з'яўляецца састарэлым.

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

Ёсць і не дадаваць ksymoops сімвалы ў знакавую. Гэтыя сімвалы выкарыстоўваюцца ksymoops для забеспячэння лепшай адладкі , калі ёсць Да жаль , у гэтым модулі. Значэнне па змаўчанні для сімвалаў ksymoops быць вызначаны. Гэты параметр не залежыць ад -X / варыянтаў.

ksymoops сімвалы дадаць каля 260 байт на загружаны модуль. Калі вы сапраўды хапаюць прасторы ядра і спрабуеце паменшыць знакавыя да яго мінімальнага памеру, прыняць па змаўчанні і атрымаць больш дакладную Oops адладкі. ksymoops сімвалы неабходныя для захавання пастаянных дадзеных модуля.

-N, --numeric толькі

Толькі праверце лікавую частка версіі модуля ад версіі ядра, г.зн. ігнараваць EXTRAVERSION пры прыняцці рашэння, калі модуль належыць да ядра. Гэты сцяг усталёўваецца аўтаматычна для ядра 2.5 года, ён не з'яўляецца абавязковым для ранніх версій ядраў.

параметры модуля

Некаторыя модулі прымаюць параметры нагрузкі часу, каб наладзіць іх працу. Гэтыя параметры часта парты ўвод / высновы і нумар IRQ, якія змяняюцца ад машыны да машыны і не можа быць вызначаны з апаратных сродкаў.

У модулях, пабудаваныя для ядраў серыі 2.0, любы знак паказальніка цэлага ліку або сімвала можа быць апрацаваны ў якасці параметру і мадыфікацыя. Пачынаючы з ядрамі серыі 2.1, сімвалы відавочна пазначаныя як параметры, так што толькі канкрэтныя значэння могуць быць змененыя. Акрамя таго, інфармацыя пра тып прадугледжана для праверкі значэнняў, паказаных падчас загрузкі.

У выпадку цэлых лікаў, усе значэнні могуць быць у дзесятковай, васьмярковай або шаснаццатковай а-ля C: 17, 021 або 0x11. Элементы масіва задаюцца паслядоўнасць падзеленых коскамі. Элементы могуць быць прапушчаны, апусціўшы значэнне.

У модулях серыі 2,0, значэння, якія не пачынаюцца з колькасці лічацца радкамі. Пачынаючы з 2.1, інфармацыя пра тып гэтага параметру паказвае, ці варта інтэрпрэтаваць значэнне ў выглядзе радка. Калі значэнне пачынаецца з двайны двукоссі ( "), радок інтэрпрэтуецца як у C, кіраўнікі паслядоўнасці і ўсё. Звярніце ўвагу , што з каманднага радка, двукоссі самі , магчыма , павінны быць абаронены ад інтэрпрэтацыі абалонкі.

GPL ліцэнзійных модуляў і сімвалы

Пачынаючы з ядра 2.4.10, модулі павінны мець ліцэнзію радок, пэўная з дапамогай MODULE_LICENSE (). Некалькі радкоў распазнаюцца як GPL сумяшчальныя; любая іншая ліцэнзія радок або няма ліцэнзіі на ўсіх азначае, што модуль разглядаецца як ўласнасць.

Калі ядро падтрымлівае / Працы / сістэмы / ядра / сапсаваны сцяг , то insmod будзе АБО сапсаваны сцяг «1» пры загрузцы модуля без ліцэнзіі GPL. Папярэджанне выдаецца, калі ядро ​​падтрымлівае забруджанасць і модуль загружаецца без ліцэнзіі. Папярэджанне заўсёды выдаецца для модуляў , якія маюць MODULE_LICENSE () , які ня GPL сумяшчальныя, нават на старых ядрах , якія не падтрымліваюць забруджанасць. Гэта зводзіць да мінімуму папярэджання, калі новы Modutils выкарыстоўваецца на старых ядрах.

Рэжым insmod -f (сіла) будзе АБО сапсаваны сцяг з «2» на ядрах , якія падтрымліваюць забруджанасць. Яна заўсёды выдае папярэджанне.

Некаторыя распрацоўшчыкі ядра патрабуюць, каб сімвалы, экспартаваныя іх код павінен выкарыстоўвацца толькі модулі з GPL сумяшчальнай ліцэнзіі. Гэтыя сімвалы экспартуюцца EXPORT_SYMBOL_GPL замест нармальнага EXPORT_SYMBOL. GPL-толькі знакі , што экспартуюцца ядро і іншыя модулі могуць бачыць толькі модулі з GPL-сумяшчальнай ліцэнзіі, гэтыя сімвалы з'яўляюцца ў / Proc / знакавых з прэфіксам «GPLONLY_». insmod ігнаруе прэфікс GPLONLY_ на знаках пры загрузцы GPL ліцэнзаваны модуль , так што модуль проста ставіцца да нармальнага імя сімвала, без прэфікса. GPL толькі знакі не даступныя для модуляў без GPL сумяшчальнай ліцэнзіі, гэта ўключае ў сябе модулі з без ліцэнзіі наогул.

Ksymoops Дапамога

Для таго, каб дапамагчы з адладкай ядра Да жаль , пры выкарыстанні модуляў, insmod па змаўчанні для дадання некаторых знакаў у знакавыя, глядзіце опцыю -Y. Гэтыя сімвалы пачынаюцца з __insmod_modulename_. Имя_модуля патрабуецца , каб зрабіць сімвалы унікальнымі. Гэта законна загружаць адзін і той жа аб'ект некалькі разоў пад рознымі імёнамі модуляў. У цяперашні час, пэўныя сімвалы:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

Объектный_файл гэтае імя файла , у якім аб'ект быў загружаны. Гэта гарантуе, што ksymoops можа супадаць з кодам на патрэбны аб'ект. час змянення з'яўляецца Апошняе змяненне пазнакі часу на гэты файл у шаснаццатковым, нуль , калі статыстыка не ўдалося. версія версія ядра , што модуль быў скампіляваны для, -1 , калі ні адна з версій недаступна. Сімвал _O мае той жа пачатковы адрас у якасці загалоўка модуля.

__insmod_modulename_Ssectionname_Llength

Гэты сімвал з'яўляецца напачатку выбраных раздзелаў ELF, у цяперашні час .text, .rodata, .data .bss і .sbss. Ён з'яўляецца толькі ў выпадку, калі ўчастак мае ненулявое памер. імя раздзела з'яўляецца імем секцыі ELF, даўжыня даўжыня секцыі ў дзесятковай сістэме . Гэтыя сімвалы дапамагаюць ksymoops карце адрасу раздзелах, калі ніякіх знакаў не даступныя.

__insmod_modulename_Ppersistent_filename

Толькі створаны insmod , калі модуль мае адзін або некалькі параметраў, якія пазначаныя як пастаянныя дадзеныя і імя файла для захавання пастаянных дадзеных (гл -e, вышэй) маецца.

Іншая праблема з адладкі ядра Oops ў модулях з'яўляецца тое , што змесціва / Proc / знакавую і / Proc / модулі могуць перамыкацца паміж Oops і пры апрацоўцы файла часопіса. Каб пераадолець гэтую праблему, калі каталог / вар / Журнала / ksymoops існуе , то insmod і rmmod будзе аўтаматычна капіяваць / Proc / знакавыя і / Proc / модулі / вар / часопіса / ksymoops з прэфіксам `дата +% Y% м % d% H% M% S`. Сістэмны адміністратар можа сказаць ksymoops снэпшот файлаў выкарыстоўваць пры адладцы Упсала. Там няма выключальніка, каб адключыць гэтую аўтаматычную копію. Калі вы не хочаце, каб гэта адбылося, не ствараюць / Var / Часопіс / ksymoops. Калі гэты каталог існуе, то яна павінна належаць пні і быць рэжым 644 або 600, і вы павінны запусціць гэты скрыпт кожны дзень або каля таго. Прыведзены ніжэй сцэнар усталяваны як insmod_ksymoops_clean.

Базавая інфармацыя ведаць

NAME

insmod - усталяваць загружаны модуль ядра

сінтаксіс

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name] [-o имя_модуля] [-O blob_name] [-P прэфікс] Модуль [сімвал = значэнне ...]