Linux / Unix-komento: insmod

Linux / Unix-komento insmod asentaa kuormitettavan moduulin käynnissä olevalle kernelille. insmod yrittää linkittää moduulin käynnissä olevaan ytimeen ratkaisemalla kaikki symbolit ytimen vietystä symbolitaulukosta.

Jos moduulitiedoston nimi annetaan ilman hakemistoja tai laajennuksia, insmod etsii moduulin joissakin yleisissä oletusluetteloissa. Ympäristömuuttujaa MODPATH voidaan ohittaa tämä oletus. Jos moduulikokoonpanotiedosto, kuten /etc/modules.conf , on ohittaa MODPATH: ssa määritetyt polut .

MODULECONF- ympäristömuuttujaa voidaan käyttää myös määrittämään eri konfiguraatiotiedosto oletusarvoltaan /etc/modules.conf (tai /etc/conf.modules (deprecated)). Tämä ympäristömuuttuja ohittaa kaikki edellä esitetyt määritelmät.

Kun ympäristömuuttuja UNAME_MACHINE on asetettu, modutils käyttää sen arvoa koneen kentän sijaan uname () syscallista. Tämä on pääasiassa käytössä, kun käännät 64-bittisiä moduuleja 32-bittisessä käyttäjäkenttään tai päinvastoin, aseta UNAME_MACHINE moduulityyppiin. Nykyiset moduulit eivät tue täydellistä ristikkomuotoa moduuleille, vaan se rajoittaa valitsemaan isäntäarkkitehtuurin 32- ja 64-bittiset versiot.

vaihtoehdot

-e persist_name , --persist = persist_name

Määrittää, missä moduulissa olevat pysyvät tiedot luetaan kuormituksesta ja kirjoitetaan, kun moduulin instantiointi on purettu. Tätä vaihtoehtoa ohitetaan hiljaisesti, jos moduulissa ei ole pysyviä tietoja. Pysyviä tietoja lukee vain insmod, jos tämä vaihtoehto on läsnä, oletuksena insmod ei käsittele pysyviä tietoja.

Lyhytmuotoinen muoto , -e "" (tyhjä merkkijono), tulkitaan insmodilla persistdir- arvoksi moduulien.conf määritelmän mukaisesti, jota seuraa moduulin tiedostonimi suhteessa moduulin hakupaan , joka on löydetty, miinus jäljessä ".gz", ".o" tai ".mod". Jos modules.conf määrittää " persistdir = " (ts. Persistdir on tyhjä kenttä), tämä lyhennetty lomake hiljaa jätetään huomiotta. (Katso modules.conf (5).)

-f , --voima

Yritä ladata moduuli, vaikka käyttämättömän ytimen versio ja ytimen versio, jolle moduuli koottiin, eivät täsmää. Tämä vain ohittaa ydinversion tarkistuksen, sillä ei ole vaikutusta symbolien nimien tarkistuksiin. Jos moduulin symbolin nimet eivät vastaa kerneliä , moduulia ei voi pakottaa insmod: iin .

-h , --ap

Näytä yhteenveto vaihtoehdoista ja lopeta välittömästi.

-k , --autoclean

Aseta moduulin auto-clean-lippu. Tätä lippua käyttävät kerneld (8) moduulien poistamiseksi, joita ei ole käytetty jossakin ajanjaksossa - yleensä yhden minuutin ajan.

-L , - lukko

Käytä parvea (2) estääksesi samanaikaisen kuormituksen samasta moduulista.

-m , --map

Tuottaa kuormakartan stdoutilla, mikä helpottaa moduulin debugoitumista ytimen paniikissa.

-n , --noload

Dummy run, tee kaikki paitsi lataa moduuli ytimeen. Jos -m tai -O pyytää, aja tuottaa kartan tai blob-tiedoston. Koska moduulia ei ole ladattu, todellinen ytimen latausosoite on tuntematon, joten kartta ja blob-tiedosto perustuvat mielivaltaiseen kuormitusosoitteeseen 0x12340000.

-o module_name , --name = module_name

Nimeä moduuli nimenomai- sesti nimen sijaan lähde-objektitiedoston perusnimiin.

-O blob_name , --blob = blob_name

Tallenna binäärinen objekti blob_nimiin . Tuloksena on binäärinen blob (ei ELF-otsikoita), jotka osoittavat tarkasti, mitä ytimeen syötetään leikkauksen manipuloinnin ja siirtämisen jälkeen. Optio -m on suositeltavaa saada kohteen kartta.

-p , - probe

Tutki moduuli nähdäksesi, voisiko se ladata onnistuneesti . Tämä sisältää objektitiedoston sijoittamisen moduuliväylälle, tarkistaa versionumerot ja ratkaisee symbolit. Se ei tarkista siirtoja eikä tuo karttaa tai blob-tiedostoa.

-P etuliite , --prefix = etuliite

Tätä vaihtoehtoa voidaan käyttää SMP- tai bigmem-ytimen versioiduilla moduuleilla, koska tällaisilla moduuleilla on ylimääräinen etuliite lisätty niiden symbolien nimet. Jos ydin on rakennettu symboliversioilla, insmod purkaa automaattisesti etuliitteen "get_module_symbol" tai "inter_module_get" määritelmästä, joista yksi on olemassa missä tahansa ytimessä, joka tukee moduuleja. Jos ytimessä ei ole symboliversioita, mutta moduuli on rakennettu symboliversioilla, käyttäjän on toimitettava -P .

-q , - hiljainen

Älä kirjoita luetteloa ratkaisemattomista symboleista. Älä valittaa version yhteensopimattomuudesta. Ongelma näkyy vain insmodin poistumistilanteessa.

-r , - root

Jotkut käyttäjät kokoavat moduuleja ei-juurikäyttäjän sisällä ja asentavat moduulit juuri. Tämä prosessi voi jättää ei-juurikäyttäjän omistamat moduulit, vaikka moduulihakemiston omistaa root. Jos ei-juurikäyttäjä on vaarantunut, tunkeilija voi korvata nykyisen käyttäjän tunnistamia nykyisiä moduuleja ja käyttää tätä altistusta bootstrap-yhteydelle pääkäyttäjän päästä.

Oletusarvon mukaan modutils hylkää yritykset käyttää moduulia, joka ei ole pääkäyttäjän omistuksessa. Määritä -r valitsee tarkistuksen ja antaa rootille sellaisten moduulien lataamisen, jotka eivät ole pääkäyttäjän omistamia. Huomaa: root-tarkistuksen oletusarvoa voidaan muuttaa, kun modutils on määritetty.

Käyttämällä -r-näppäintä poistaaksesi juuren tarkistuksen tai asettamalla oletusasetus "ei root-tarkistusta" määritysaikana on suuri suojausaltistusta eikä sitä suositella.

-s , - syslog

Tuottaa kaiken syslog (3) terminaalin sijaan.

-S , -suojat

Pakota ladattu moduuli khingyms data, vaikka ydin ei tue sitä. Tämä vaihtoehto on tarkoitettu pienille järjestelmille, joissa ydintä ladataan ilman kappaleita, mutta valitut moduulit tarvitsevat klesymit virheenkorjausta varten. Tämä vaihtoehto on Red Hat Linuxin oletusasetus.

-v , --verbose

Ole varovainen.

-V , --versio

Näytä version insmod .

-X , - vienti ; -x , - ei- vienti

Tee ja älä vie kaikkia moduulin ulkoisia symboleja. Oletuksena on, että symbolit viedään. Tämä vaihtoehto on tehokas ainoastaan, jos moduuli ei eksplisiittisesti vie omaa ohjattua symbolitietotaulukkoa, joten se on vanhentunut.

-Y , -ksymoops ; -y , - noksymoops

Tee ja älä lisää ksymoops- symboleja ksimeihin. Nämä symbolit käyttävät ksymoops paremman virheenkorjauksen suorittamiseen, jos tässä moduulissa on Oops. Oletus on, että ksymoops- symbolit määritellään. Tämä vaihtoehto on riippumaton -X / -x- vaihtoehdoista.

ksymoops- symbolit lisäävät noin 260 tavua ladattua moduulia kohden. Ellet ole kovin ytimen ytimen tilaa ja yrität vähentää ksymejä sen minimikokoon, ota oletusarvo ja tarkenna Oopsin virheenkorjaus. ksymoops- symboleja tarvitaan pysyvien moduulitietojen tallentamiseen.

-N , - vain numeerinen

Vain tarkista moduuliversion numeerinen osa ytimen versiota vastaan, eli sivuuttaa EXTRAVERSION päätettäessä, onko moduuli ydin. Tämä lippu asetetaan automaattisesti ytimeen 2.5 lähtien, mutta se on valinnainen aikaisemmille ytimille.

Moduulin parametrit

Jotkin moduulit hyväksyvät latausaikaparametrit muokatakseen niiden toimintaa. Nämä parametrit ovat usein I / O-porttia ja IRQ-numeroita, jotka vaihtelevat koneesta toiseen, eikä niitä voida määrittää laitteistosta.

Moduulit, jotka on rakennettu 2.0-sarjan ytimiin, kaikkia kokonaisluku- tai merkkiosoitussymbolia voidaan käsitellä parametrina ja modifioida. 2.1-sarjan ytimistä lähtien symbolit merkitään nimenomaisesti parametreiksi, jotta vain tiettyjä arvoja voidaan muuttaa. Lisäksi annetaan tyypin informaatio kuormituksen aikana annettujen arvojen tarkistamiseksi.

Kokonaislukujen osalta kaikki arvot saattavat olla desimaaleina, oktaalina tai heksadesimaalina a la C: 17, 021 tai 0x11. Array-elementit on määritelty sekvenssillä erotellut pilkulla. Elementit voidaan ohittaa jättämällä arvo pois.

2.0-sarjan moduuleissa arvot, jotka eivät alkota numerolla, katsotaan merkkijonoksi. Alkaen 2.1, parametrin tyyppitiedot ilmaisevat, tulkitseko arvo merkkijonoina. Jos arvo alkaa kaksinkertaisilla lainausmerkkeillä ( " ), merkkijono tulkitaan C: n, poistumissekvenssien ja kaiken mukaan. Huomaa, että shell-kehotteesta itse lainaukset on ehkä suojattava kuoren tulkinnasta.

GPL: n lisensoidut moduulit ja symbolit

Kernel 2.4.10: ssä alkaen moduulien tulee olla käyttöoikeusjono, joka määritellään MODULE_LICENSE () avulla . Useat merkkijonot tunnustetaan GPL-yhteensopiviksi; mikä tahansa muu lisenssisana tai ei lainkaan käyttöoikeutta tarkoittaa, että moduulia käsitellään omistukseksi.

Jos ydin tukee / proc / sys / kernel / värjäytynyttä lippua, niin insmod TAI vioittunut lippu "1": lla, kun lataat moduulia ilman GPL-lisenssiä. Varoitus annetaan, jos ydin tukee hajoamista ja moduuli ladataan ilman lisenssiä. Varoitus annetaan aina moduuleille, joilla on MODULE_LICENSE (), joka ei ole GPL-yhteensopiva, myös vanhemmissa ytimissä, jotka eivät tue häiriöitä. Tämä minimoi varoitukset, kun vanhoissa ytimissä käytetään uusia modutileja.

insmod -f (force) -moodissa TAI vioittunut lippu "2" ytimillä, jotka tukevat tahroja. Se antaa aina varoituksen.

Jotkut ytimen kehittäjät vaativat, että koodinsa vievien symbolien on käytettävä vain GPL-yhteensopivalla lisenssillä varustettuja moduuleja. Nämä symbolit viedään EXPORT_SYMBOL_GPL tavallisen EXPORT_SYMBOL sijasta. GPL-yksinomaiset symbolit, joita ydin ja muut moduulit vievät, ovat näkyvissä vain GPL-yhteensopivilla lisensseillä varustetuille moduuleille. Nämä symbolit näkyvät / proc / ksyms-muodossa, joissa on etuliite " GPLONLY_ ". insmod jättää GPLONLY_- etuliitteen symbolien päälle ladatessaan GPL-lisensoitua moduulia, joten moduuli viittaa vain normaaliin symboliin ilman etuliitettä. GPL: n vain symboleja ei ole saatavana moduuleille, joilla ei ole GPL-yhteensopivaa lisenssiä, mukaan lukien moduulit, joissa ei ole lisenssiä lainkaan.

Ksymoops Assistance

Apua ytimen virheenkorjauksessa Hups, kun käytät moduuleja, insmod oletusarvoisesti lisäämällä joitain symboleja ksymmeihin, katso -Y vaihtoehto. Nämä symbolit alkavat __insmod_modulename_ . Moduulin nimi vaaditaan symbolien tekemiseksi ainutkertaiseksi. On laillista ladata sama objekti useamman kerran eri moduulimäärien alla. Tällä hetkellä määritetyt symbolit ovat:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

objectfile on sen tiedoston nimi, jolta kohde on ladattu. Näin varmistetaan, että ksymoopit voivat vastata koodia oikeaan kohteeseen. mtime on viimeinen muutettu aikaleima kyseisessä tiedostossa hex, nolla, jos stat ei onnistunut. versio on ytimen versio, jonka moduuli on koottu, -1, jos versiota ei ole saatavilla. _O- tunnuksella on sama aloitusosoite kuin moduulin otsikko.

__insmod_modulename_Ssectionname_Llength

Tämä symboli ilmestyy valitun ELF-osion alkuun, tällä hetkellä .text, .rodata, .data, .bss ja .sbss. Se näkyy vain, jos osassa on nolla-kokoinen koko. sectionname on ELF-osan nimi, pituus on leikkauksen pituus desimaalilukuina. Nämä symbolit auttavat ksymoopteja kartoittamaan osoitteita osioihin, kun mitään symbolia ei ole käytettävissä.

__insmod_modulename_Ppersistent_filename

Vain luoma insmod, jos moduulissa on yksi tai useampia parametreja, jotka on merkitty pysyviksi tiedoiksi ja tiedostonimi pysyvien tietojen tallentamiseksi (katso -e yllä).

Toinen ongelma virheenkorjausjärjestelmän ytimen kanssa Oops moduuleissa on, että / proc / ksyms ja / proc / moduulien sisältö voi muuttua Oopsin ja prosessin aikana. Tämän ongelman ratkaisemiseksi, jos hakemisto / var / log / ksymoops on olemassa, insmod ja rmmod kopioivat automaattisesti / proc / ksyms ja / proc / moduulit / var / log / ksymoopsiin , jonka etuliite on `date +% Y% m % d% H% M% S`. Järjestelmänvalvoja voi kertoa ksymoopsille, jotka kuvaavat tiedostoja käytettäessä virheitä Oopsissa . Automaattinen kopiointi ei ole käytössä. Jos et halua sen syntyvän , älä luo / var / log / ksymoops . Jos hakemisto on olemassa, sen pitäisi olla pääkäyttäjänä ja olla tilassa 644 tai 600, ja sinun pitäisi suorittaa tämä käsikirja päivittäin tai niin. Alla oleva komentosarja asennetaan insmod_ksymoops_cleaniksi .

Perustiedot tietää

NIMI

insmod - Asenna ladattava ydinmoduuli

SYNOPSIS

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o moduulin_nimi ] [-O blob_name ] [-P etuliite ] moduuli [ symboli = arvo ...]