Comando Linux / Unix: insmod

L'ordre Linux / Unix insmod instal·la un mòdul carregable en el kernel executant. insmod intenta connectar un mòdul al nucli de l'execució 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 o extensió, insmod buscarà el mòdul en alguns directoris predeterminats comuns. La variable d'entorn MODPATH es pot utilitzar per substituir aquest valor predeterminat. Si hi ha un fitxer de configuració del mòdul com /etc/modules.conf , substituirà les rutes definides a MODPATH .

La variable d'entorn MODULECONF 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 s'estableix la variable d'entorn UNAME_MACHINE , modutils utilitzarà el seu valor en lloc del camp de la màquina des de uname () syscall. Això es fa servir principalment quan compileu mòduls de 64 bits en l'espai d'usuaris de 32 bits o viceversa, estableixi UNAME_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

-y persist_name , --persist = 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 es llegeixen per insmod si aquesta opció està present, per defecte, insmod no processa dades persistents.

Com a forma de taquigrafia , -e "" (una cadena buida) s'interpreta per insmod com el valor de persistdir tal com es defineix a modules.conf , seguit del nom de fitxer del mòdul relatiu a la ruta de cerca de mòduls en què es troba, menys qualsevol finalitzant ".gz", ".o" o ".mod". Si modules.conf especifica " persistdir = " (és a dir, persistdir és un camp buit), aquesta forma de taquigrafia s'ignora silenciosament. (Vegeu mòduls.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 manera de forçar insmod a carregar el mòdul.

-h , - help

Mostra un resum d'opcions i surt immediatament.

-k , --autoclean

Estableix l'indicador de neteja automàtica al mòdul. Aquesta bandera serà utilitzada per kerneld (8) per eliminar mòduls que no s'han usat durant un període de temps, normalment un minut.

-L , --lock

Utilitzeu bandada (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 , --noload

Explotació maniquí, feu tot excepte que carregueu el mòdul al nucli. Si la sol·liciteu un -m o- O , l'execució produirà un mapa o un fitxer 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 , --name = nom_del_module

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ó. Es recomana l'opció -m per 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, insmod 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é versions de símbols, però el mòdul s'ha creat amb versions de símbols, l'usuari haurà de subministrar -P .

-q , --quiet

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 de l' insmod .

-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. Si especifiqueu -r, activarà la verificació i permetrà que l'arrel carregui mòduls que no siguin propietat de l'arrel. Nota: el valor predeterminat per a 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 de tot a syslog (3) en comptes de la terminal.

-S , --kallsyms

Força que el mòdul carregat tingui dades de kallsyms , fins i tot si el nucli no ho admet. Aquesta opció és per a sistemes petits en què el nucli es carrega sense dades de Kallsyms , però els mòduls seleccionats necessiten noms per a la depuració. Aquesta opció és la predeterminada a Red Hat Linux.

-v , --verbose

Sigui detallat.

-V , --versió

Mostra la versió d' insmod .

-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 , --ksymoops ; -y , --noksymoops

No afegiu símbols ksymoops a ksyms. Aquests símbols són utilitzats per ksymoops per proporcionar una millor depuració si hi ha un Oops en aquest mòdul. El valor per defecte és definir els símbols de kymoops . Aquesta opció és independent de les opcions -X / -x .

Els símbols de kymoops 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. Els símbols de kymoops són necessaris 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 l'intèrpret d'ordres, les pròpies versions poden estar protegides de la interpretació del shell.

Mòduls i símbols amb llicència GPL

A partir del nucli 2.4.10, els mòduls han de tenir una cadena de llicència, definida mitjançant MODULE_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 símbol / proc / sys / kernel / tainted , llavors insmod us mostrarà la marca amb el '1' en carregar 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. S'ha emès una advertència per a mòduls que tenen un MODULE_LICENSE () que no és compatible amb la GPL, fins i tot en nuclis més antics que no admeten la tainting. Això minimitza les advertències quan s'utilitza un modutils nou en nuclis més antics.

El mode insmod -f (força) O O el tauler amb "2" en nuclis que admeten el taint. 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 per EXPORT_SYMBOL_GPL en comptes de l' EXPORT_SYMBOL normal. Els símbols de GPL només exportats pel nucli i per altres mòduls només són visibles per als mòduls amb una llicència compatible amb GPL, aquests símbols apareixen a / proc / ksyms amb un prefix de ' GPLONLY_ '. insmod ignora el prefix GPLONLY_ en símbols mentre carrega un mòdul de llicència GPL, de manera que el mòdul només fa 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 a depurar el nucli Oops quan s'utilitzen mòduls, insmod s'estableix per afegir alguns símbols a ksyms, vegeu l'opció -Y . Aquests símbols comencen amb __insmod_modulename_ . El nom del mòdul és obligatori 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

objectfile é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 l'estat no funciona. La versió és la versió del nucli en què es va compilar el mòdul, -1 si no hi ha cap versió disponible. El símbol _O té la mateixa adreça de sortida que el capçalera del mòdul.

__insmod_modulename_Ssectionname_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. sectionname és el nom de la secció ELF, la longitud é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_filename

Només creat per insmod 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 kernel de depuració En els mòduls és que els continguts de / proc / ksyms i / proc / modules poden canviar entre els Oops i quan processeu el fitxer de registre. Per ajudar a superar aquest problema, si el directori / var / log / ksymoops existeix, insmod i rmmod automàticament copiar / proc / ksyms i / proc / modules 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 .

Informació bàsica a saber

NOM

insmod - instal·leu el mòdul de nucli carregable

SINOPSI

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o module_name ] [-O blob_name ] [-P prefix ] module [ symbol = value ...]