Comanda Linux / Unix insmod instalează un modul încărcabil în kernelul care rulează.insmod încearcă să conecteze un modul la kernelul care rulează rezolvând toate simbolurile din tabelul de simboluri exportat al kernelului.
Dacă numele fișierului modulului este dat fără directoare sau extensie,insmod va căuta modulul în câteva directoare implicite comune. Variabila de mediuMODPATH pot fi folosite pentru a înlocui această valoare implicită. Dacă un fișier de configurare a modulelor, cum ar fi/etc/modules.conf există, va trece peste căile definite în secțiuneaMODPATH.
Variabila de mediuMODULECONF poate fi de asemenea utilizat pentru a selecta un alt fișier de configurare de la implicit/etc/modules.conf (sau/etc/conf.modules (Învechită)). Această variabilă de mediu va suprascrie toate definițiile de mai sus.
Când variabila de mediuUNAME_MACHINE este setat, modutils va folosi valoarea sa în locul câmpului mașinii din syscall uname (). Acest lucru este în principal de utilizare atunci când se compilează module pe 64 de biți în spațiul de utilizator pe 32 de biți sau invers, setatUNAME_MACHINE la tipul de module. Modulele actuale nu acceptă modul de încrucișare completă pentru module, este limitat la alegerea între versiunile de 32 și 64 de biți ale arhitecturii gazdă.
Opțiuni
-e persist_name , --persista= persist_name
Specifică unde vor fi citite date persistente ale modulului de la încărcare și vor fi scrise atunci când această instanțiere a modulului este descărcată. Această opțiune este tăcut ignorată dacă modulul nu are date persistente. Datele persistente sunt citite numai de cătreinsmod dacă această opțiune este prezentă, implicitinsmod nu procesează date persistente.
Ca formă de stenogramă,-e "" (un șir gol) este interpretat deinsmod ca valoare apersistdir așa cum este definită înmodules.conf, urmată de numele de fișier al modulului în raport cu calea de căutare a modulului în care a fost găsită, minus orice ".gz", ".o" sau ".mod" care urmează. Dacămodules.conf specifică "persistdir ="(adicăpersistdir este un câmp gol), atunci această formă de stenogramă este tăcut ignorată. (Vedeamodules.conf (5).)
-f, --forta
Încercați să încărcați modulul chiar dacă versiunea kernelului care rulează și versiunea kernelului pentru care a fost compilat modulul nu se potrivesc. Acest lucru suprascrie doar verificarea versiunii kernel-ului, nu are efect asupra verificării numelor de simboluri. Dacă numele simbolurilor din modul nu se potrivesc cu kernelul, atunci nu există nicio modalitate de forțareinsmod pentru a încărca modulul.
-h, --Ajutor
Afișați un rezumat al opțiunilor și ieșiți imediat.
-k, --Auto curatare
Setați pavilionul de auto-curățare pe modul. Acest pavilion va fi utilizat de cătrekerneld(8) pentru a elimina modulele care nu au fost folosite într-o anumită perioadă de timp - de obicei un minut.
-L, --blocare
Utilizareturmă(2) pentru a împiedica încărcarea simultană a aceluiași modul.
-m, --Hartă
Efectuați o hartă de încărcare pe stdout, facilitând depanarea modulului în caz de panică a kernel-ului.
-N, --noload
Dumneavoastră fugiți, faceți totul, cu excepția încărcării modulului în kernel. Dacă este cerut de un-m sau-O, rularea va produce o hartă sau un fișier blob. Deoarece modulul nu este încărcat, adresa reală de încărcare a kernelului este necunoscută, astfel încât fișierul map și blob se bazează pe o adresă de încărcare arbitrară de 0x12340000.
o- module_name , --Nume= module_name
Explicați numele de modul, mai degrabă decât derivarea numele de la numele de bază al fișierului obiect sursă.
-O blob_name , --blob= blob_name
Salvați obiectul binar din blob_name . Rezultatul este o bobină binară (fără anteturi ELF) care arată exact ce este încărcat în kernel după manipularea și relocarea secțiunii. Opțiune-m este recomandat pentru a obține o hartă a obiectului.
-p, --sondă
Verificați modulul pentru a vedea dacă acesta ar putea fi încărcat cu succes. Aceasta include localizarea fișierului obiect în calea modulului, verificarea numerelor de versiune și rezolvarea simbolurilor. Nu verifică relocările și nici nu produce o hartă sau un fișier blob.
-P prefix , --prefix= prefix
Această opțiune poate fi utilizată cu modulele versate pentru un kernel SMP sau bigmem, deoarece astfel de module au un prefix suplimentar adăugat în numele lor de simboluri. Dacă nucleul a fost construit cu versiuni de simboluri atunciinsmod va extrage automat prefixul din definiția "get_module_symbol" sau "inter_module_get", dintre care una trebuie să existe în orice kernel care acceptă module. Dacă nucleul nu are versiuni de simboluri, dar modulul a fost construit cu versiuni de simboluri, atunci utilizatorul trebuie să furnizeze-P.
-q, --Liniște
Nu imprimați o listă a simbolurilor nerezolvate. Nu vă plângeți de nepotrivirea versiunii. Problema se va reflecta numai în starea de ieșire dininsmod.
-r, --rădăcină
Unii utilizatori compilează modulele sub un utilizator non-root, apoi instalează modulele ca root. Acest proces poate lăsa modulele deținute de userid non-root, chiar dacă directorul de module este deținut de root. Dacă utilizatorul non-root este compromis, un intrus poate suprascrie modulele existente deținute de acel userid și poate folosi această expunere pentru a accesa bootstrap până la accesul root.
În mod implicit, modutils va respinge încercările de a utiliza un modul care nu este deținut de root. specificarea -r va comuta verificarea și va permite rădăcină să încarce module care nu sunt deținute de root.
Notă: Valoarea implicită pentru verificarea rădăcinilor poate fi modificată când modutils este configurat.Utilizarea lui -r pentru a dezactiva verificarea root sau setarea implicită la "no root check" la timpul de configurare este o expunere importantă la securitate și nu este recomandată.
-s, --syslog
Efectuați totul pentrusyslog(3) în loc de terminal.
-S, --kallsyms
Acționați modulul încărcatkallsyms , chiar dacă nucleul nu o acceptă. Această opțiune este pentru sistemele mici în care kernelul este încărcat fărăkallsyms dar sunt necesare modulele selectatekallsyms pentru depanare. Această opțiune este implicită pentru Red Hat Linux.
-v, --verbose
Fii serios.
-V, --versiune
Afișați versiuneainsmod.
-X, --export; -X, --noexport
Faceți și nu exportați toate simbolurile externe ale modulului respectiv. Valoarea prestabilită este pentru simbolurile care urmează să fie exportate. Această opțiune este eficientă numai dacă modulul nu exportă în mod explicit propriul tabel de simboluri controlate și, prin urmare, este depreciat.
-Y, --ksymoops; -y, --noksymoops
Faceți și nu adăugațiksymoops simboluri pentru ksyms. Aceste simboluri sunt utilizate de cătreksymoops pentru a oferi o mai bună depanare dacă există un Oops în acest modul. Implicit este pentruksymoopssimboluri care urmează să fie definite. Această opțiune este independentă de-X/-X Opțiuni.
ksymoops simbolurile adaugă aproximativ 260 octeți pe modul de încărcare. Cu excepția cazului în care sunteți într-adevăr scurt pe spațiul kernel-ului și încercați să reduceți ksyms la dimensiunea minimă a acestuia, luați implicit și obțineți mai exactă Oops debugging.ksymoops simbolurile sunt necesare pentru a salva datele modulelor persistente.
-N, --numeric numai
Verificați numai partea numerică a versiunii modulului împotriva versiunii kernel-ului, adică ignorați EXTRAVERSION-ul atunci când decideți dacă un modul aparține unui kernel. Acest steag este setat automat pentru kernelul 2.5, este opțional pentru kernelurile anterioare.
Module Parameters
Unele module acceptă parametrii de încărcare pentru a personaliza funcționarea acestora. Acești parametri sunt adesea numere de port I / O și numere IRQ care variază de la mașină la mașină și nu pot fi determinate de hardware.
În modulele construite pentru kernel-urile din seria 2.0, orice simbol indicator întreg sau caracter poate fi tratat ca parametru și modificat. Începând din kernelurile din seria 2.1, simbolurile sunt marcate explicit ca parametri, astfel încât numai valorile specifice pot fi modificate. În plus, sunt furnizate informații de tip pentru verificarea valorilor furnizate la momentul încărcării.
În cazul numerelor întregi, toate valorile pot fi în zecimal, octal sau hexazecimal a la C: 17, 021 sau 0x11. Elementele matricei sunt specificate secvență separate prin virgule. Elementele pot fi ignorate prin omiterea valorii.
În modulele din seria 2.0, valorile care nu încep cu un număr sunt considerate șiruri de caractere. Începând cu 2.1, informația de tip a parametrului indică dacă să interpreteze valoarea ca un șir. Dacă valoarea începe cu cotațiile dublu ('), șirul este interpretat ca în C, secvențe de evadare și toate. Rețineți că din prompletul shell, citatele pot fi protejate de interpretarea shell-ului.
Module și simboluri licențiate GPL
Începând cu kernelul 2.4.10, modulele ar trebui să aibă un șir de licențe, definit folosindMODULE_LICENSE (). Mai multe șiruri sunt recunoscute ca fiind compatibile cu GPL; orice alt șir de licență sau nicio licență nu înseamnă că modulul este tratat drept proprietar.
Dacă nucleul acceptă/ Proc / sys / kernel / pătată steagul atunciinsmod va SAU steagul pătat cu "1" atunci când încărcați un modul fără licență GPL. Se emite un avertisment dacă kernelul suportă tentarea și un modul este încărcat fără licență. Se emite întotdeauna un avertisment pentru modulele care au un aMODULE_LICENSE () care nu este compatibilă cu GPL, chiar și pe kernelurile mai vechi care nu suportă tentarea. Acest lucru minimizează avertismentele atunci când se utilizează un modutils nou pe nucleele mai vechi.
insmod -f (forța) va fi SAU steagul pătat cu "2" pe kernelurile care susțin decolorare. Ea întotdeauna emite un avertisment.
Unii dezvoltatori de kerneluri solicită ca simbolurile exportate prin codul lor să fie utilizate numai de module cu licență compatibilă cu GPL. Aceste simboluri sunt exportate deEXPORT_SYMBOL_GPL în loc de normalEXPORT_SYMBOL. Simbolurile GPL exportate de kernel și de alte module sunt vizibile numai pentru modulele cu licență compatibilă cu GPL, aceste simboluri apar în/ Proc / ksyms cu prefixul "GPLONLY_'. insmod ignorăGPLONLY_ prefixul simbolurilor în timpul încărcării unui modul GPL licențiat, astfel încât modulul se referă doar la numele simbolului normal, fără prefix. Simbolurile GPL nu sunt puse la dispoziția modulelor fără o licență compatibilă GPL, acestea includ module fără licență.
Asistență Ksymoops
Pentru a ajuta la depanarea nucleului Oops când folosiți module,insmod implicit la adăugarea unor simboluri în ksyms, vedeți-Y opțiune. Aceste simboluri încep cu__insmod_ modulename_ . modulename este necesar pentru a face simbolurile unice. Este legal să încărcați același obiect mai mult decât o dată sub diferite nume de module. În prezent, simbolurile definite sunt:
__insmod_ modulename _ Oobjectfile _ Mmtime _ versiunea VERSION
objectfile este numele fișierului căruia a fost încărcat obiectul. Acest lucru asigură că ksymoops poate potrivi codul cu obiectul corect. mtime este ultimul timbru modificat pe acel fișier în hex, zero dacă statul a eșuat. versiune este versiunea kernelului pentru care a fost compilat modulul, -1 dacă nu este disponibilă nicio versiune._O simbolul are aceeași adresă de start ca și antetul modulului.
__insmod_ modulename _ Ssectionname _ Llength
Acest simbol apare la începutul secțiunilor ELF selectate, în prezent .text, .rodata, .data, .bss și .sbss. Apare numai dacă secțiunea are o dimensiune diferită de zero. numesectiune este numele secțiunii ELF, lungime este lungimea secțiunii în zecimal. Aceste simboluri ajută la ksymoops adresele de hartă în secțiuni atunci când nu sunt disponibile simboluri.
__insmod_ modulename _Ppersistent_ nume de fișier
Numai creat deinsmod dacă modulul are unul sau mai mulți parametri marcați ca date persistente și un nume de fișier pentru a salva date persistente (a se vedea-e, de mai sus).
Cealaltă problemă cu kernelul de depanare Oops în module este că conținutul / proc / ksyms și / proc / modules se pot schimba între Oops și când procesați fișierul jurnal. Pentru a ajuta la depășirea acestei probleme, atunci dacă există directorul / var / log / ksymoopsinsmod șirmmod va copia automat / proc / ksyms și / proc / modules la / var / log / ksymoops cu un prefix de 'date +% Y% m% d% H% M% S`. Administratorul de sistem poate spune ksymoops care fișiere instantanee de utilizat la depanarea unui Oops. Nu există comutator pentru a dezactiva această copie automată. Dacă nu doriți să apară, nu creați / var / log / ksymoops. Dacă acest director există, ar trebui să fie deținut de root și be mode 644 sau 600 și ar trebui să executați acest script în fiecare zi sau cam asa ceva. Scriptul de mai jos este instalat ca insmod_ksymoops_clean.
#! / Bin / sh # Ștergeți ksyms-urile salvate și modulele care nu au fost accesate în 2 zile dacă -d / var / log / ksymoops atunci set -e # Asigurați-vă că există întotdeauna cel puțin o versiune d = `data +% Y% m% d% H% M% S` cp -a / proc / ksyms /var/log/ksymoops/${d}.ksyms cp -a / proc / modules /var/log/ksymoops/${d}modules găsiți / var / log / ksymoops -type f -atime +2 -exec rm {} ; Fi NUME insmod - instalați modul kernel încărcabil REZUMAT insmod -fhkLmnpqrsSvVxXyYN -e persist_name -o module_name -O blob_name -P prefix modul simbol= valoare … Informații de bază de știut