Skip to main content

Vše o příkazu Linux / Unix: insmod

TEK ÇANAK ANTEN İLE TURKSAT ve ASTRA 5B UYDULARI (Červen 2026)

TEK ÇANAK ANTEN İLE TURKSAT ve ASTRA 5B UYDULARI (Červen 2026)
Anonim

Příkaz Linux / Unix insmod nainstaluje načtený modul do běžícího jádra.insmod pokusí se propojit modul do běžícího jádra tím, že vyřeší všechny symboly z exportované tabulky symbolů jádra.

Pokud je název souboru modulu uveden bez adresářů nebo rozšíření,insmod vyhledá modul v některých běžných výchozích adresářích. Proměnná prostředíMODPATH lze tuto výchozí hodnotu změnit. Pokud je konfigurační soubor modulu, jako je/etc/modules.conf existuje, bude přepsat cesty definované vMODPATH.

Proměnná prostředíMODULECONF lze také použít k výběru jiného konfiguračního souboru z výchozího/etc/modules.conf (nebo/etc/conf.modules (zastaralé)). Tato proměnná prostředí přepsá všechny výše uvedené definice.

Při proměnné prostředíUNAME_MACHINE je nastavena, modutils použije svou hodnotu namísto pole stroje z příkazu uname () syscall. Používá se hlavně při sestavování 64bitových modulů v 32bitovém uživatelském prostoru nebo naopakUNAME_MACHINE k typu modulů. Současné moduly nepodporují moduly plného křížového budování, je omezeno na výběr mezi 32 a 64bitovými verzemi hostitelské architektury.

Možnosti

-E persist_name , - perník= persist_name

Určuje, kde jsou přečtené trvalé údaje modulu z načtení a zapsány do okamžiku, kdy je tato instance modulu uvolněna. Tato možnost je ignorována tiše, pokud modul neobsahuje trvalé údaje. Trvalá data jsou čtena pouzeinsmod pokud je tato možnost dostupná, ve výchozím nastaveníinsmod zpracovává nepřetržité údaje.

Jako zkrácená forma,-e "" (prázdný řetězec) interpretujeinsmod jako hodnotapersistdir jak je definováno vmodules.conf, následovaný názvem souboru modulu ve vztahu k vyhledávací cestě modulu, v níž byla nalezena, mínus všechny koncové ".gz", ".o" nebo ".mod". Limodules.conf specifikuje "persistdir =" (tj.persistdir je prázdné pole), pak tato zkrácená forma je mlčky ignorována. (Vidětmodules.conf (5).)

-F, --platnost

Pokus o načtení modulu i v případě, že verze běžícího jádra a verze jádra, pro které byl modul kompilován, neodpovídají. To pouze přepíše kontrolu verzí jádra, nemá žádný vliv na kontrolu názvu symbolu. Pokud se názvy symbolů v modulu neodpovídají jádru, neexistuje žádný způsob, jak se vynutitinsmod pro načtení modulu.

-h, --Pomoc

Zobrazte přehled možností a okamžitě ukončete.

-k, --automatické čištění

Na modulu nastavte příznak automatického vyčištění. Tento příznak bude použitkerneld(8) odstraňte moduly, které nebyly v určité době používány - obvykle jedna minuta.

-L, --zámek

Použitístádo(2), aby nedošlo k současnému zatížení stejného modulu.

-m, --mapa

Vyjměte mapu zatížení na stdout, což usnadňuje ladění modulu v případě paniky jádra.

-n, --no

Dummy běh, dělat všechno kromě načtení modulu do jádra. Pokud to požaduje-m nebo, běh vytvoří mapu nebo soubor blob. Vzhledem k tomu, že modul není načten, skutečná adresa načtení jádra není známa, takže mapa a soubor blob jsou založeny na libovolné adrese zatížení 0x12340000.

module_name , --název= module_name

Explicitně pojmenujte modul namísto odvození názvu ze základního názvu souboru zdrojového objektu.

blob_name , --kapka= blob_name

Uložte binární objekt do souboru blob_name . Výsledkem je binární blob (bez hlaviček ELF), který přesně ukazuje to, co je vloženo do jádra po manipulaci se sekci a přemístění. Volba-m doporučujeme získat mapu objektu.

-p, --sonda

Vyzkoušejte modul a zjistěte, zda lze úspěšně načíst. To zahrnuje lokalizaci souboru objektu v cestě modulu, kontrolu čísel verzí a vyřešení symbolů. Nezkontroluje přemístění ani nevytváří mapu nebo soubor blob.

-P předpona , --předpona= předpona

Tato volba může být použita s verzovanými moduly pro jádro SMP nebo bigmem, protože tyto moduly mají v jejich jménech symbolů další předponu. Pokud bylo jádro postaveno s verzemi symbolůinsmod bude automaticky extrahovat předponu z definice "get_module_symbol" nebo "inter_module_get", z nichž jedna musí existovat v libovolném jádře, které podporuje moduly. Pokud jádro nemá verze symbolů, ale modul byl postaven s verzemi symbolů, pak musí uživatel dodat-P.

-q, --klid

Nevytiskněte seznam nevyřešených symbolů. Nepokoušejte se o neshodě verzí. Problém se projeví pouze ve stavu ukončeníinsmod.

-r, --vykořenit

Někteří uživatelé sestavují moduly pod uživatelem bez oprávnění root a pak nainstalují moduly jako root. Tento proces může opustit moduly vlastněné uživatelským jménem bez oprávnění root, přestože adresář modulů je vlastněn kořenem. Pokud je uživatelská oprávnění typu non-root kompromitována, může útočník přepsat existující moduly vlastněné daným uživatelským jménem a tuto expozici použít k zavedení do kořenového přístupu.

Ve výchozím nastavení modutils odmítne pokusy o použití modulu, který není vlastněn kořenem. Zadání -r přepíše kontrolu a povolí kořenům načíst moduly, které nejsou vlastněny kořenem.

Poznámka: Výchozí hodnota pro kontrolu uživatelů může být změněna při konfiguraci modutils.Použití parametru -r k vypnutí kontroly kořenového adresáře nebo nastavení výchozí hodnoty na hodnotu "no root check" v době konfigurace je hlavní bezpečnostní expozice a nedoporučuje se.

-s, --syslog

Vyjměte všechnosyslog(3) namísto terminálu.

-S, --kallsyms

Vynucení načteného modulukallsyms data, i když jádro to nepodporuje. Tato volba je určena pro malé systémy, kde je jádro načtenokallsyms data, ale potřebují vybrané modulykallsyms pro ladění. Tato volba je výchozí na serveru Red Hat Linux.

-proti, --verbose

Buďte verbózní.

-PROTI, --verze

Zobrazit verziinsmod.

-X, --vývozní; -X, --noexport

Proveďte a nevyexportujte všechny externí symboly modulu. Výchozí hodnota je pro exporty symbolů. Tato volba je účinná pouze tehdy, pokud modul explicitně nevyexportuje vlastní řízenou tabulku symbolů a je tedy zastaralý.

-Y, --kymymoopy; -y, - noksymoops

Do a nepřidávejteksymoops symboly na ksyms. Tyto symboly používajíksymoops k lepšímu ladění, pokud v tomto modulu existuje možnost Oops. Výchozí hodnota je proksymoopssymboly, které mají být definovány. Tato volba je nezávislá na-X/-X možnosti.

ksymoops symboly přidávají přibližně 260 bajtů na jeden modul načtení. Pokud nejste opravdu zkráceni v prostoru jádra a snažíte se snížit ksyms na minimální velikost, použijte výchozí nastavení a získáte přesnější ladění Oops.ksymoops jsou zapotřebí symboly pro ukládání přetrvávajících dat modulu.

-N, - pouze číselné

Zkontrolujte pouze číselnou část verze modulu proti verzi jádra, tj. Ignorujte EXTRAVERSION při rozhodování o tom, zda modul patří do jádra. Tento příznak je automaticky nastaven na jádro 2.5 dále, je volitelný pro starší jádra.

Parametry modulu

Některé moduly akceptují parametry načítání a přizpůsobují jejich provoz. Tyto parametry jsou často I / O port a IRQ čísla, které se liší od stroje k počítači a nelze je určit z hardwaru.

V modulech postavených pro jádra řady 2.0 může být libovolný symbol celé značky nebo znakového ukazatele považován za parametr a upraven. Počínaje jádry řady 2.1 jsou symboly explicitně označeny jako parametry, takže mohou být změněny pouze určité hodnoty. Dále jsou uvedeny informace o typu pro kontrolu hodnot poskytnutých při zatížení.

V případě celých čísel mohou být všechny hodnoty v desítkové, osmičkové nebo hexadecimální a la C: 17, 021 nebo 0x11. Prvky pole jsou zadány sekvence oddělená čárkami. Prvky lze přeskočit vynecháním hodnoty.

V modulech řady 2.0 se hodnoty, které nezačínají číslem, považují za řetězce. Počínaje 2.1, informace o typu parametru udávají, zda má hodnota interpretovat jako řetězec. Pokud hodnota začíná dvojitými uvozovkami ('), řetězec je interpretován jako v C, únikové sekvence a všechny. Všimněte si, že z příkazového řádku skořepiny mohou být samy citace chráněny před interpretací prostředí.

Licencované moduly a symboly GPL

Počínaje jádrem 2.4.10 by moduly měly mít licenční řetězec definovaný pomocíMODULE_LICENSE (). Několik řetězců je rozpoznáno jako kompatibilní s GPL; jakýkoli jiný licenční řetězec nebo žádná licence vůbec neznamená, že se s modulem zachází jako s majetkem.

Pokud jádro podporuje/ proc / sys / jádro / zabarvené vlajka pakinsmod bude NEBO poškozený příznak s '1' při načítání modulu bez licence GPL. Pokud jádro podporuje odbarvení a modul je načten bez licence, vydá se varování. Pro moduly, které mají aMODULE_LICENSE () , která není kompatibilní s GPL, a to ani na starších jádrech, které nepodporují poškozování. To minimalizuje varování při použití nových modutilů na starších jádrech.

insmod -f (síla) bude NEBO poškozený příznak s '2' na jádrech, které podporují odbarvení. Vždy vydává varování.

Někteří vývojáři jádra vyžadují, aby symboly vyexportované kódem používaly pouze moduly s licencí kompatibilní s licencí GPL. Tyto symboly jsou exportoványEXPORT_SYMBOL_GPL namísto normálníhoEXPORT_SYMBOL. Pouze symboly GPL vyexportované jádrem a dalšími moduly jsou viditelné pouze pro moduly s licencí kompatibilní s GPL, tyto symboly se objevují v/ proc / ksyms s předponou 'GPLONLY_'. insmod ignorujeGPLONLY_ předpony na symboly při načítání licencovaného modulu GPL, takže modul se vztahuje pouze na normální název symbolu bez předpony. Pouze symboly GPL nejsou zpřístupněny modulům bez licence kompatibilní s licencí GPL, a to včetně modulů bez licence vůbec.

Ksymoops Assistance

Chcete-li pomoci při ladění jádra Oops při používání modulů,insmod výchozí přidání některých symbolů ksyms, viz-Y volba. Tyto symboly začínají__insmod_ modulename_ . The modulename je nutné, aby symboly byly jedinečné. Je zákonné načíst stejný objekt více než jednou pod různými názvy modulů. V současné době jsou definované symboly:

__insmod_ modulename _ Oobjectfile _ Mmtime _ Vversion

objektový soubor je název souboru, ze kterého byl objekt načten. To zajistí, že ksymoops mohou odpovídat kódu správnému objektu. mtime je poslední změněné časové razítko v tomto souboru v šestnáctce, nula, pokud stav selhal. verze je verze jádra, pro kterou byl modul kompilován, -1, pokud není k dispozici žádná verze. The symbol má stejnou počáteční adresu jako záhlaví modulu.

__insmod_ modulename _ Ssectionname _ Llength

Tento symbol se objeví na začátku vybraných sekcí ELF, aktuálně .text, .rodata, .data, .bss a .sbss. Zobrazuje se pouze v případě, že má část nenulovou velikost. název oddílu je název oddílu ELF, délka je délka sekce v desítkové soustavě. Tyto symboly pomáhají ksymoops mapovat adresy do sekcí, pokud nejsou k dispozici žádné symboly.

__insmod_ modulename _Ppersistent_ název souboru

Vytvořil jsem pouzeinsmod pokud má modul jeden nebo více parametrů, které jsou označeny jako trvalé údaje a název souboru pro ukládání přetrvávajících dat (viz-E, výše).

Druhý problém s ladícím jádrem Jejda v modulech je, že obsah / proc / ksyms a / proc / modules se mohou změnit mezi Oopsem a při zpracování souboru protokolu. Chcete-li tento problém vyřešit, pokud existuje adresář / var / log / ksymoopsinsmod armmod bude automaticky kopírovat / proc / ksyms a / proc / modules na / var / log / ksymoops s předponou "datum +% Y% m% d% H% M% S". Správce systému může říct ksymoops, které soubory snímků mají používat při ladění Oops. Pro automatickou kopii není zakázáno přepínání. Pokud nechcete, aby k němu došlo, nevytvářejte / var / log / ksymoops. Pokud tento adresář existuje, měl by být vlastněn root a be mode 644 nebo 600 a tento skript byste měli spouštět každý den nebo tak. Níže uvedený skript je instalován jako insmod_ksymoops_clean.

#! / bin / sh # Vymažte uložené ksymy a moduly, které nejsou přístupné za 2 dny pokud -d / var / log / ksymoops pak set -e # Ujistěte se, že existuje vždy alespoň jedna verze d = `datum +% Y% m% d% H% M% S` cp -a / proc / ksyms /var/log/ksymoops/cs{d}.ksyms cp -a / proc / modules /var/log/ksymoops/${d}moduly najít / var / log / ksymoops - typ f -atime +2 -exec rm {} ; fi

Základní informace, které je třeba znát

NÁZEV

insmod - nainstalujte modul načíst modul jádra

SYNOPSE

insmod -fhkLmnpqrsSvVxXyYN -e persist_name -o module_name -O blob_name -P předpona modul symbol= hodnota …