Ang Linux / Unix command insmod nag-i-install ng loadable module sa tumatakbo na kernel.insmod sinusubukan na mag-link ng isang module sa tumatakbo na kernel sa pamamagitan ng paglutas ng lahat ng mga simbolo mula sa talahanayan na na-export na simbolo ng kernel.
Kung ang module na pangalan ng file ay ibinigay nang walang mga direktoryo o extension,insmod ay maghanap ng module sa ilang karaniwang mga direktoryo ng default. Ang kapaligiran ay nagbabagoMODPATH ay maaaring gamitin upang i-override ang default na ito. Kung ang isang module configuration file tulad ng/etc/modules.conf umiiral, ito ay sasapaw sa mga landas na tinukoy saMODPATH.
Ang kapaligiran ay nagbabagoMODULECONF maaari ring magamit upang pumili ng ibang configuration file mula sa default/etc/modules.conf (o/etc/conf.modules (deprecated)). Ang variable ng kapaligiran na ito ay papatayin ang lahat ng mga kahulugan sa itaas.
Kapag ang variable ng kapaligiranUNAME_MACHINE ay nakatakda, ang mga modutils ay gagamitin ang halaga nito sa halip na ang field ng makina mula sa uname () syscall. Ito ay higit sa lahat ng paggamit kapag nagko-compile ka ng 64-bit na mga module sa 32-bit na espasyo ng gumagamit o vice versa, naitakdaUNAME_MACHINE sa uri ng modules. Ang kasalukuyang modutils ay hindi sumusuporta sa buong cross build mode para sa mga module, limitado ito sa pagpili sa pagitan ng 32 at 64-bit na bersyon ng architecture ng host.
Mga Opsyon
-e persist_name , --magpumilit= persist_name
Tinutukoy kung saan ang anumang paulit-ulit na data para sa module ay mabasa mula sa pag-load at nakasulat sa kapag ang instantiation ng module ay diskargado. Ang pagpipiliang ito ay tahimik na hindi pinansin kung ang module ay walang paulit-ulit na data. Ang patuloy na data ay binabasa lamang nginsmod kung ang pagpipiliang ito ay naroroon, sa pamamagitan ng defaultinsmod Hindi nagpoproseso ng paulit-ulit na data.
Bilang isang shorthand form,-e "" (isang walang laman na string) ay binibigyang kahulugan nginsmod bilang halaga ngpersistdir gaya ng nilinaw samodules.conf, na sinusundan ng filename ng module na may kaugnayan sa path ng paghahanap ng module na ito ay natagpuan sa, minus ang anumang sumusunod na ".gz", ".o" o ".mod". Kungmodules.conf tinutukoy ang "persistdir ="(hal.persistdir ay isang walang laman na patlang) at pagkatapos ay ang shorthand form ay tahimik na hindi pinansin. (Tingnanmodules.conf (5).)
-f, --force
Subukan ang pag-load ng module kahit na ang bersyon ng tumatakbo na kernel at ang bersyon ng kernel na kung saan ang module ay naipon ay hindi tumutugma. Pinapalitan lamang nito ang checking ng kernel version, wala itong epekto sa mga tseke ng pangalan ng simbolo. Kung ang mga pangalan ng simbolo sa module ay hindi tumutugma sa kernel pagkatapos ay walang paraan upang pilitininsmod upang i-load ang module.
-h, - Tumulong
Magpakita ng buod ng mga pagpipilian at agad na lumabas.
-k, --autoclean
Itakda ang auto-clean flag sa module. Ang bandila na ito ay gagamitin ngkerneld(8) upang alisin ang mga module na hindi pa ginagamit sa loob ng ilang panahon - karaniwang isang minuto.
-L, --lock
Gamitinkawan(2) upang maiwasan ang sabay-sabay na naglo-load ng parehong module.
-m, - Mapa
Output isang mapa ng load sa stdout, na ginagawang mas madaling i-debug ang module sa kaganapan ng kernel panic.
-n, --walang load
Dummy run, gawin ang lahat maliban sa load ang module sa kernel. Kung hiniling ng isang-m o-O, ang run ay makakagawa ng isang mapa o patak na file. Dahil ang module ay hindi na-load, ang real kernel load address ay hindi kilala kaya ang mapa at patak ng file ay batay sa isang arbitrary na address ng pagkarga ng 0x12340000.
-o module_name , --name= module_name
Malinaw na pangalanan ang module, sa halip na deriving ang pangalan mula sa base na pangalan ng source file ng source.
-O blob_name , - blob= blob_name
I-save ang binary na bagay sa blob_name . Ang resulta ay isang binary blob (walang ELF header) na nagpapakita ng eksakto kung ano ang na-load sa kernel pagkatapos ng pagmamanipula ng seksyon at paglilipat. Pagpipilian-m ay inirerekomenda upang makakuha ng isang mapa ng bagay.
-p, --probe
Suriin ang module upang makita kung maaari itong matagumpay na ikinarga. Kabilang dito ang paghahanap ng object file sa path ng module, pagsuri ng mga numero ng bersyon, at paglutas ng mga simbolo. Hindi nito sinisiyasat ang mga relocation o hindi ito gumagawa ng isang mapa o patak na file.
-P prefix , --prefix= prefix
Ang pagpipiliang ito ay maaaring gamitin sa mga bersyon ng modyul para sa SMP o bigmem kernel, dahil ang mga modyul na ito ay may dagdag na prefix na idinagdag sa kanilang mga pangalan ng simbolo. Kung ang kernel ay binuo na may mga bersyon ng simbolo pagkataposinsmod ay awtomatikong kunin ang prefix mula sa kahulugan ng "get_module_symbol" o "inter_module_get", ang isa ay dapat na umiiral sa anumang kernel na sumusuporta sa mga module. Kung ang kernel ay walang mga bersyon ng simbolo ngunit ang module ay binuo na may mga bersyon ng simbolo pagkatapos ay dapat na supply ng user-P.
-q, --tahimik
Huwag mag-print ng isang listahan ng anumang hindi malutas na mga simbolo. Huwag magreklamo tungkol sa mismatch na bersyon. Ang problema ay makikita lamang sa katayuan ng exit nginsmod.
-r, --root
Ang ilang mga gumagamit ay sumulat ng mga module sa ilalim ng isang non-root userid pagkatapos ay i-install ang mga modulo bilang root. Maaaring iwanan ng prosesong ito ang mga module na pag-aari ng hindi gumagamit ng root, kahit na ang direktoryo ng modules ay pag-aari ng root. Kung ang kompromiso ng hindi-ugat ay nakompromiso, maaaring i-overwrite ng nanghihimasok ang mga umiiral na module na pag-aari ng userid na iyon at gamitin ang pagkakalantad sa bootstrap hanggang sa root access.
Sa pamamagitan ng default, ang mga modutils ay tatanggihan sa mga pagtatangka na gumamit ng isang module na hindi pag-aari ng ugat. Pagtatakda -r ay magpalipat-lipat sa tseke at payagan ang ugat na i-load ang mga module na hindi pag-aari ng ugat.
Tandaan: Maaaring mabago ang default na halaga para sa root check kapag naka-configure ang mga modutil.Paggamit ng -r upang huwag paganahin ang pagsuri ng root o pagtatakda ng default sa "walang pag-check sa root" sa oras ng pagsasaayos ay isang pangunahing pagkakalantad sa seguridad at hindi inirerekomenda.
-s, --syslog
Output lahat ng bagay sasyslog(3) sa halip ng terminal.
-S, --kallsyms
Pwersa ang modyul na modyulkallsyms data, kahit na hindi sinusuportahan ito ng kernel. Ang pagpipiliang ito ay para sa mga maliliit na system kung saan ang kernel ay na-load nang walangkallsyms data ngunit napiling mga module na kailangankallsyms para sa pag-debug. Ang pagpipiliang ito ay ang default sa Red Hat Linux.
-v, - Sabiose
Maging masyado.
-V, - Pagbabago
Ipakita ang bersyon nginsmod.
-X, --Export; -x, --noexport
Gawin at huwag i-export ang lahat ng panlabas na mga simbolo ng module, ayon sa pagkakabanggit. Ang default ay para ma-export ang mga simbolo. Ang pagpipiliang ito ay epektibo lamang kung ang module ay hindi malinaw na nag-export ng sarili nitong kontroladong talahanayan ng simbolo, at sa gayon ay hindi na ginagamit.
-Y, --ksymoops; -y, --noksymoops
Gawin at huwag idagdagksymoops mga simbolo sa ksyms. Ang mga simbolo na ito ay ginagamit ngksymoops upang magbigay ng mas mahusay na debugging kung mayroong isang Oops sa modyul na ito. Ang default ay para saksymoopsang mga simbolo na tinukoy. Ang pagpipiliang ito ay malaya sa-X/-x mga pagpipilian.
ksymoops Ang mga simbolo ay nagdaragdag ng humigit-kumulang na 260 bytes bawat module na puno. Maliban kung ikaw ay talagang maikli sa espasyo ng kernel at sinusubukan na mabawasan ang ksyms sa pinakamababang sukat nito, kunin ang default at makakuha ng mas tumpak na Oops debugging.ksymoops Ang mga simbolo ay kinakailangan upang i-save ang paulit-ulit na data ng module.
-N, --numeric-only
Suriin lamang ang numerong bahagi ng bersyon ng module laban sa bersyon ng kernel, i-ignore EXTRAVERSION kapag nagpasya kung ang isang module ay kabilang sa isang kernel. Ang bandila na ito ay awtomatikong itinakda para sa kernel 2.5 pataas, ito ay opsyonal para sa naunang mga kernels.
Mga Parameter ng Module
Ang ilang mga module ay tumatanggap ng mga parameter ng load-time upang i-customize ang kanilang operasyon. Ang mga parameter na ito ay madalas na I / O port at mga numero ng IRQ na nag-iiba mula sa makina patungo sa makina at hindi maaaring matukoy mula sa hardware.
Sa mga module na binuo para sa 2.0 serye kernels, anumang simbolo ng integer o character na pointer ay maaaring gamutin bilang isang parameter at binago. Simula sa mga serye ng 2.1 serye, ang mga simbolo ay malinaw na minarkahan bilang mga parameter upang ang mga tukoy na halaga lamang ay maaaring mabago. Higit pa rito, ang uri ng impormasyon ay ibinigay para sa pagsusuri sa mga halagang ibinigay sa oras ng pagkarga.
Sa kaso ng mga integer, ang lahat ng mga halaga ay maaaring nasa decimal, octal o hexadecimal isang la C: 17, 021 o 0x11. Ang mga sangkap ng array ay tinukoy na pagkakasunod-sunod na pinaghihiwalay ng mga kuwit. Ang mga elemento ay maaaring lumaktaw sa pamamagitan ng pag-aalis ng halaga.
Sa 2.0 module na serye, ang mga halaga na hindi nagsisimula sa isang numero ay itinuturing na mga string. Simula sa 2.1, ang uri ng impormasyon ng parameter ay nagpapahiwatig kung kahulugan ang halaga bilang isang string. Kung ang halaga ay nagsisimula sa double-quotes ('), ang string ay interpreted bilang sa C, makatakas sequences at lahat. Tandaan na mula sa prompt ng shell, ang mga quotes na kanilang sarili ay maaaring kailanganin na protektado mula sa interpretasyon ng shell.
GPL Licensed Modules and Symbols
Simula sa kernel 2.4.10, ang mga module ay dapat magkaroon ng lisensya na string, na tinukoy gamitMODULE_LICENSE (). Maraming mga string ay kinikilala bilang pagiging tugmang GPL; anumang iba pang mga lisensya string o walang lisensya sa lahat ng paraan na ang module ay itinuturing bilang pagmamay-ari.
Kung sinusuportahan ng kernel ang/ proc / sys / kernel / nabubulok flag pagkataposinsmod Ay O ang nabubulok na bandila na may '1' kapag naglo-load ng isang module na walang lisensya ng GPL. Ang isang babala ay inisyu kung ang kernel ay sumusuporta sa malupit at ang isang module ay puno ng walang lisensya. Ang babala ay palaging ibinibigay para sa mga module na may isangMODULE_LICENSE () na hindi katugma ng GPL, kahit na sa mas lumang mga kernels na hindi sumusuporta sa malupit. Binabawasan nito ang mga babala kapag ang isang bagong modutils ay ginagamit sa mas lumang mga kernels.
insmod -f (lakas) mode O O ang nabubuluk bandila na may '2' sa kernels na sumusuporta sa tainting. Palaging nagbabala ito ng isang babala.
Kinakailangan ng ilang mga developer ng kernel na ang mga simbolo na na-export sa pamamagitan ng kanilang code ay dapat lamang gamitin ng mga module na may lisensyang GPL na may katugma. Ang mga simbolong ito ay nai-export ngEXPORT_SYMBOL_GPL sa halip na normalEXPORT_SYMBOL. Ang mga simbolo lamang ng GPL na nai-export ng kernel at ng iba pang mga module ay makikita lamang sa mga module na may isang lisensyang GPL na katugma, ang mga simbolo na ito ay lilitaw sa/ proc / ksyms na may isang prefix ng 'GPLONLY_'. insmod binabalewala angGPLONLY_ prefix sa mga simbolo habang naglo-load ng isang lisensyadong module ng GPL upang ang module ay tumutukoy lamang sa normal na pangalan ng simbolo, nang walang prefix. Ang mga simbolo lamang ng GPL ay hindi ginawang magagamit sa mga module na walang lisensya ng GPL na may tugma, kabilang dito ang mga module na walang lisensya sa lahat.
Ksymoops Assistance
Upang makatulong sa pag-debug ng kernel Oops kapag gumagamit ng mga module,insmod mga default sa pagdaragdag ng ilang mga simbolo sa ksyms, tingnan ang-Y pagpipilian. Nagsisimula ang mga simbolong ito__insmod_ modulename_ . Ang modulename ay kinakailangan upang gawing kakaiba ang mga simbolo. Legal na i-load ang parehong bagay nang higit sa isang beses sa ilalim ng iba't ibang mga pangalan ng module. Sa kasalukuyan, ang tinukoy na mga simbolo ay:
__insmod_ modulename _ Oobjectfile _ Mmtime _ Pagbabagsak
objectfile ang pangalan ng file na na-load mula sa bagay. Tinitiyak nito na ang mga ksymoops ay maaaring tumugma sa code sa tamang bagay. mtime ang huling binagong timestamp sa file na iyon sa hex, zero kung nabigo ang stat. bersyon ay ang bersyon ng kernel na ang module ay pinagsama para sa, -1 kung walang bersyon ay magagamit. Ang_O Ang simbolo ay may parehong panimulang address bilang module header.
__insmod_ modulename _ Ssectionname _ Llength
Lumilitaw ang simbolo na ito sa simula ng napiling mga seksyon ng ELF, kasalukuyang .text, .rodata, .data, .bs at .sbss. Lilitaw lamang ito kung ang seksyon ay may di-zero na sukat. sectionname ang pangalan ng seksyon ng ELF, haba ang haba ng seksyon sa decimal. Ang mga simbolo na ito ay tumutulong sa mga address ng ksymoops na mapa sa mga seksyon kung walang mga simbolo ang magagamit.
__insmod_ modulename _Persistent_ filename
Nilikha lamang nginsmod kung ang module ay may isa o higit pang mga parameter na minarkahan bilang persistent data at isang filename upang i-save ang persistent data (tingnan ang-e, sa itaas) ay magagamit.
Ang iba pang problema sa debugging kernel Oops sa modules ay ang mga nilalaman ng / proc / ksyms at / proc / modules ay maaaring magbago sa pagitan ng mga Oops at kapag pinoproseso mo ang log file. Upang makatulong sa pagtagumpayan ang problemang ito, kung ang direktoryo / var / log / ksymoops ay umiiral na pagkataposinsmod atrmmod ay awtomatikong kopyahin / proc / ksyms at / proc / modules sa / var / log / ksymoops na may prefix ng `petsa +% Y% m% d% H% M% s`. Ang tagapangasiwa ng system ay maaaring magsabi ng ksymoops kung saan ang mga snapshot file na gagamitin kapag nag-debug ng isang Oops. Walang lumipat upang huwag paganahin ang awtomatikong kopya na ito. Kung hindi mo nais na mangyari ito, huwag gumawa / var / log / ksymoops. Kung mayroong umiiral na direktoryo, dapat itong pag-aari ng root at maging mode 644 o 600 at dapat mong patakbuhin ang script na ito araw-araw o kaya. Ang script sa ibaba ay naka-install bilang insmod_ksymoops_clean.
#! / bin / sh # Tanggalin ang mga naka-save na ksyms at mga module na hindi na-access sa loob ng 2 araw kung -d / var / log / ksymoops pagkatapos set -e # Siguraduhing laging may hindi bababa sa isang bersyon d = `date +% y% m% d% h% m% s` cp -a / proc / ksyms /var/log/ksymoops/${d}.ksyms cp -a / proc / modules /var/log/ksymoops/${d}.modules hanapin / var / log / ksymoops -type f -atime +2 -exec rm {} ; fi NAME insmod - Mag-install ng loadable kernel module SINOPSIS insmod -fhkLmnpqrsSvVxXyYN -e persist_name -o module_name -O blob_name -P prefix module simbolo= halaga … Pangunahing Impormasyon upang Malaman