L'ordre Linux / Unix insmod instal·la un mòdul carregable al nucli d'execució.insmod intenta enllaçar un mòdul al kernel executant resolent tots els símbols de la taula de símbols exportats del nucli.
Si el nom del fitxer del mòdul es proporciona sense directoris ni extensió,insmod buscarà el mòdul en alguns directoris predeterminats comuns. La variable d'entornMODPATH es pot utilitzar per substituir aquest valor predeterminat. Si hi ha un fitxer de configuració del mòdul com/etc/modules.conf Existeix, substituirà les rutes definidesMODPATH.
La variable d'entornMODULECONF també es pot utilitzar per seleccionar un fitxer de configuració diferent del valor predeterminat/etc/modules.conf (o/etc/conf.modules (obsolet)). Aquesta variable d'entorn anul·larà totes les definicions anteriors.
Quan la variable d'entornUNAME_MACHINE s'estableix, els moduladors usaran el seu valor en comptes del camp de la màquina des de la uname () syscall. Això s'utilitza principalment quan compileu mòduls de 64 bits en l'espai d'usuaris de 32 bits o viceversa, configuratUNAME_MACHINE al tipus de mòduls. Els mòduls actuals no admeten el mode de construcció creuada completa dels mòduls, es limita a triar entre versions de 32 i 64 bits de l'arquitectura host.
Opcions
-e persist_name , - persistent= persist_name
Especifica on es llegeixen dades persistents del mòdul de la càrrega i s'escriuen quan es descarrega aquesta instanciació del mòdul. Aquesta opció s'ignora silenciosament si el mòdul no conté dades persistents. Les dades persistents només són llegits perinsmod si aquesta opció està present, de manera predeterminadainsmod no processa dades persistents.
Com a forma de taquigrafia,-i "" (una cadena buida) s'interpreta perinsmod com el valor depersistdir tal com es defineix amodules.conf, seguit del nom del mòdul relatiu a la ruta de cerca de mòduls en què es trobava, sense cap ".gz", ".o" o ".mod" final. Simodules.conf especifica "persistdir ="(és a dirpersistdir és un camp buit), aquesta forma de taquigrafia s'ignora silenciosament. (Veuremodules.conf (5).)
-f, --force
Intentem carregar el mòdul fins i tot si la versió del nucli en execució i la versió del nucli per a la qual es va compilar el mòdul no coincideixen. Això només anul·la la comprovació de la versió del nucli, no té cap efecte en els xecs de noms de símbols. Si els noms dels símbols del mòdul no coincideixen amb el nucli, no hi ha forma de forçarinsmod per carregar el mòdul.
-h, - ajuda
Mostra un resum d'opcions i surt immediatament.
-k, --auto-neteja
Estableix l'indicador de neteja automàtica al mòdul. Aquesta bandera serà utilitzada perkerneld(8) per eliminar mòduls que no s'han usat durant un període de temps, normalment un minut.
-L, --lock
Úsramat(2) per evitar càrregues simultànies del mateix mòdul.
-m, --map
Mostra un mapa de càrrega a l'estoc, cosa que facilita la depuració del mòdul en cas de pànic del kernel.
-n, --Nolada
Explotació maniquí, feu tot excepte que carregueu el mòdul al nucli. Si ho sol·licita un-m o-O, l'execució produirà un fitxer de mapa o blob. Com que el mòdul no està carregat, es desconeix l'adreça de càrrega del kernel real, de manera que el mapa i el fitxer blob es basen en una adreça de càrrega arbitrària de 0x12340000.
-o module_name , --nom= module_name
Expliqueu explícitament el mòdul, en lloc de derivar el nom del nom base del fitxer d'origen.
-O blob_name , --blob= blob_name
Deseu l'objecte binari a blob_name . El resultat és un blob binari (cap encapçalament ELF) que mostra exactament el que es carrega al nucli després de la manipulació i la reubicació de la secció. Opció-m es recomana obtenir un mapa de l'objecte.
-p, --probe
Proveu el mòdul per veure si es pot carregar correctament. Això inclou localitzar el fitxer d'objectes a la ruta del mòdul, comprovar els números de versió i resoldre símbols. No verifica les reubicacions ni produeix un mapa o blob.
-P prefix , --prefix= prefix
Aquesta opció es pot utilitzar amb mòduls versionats per a un nucli SMP o bigmem, ja que aquests mòduls tenen un prefix addicional afegit als seus noms de símbols. Si el nucli es va construir amb versions de símbols, llavorsinsmod s'extreu automàticament el prefix de la definició de "get_module_symbol" o "inter_module_get", una de les quals ha d'existir en qualsevol nucli que suporti mòduls. Si el nucli no té cap versió de símbol, però el mòdul s'ha creat amb versions de símbols, l'usuari haurà de subministrar-P.
-q, --tranquil
No imprimiu una llista de símbols sense resoldre. No et queixis de la incompatibilitat de la versió. El problema només es reflectirà en l'estat de sortida deinsmod.
-r, --root
Alguns usuaris compilen mòduls sota un usuari sense root i instal·len els mòduls com a root. Aquest procés pot deixar els mòduls propietat de l'usuari sense root, tot i que el directori de mòduls és propietat de root. Si l'usuari no root està compromès, un intrús pot sobreescriure els mòduls existents propietat d'aquest userid i utilitzar aquesta exposició per arrencar l'accés al root.
Per defecte, modutils rebutjarà els intents d'utilitzar un mòdul que no pertany a l'arrel. Especificar -r canviarà el xec i permetrà que l'arrel carregui mòduls que no siguin propietat de l'arrel.
Nota: El valor predeterminat de la comprovació de l'arrel es pot canviar quan configureu modutils.L'ús de -r per deshabilitar la comprovació de l'arrel o la configuració predeterminada a "no hi ha cap comprovació de root" en el moment de la configuració és una exposició important de seguretat i no es recomana.
-s, - syslog
Sortiu-ne totsyslog(3) en comptes de la terminal.
-S, - petits
Força que el mòdul carregat tinguikallsyms dades, fins i tot si el nucli no ho admet. Aquesta opció és per a sistemes petits on el nucli es carrega sensekallsyms Les dades, però els mòduls seleccionats necessitenkallsyms per depurar. Aquesta opció és la predeterminada a Red Hat Linux.
-v, --verbose
Sigui detallat.
-V, --version
Mostra la versió deinsmod.
-X, --export; -x, --noexport
No exporteu tots els símbols externs del mòdul, respectivament. El valor predeterminat és que s'exportin els símbols. Aquesta opció només és efectiva si el mòdul no exporta explícitament la seva pròpia taula de símbols controlats i, per tant, està obsoleta.
-Y, - Kimmoops; -y, --noksymoops
No ho afegeixisksymoops símbols a ksyms. Aquests símbols són utilitzats perksymoops per proporcionar una millor depuració si hi ha un Oops en aquest mòdul. El valor per defecte és per alksymoopssímbols a definir. Aquesta opció és independent de la-X/-x opcions.
ksymoops Els símbols afegeixen aproximadament 260 bytes per mòdul carregat. A menys que estigui realment curta a l'espai del nucli i intenteu reduir els ksyms a la seva mida mínima, prengui el valor predeterminat i obtingueu la depuració d'Oops més precisa.ksymoops es requereixen símbols per guardar dades de mòduls persistents.
-N, --numèrica només
Només comproveu la part numèrica de la versió del mòdul contra la versió del nucli, és a dir, ignorar EXTRAVERSION al decidir si un mòdul pertany a un nucli. Aquest indicador s'estableix automàticament per al kernel 2.5 en endavant, és opcional per als kernels anteriors.
Paràmetres del mòdul
Alguns mòduls accepten paràmetres de temps de càrrega per personalitzar el seu funcionament. Aquests paràmetres solen ser el port d'E / S i els números d'IRQ que varien de màquina a màquina i no es pot determinar a partir del maquinari.
En mòduls construïts per a nuclis de sèries 2.0, qualsevol símbol de punter de caràcter sencer o de caràcter pot ser tractat com a paràmetre i modificat. A partir dels nuclis de la sèrie 2.1, els símbols es marquen explícitament com a paràmetres, de manera que només es poden canviar valors específics. A més, es proporciona informació de tipus per comprovar els valors proporcionats durant el temps de càrrega.
En el cas dels enters, tots els valors poden ser en decimal, octal o hexadecimal a la C: 17, 021 o 0x11. Els elements de matriu s'especifiquen seqüència separada per comes. Es poden omès els elements ometint el valor.
En els mòduls de la sèrie 2.0, els valors que no comencen amb un número es consideren cadenes. A partir de 2.1, la informació del tipus de paràmetre indica si s'ha d'interpretar el valor com una cadena. Si el valor comença amb cometes dobles ('), la cadena s'interpreta com a C, seqüències d'escapament i tot. Tingueu en compte que, a partir de l'indicatiu de shell, les pròpies versions poden haver de ser protegides de la interpretació del shell.
Mòduls i símbols amb llicència GPL
Començant amb el kernel 2.4.10, els mòduls haurien de tenir una cadena de llicència, definida usantMODULE_LICENSE (). Diverses cadenes es reconeixen com a compatibles amb GPL; qualsevol altra cadena de llicència o cap llicència significa que el mòdul es tracta com a propietari.
Si el nucli és compatible amb el/ proc / sys / kernel / contaminat bandera a continuacióinsmod O bé, la bandera amb "1" es trairà quan es carregui un mòdul sense una llicència GPL. S'emet una advertència si el nucli suporta la tainting i es carrega un mòdul sense una llicència. També s'adverteix una advertència per als mòduls que tenen unaMODULE_LICENSE () que no és compatible amb la GPL, fins i tot en nuclis més antics que no admeten la contaminació. Això minimitza les advertències quan s'utilitza un modutils nou en nuclis més antics.
insmod -f (força) el mode serà OR el pavelló tacat amb '2' en nuclis que admeten la tainting. Sempre emet un avís.
Alguns desenvolupadors del kernel requereixen que els símbols exportats pel seu codi només han de ser utilitzats per mòduls amb una llicència compatible amb GPL. Aquests símbols són exportats perEXPORT_SYMBOL_GPL en comptes del normalEXPORT_SYMBOL. Els símbols de GPL només exportats pel nucli i per altres mòduls només són visibles per a mòduls amb una llicència compatible amb GPL, aquests símbols apareixen a/ proc / ksyms amb un prefix de 'GPLONLY_'. insmod ignora elGPLONLY_ prefix sobre símbols mentre es carrega un mòdul de llicència GPL perquè el mòdul només faci referència al nom del símbol normal, sense el prefix. Els símbols de GPL només no estan disponibles per a mòduls sense una llicència compatible amb GPL, això inclou mòduls sense cap llicència.
Assistència de Ksymoops
Per ajudar amb la depuració del nucli Oops quan s'utilitzen mòduls,insmod Per defecte s'afegeixen alguns símbols a ksyms, consulteu el-Y opció. Comencen aquests símbols__insmod_ modulename_ . El modulename es requereix per fer que els símbols siguin únics. És legal carregar el mateix objecte més d'una vegada sota diferents noms de mòduls. Actualment, els símbols definits són:
__insmod_ modulename _ Oobjectfile _ Mmtime _ Vversion
fitxer d'objectes és el nom del fitxer del qual s'ha carregat l'objecte. Això garanteix que ksymoops pugui combinar el codi amb l'objecte correcte. mtime és l'última marca de temps modificada en aquest fitxer en hexadecimal, zero si es va fallar l'estat. versió és la versió del kernel per al qual es va compilar el mòdul, -1 si no hi ha cap versió disponible. El_O El símbol té la mateixa adreça de sortida que el encapçalament del mòdul.
__insmod_ modulename _ Nom de la secció _ Llength
Aquest símbol apareix al principi de les seccions ELF seleccionades, actualment .text, .rodata, .data, .bss i .sbss. Només apareix si la secció té una mida diferent de zero. nom de secció és el nom de la secció ELF, llargada és la longitud de la secció en decimal. Aquests símbols ajuden a ksymoops a assignar adreces a seccions quan no hi ha símbols disponibles.
__insmod_ modulename _Persistent_ nom de l'arxiu
Només creat perinsmod si el mòdul té un o més paràmetres marcats com a dades persistents i un nom de fitxer per guardar dades persistents (vegeu-e, a dalt) està disponible.
L'altre problema amb el nucli de depuració en els mòduls és que els continguts de / proc / ksyms i / proc / modules pot canviar entre les Oops i quan processeu el fitxer de registre. Per ajudar a superar aquest problema, si el directori / var / log / ksymoops existeix llavorsinsmod irmmod copiarà / proc / ksyms i / proc / modules automàticament a / var / log / ksymoops amb un prefix de `date +% Y% m% d% H% M% S`. L'administrador del sistema pot dir a Ksymoops quins fitxers d'instantànies s'utilitzen quan es depura un Oops. No hi ha canvi per desactivar aquesta còpia automàtica. Si no voleu que es produeixi, no creeu / var / log / ksymoops. Si aquest directori existeix, hauria de ser propietat de l'arrel i ser mod. 644 o 600 i hauríeu d'executar aquest script cada dia més o menys. L'script següent està instal·lat com insmod_ksymoops_clean.
#! / bin / sh # Elimineu els ksyms i els mòduls desats que no s'hagin accedit en 2 dies si -d / var / log / ksymoops llavors establir -e # Assegureu-vos que sempre hi hagi almenys una versió 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 find / var / log / ksymoops-type f -time +2 -exec rm {} ; fi NOM insmod - instal·la el mòdul de nucli carregable SINOPSI insmod -fhkLmnpqrsSvVxXyYN -e persist_name -o module_name -O blob_name -P prefix mòdul símbol= valor … Informació bàsica a saber












