Linux / Unix naredba: insmod

Linux / Unix naredba insmod instalira loadable modul u pokrenutoj kernelu. insmod pokušava spojiti modul u pokrenut kernel rješavanjem svih simbola iz izvezene tablice simbola kernela.

Ako se naziv datoteke modula daje bez direktorija ili proširenja, insmod će tražiti modul u nekim uobičajenim zadanim direktorijima. Varijabla okruženja MODPATH može se koristiti za nadjačavanje ove zadane postavke. Ako postoji konfiguracijska datoteka modula kao što je /etc/modules.conf , on će nadjačati putove definirane u MODPATH .

Varijabla okruženja MODULECONF se također može koristiti za odabir druge konfiguracijske datoteke od zadanih /etc/modules.conf (ili /etc/conf.modules (zastarjelih)). Ova varijabla okruženja nadjačat će sve gornje definicije.

Kada je postavljena varijabla okruženja UNAME_MACHINE , modutils će koristiti vrijednost umjesto polja stroja iz uname () syscall sustava. To se uglavnom koristi prilikom sastavljanja 64-bitnih modula u 32-bitnom korisničkom prostoru ili obratno, postavite UNAME_MACHINE na vrstu modula. Trenutni modutils ne podržavaju puni način križanja modula, ograničen je na odabir 32- i 64-bitne verzije arhitekture glavnog računala.

Opcije

-e persist_name , --persist = persist_name

Određuje gdje se neki trajni podaci za modul očitavaju od opterećenja i zapisuju se kada je učitavanje modula istovareno. Ova se opcija zanemaruje ako modul nema postojanih podataka. Upotrebljive podatke čita samo insmod ako je ta opcija prisutna, po defaultu insmod ne obrađuje trajne podatke.

Kao stenografski oblik -e "" (prazan niz) tumači insmod kao vrijednost persistdir kako je definirano u modules.conf , nakon čega slijedi naziv datoteke modula u odnosu na put traži modula na kojem je pronađen, minus bilo koji prateći ".gz", ".o" ili ".mod". Ako modules.conf specificira " persistdir = " (tj. Persistdir je prazno polje) tada se ovaj skraćeni oblik tiho zanemaruje. (Pogledajte modules.conf (5).)

-f , -force

Pokušaj učitavanja modula čak i ako verzija kernela koji se pokreće i verzija jezgre za koju je modul sastavljen ne podudaraju se. To samo nadjačava provjeru verzije kernela, nema utjecaja na provjeru naziva simbola. Ako se nazivi simbola u modulu ne podudaraju s jezgrom, onda ne postoji način prisiljavanja insmoda za učitavanje modula.

-h , - pomoć

Prikažite sažetak opcija i odmah izađite.

-k , --autoclean

Postavite auto-čisti zastavicu na modulu. Kerneld (8) koristi ovu zastavicu za uklanjanje modula koji nisu korišteni u određenom vremenskom razdoblju - obično jednu minutu.

-L , - zaključavanje

Koristite jato (2) kako biste spriječili istodobno opterećenje istog modula.

-m , - mapu

Izradu karte opterećenja na stdout, što olakšava ispravljanje modula u slučaju panike jezgre.

-n , -noload

Dummy runs, učinite sve osim učitavanja modula u kernel. Ako to zahtijeva -m ili -O , pokrenuti će proizvesti mapu ili blob datoteku. Budući da se modul ne učita, prava adresa opterećenja jezgre je nepoznata pa se karta i blob datoteka temelje na proizvoljnoj adresi opterećenja od 0x12340000.

-o modul_name , --name = modul_name

Izričito navedite modul, umjesto da se dobije naziv iz naziva baze datoteke izvornog objekta.

-O blob_name , --blob = blob_name

Spremite binarni objekt u blob_name . Rezultat je binarni blob (nema zaglavlja ELF-a) koji prikazuju točno ono što se učitava u kernel nakon manipulacije i premještanja dijela. Opcija -m preporučuje se da biste dobili mapu objekta.

-p , -probe

Provjerite modul da biste vidjeli može li se uspješno učitati . To uključuje pronalaženje objektne datoteke na putu modula, provjeru brojeva verzije i rješavanje simbola. Ne provjerava preseljenja, niti stvara mapu ili blob datoteku.

-P prefiks , --prefix = prefiks

Ova se opcija može koristiti s modulima s verzijama za SMP ili bigmem kernel, jer takvi moduli imaju dodatni prefiks dodan u njihovim simbolima. Ako je kernel izgrađen s verzijama simbola, insmod će automatski izvući prefiks iz definicije "get_module_symbol" ili "inter_module_get", od kojih jedan mora postojati u bilo kojem kernelu koji podržava module. Ako kernel nema verzije simbola, ali je modul izgrađen s verzijama simbola, korisnik mora dostaviti -P .

-q , -quiet

Ne ispišite popis nijednih neriješenih simbola. Nemojte se žaliti zbog neusklađenosti verzije. Problem će se odraziti samo u izlazu statusa insmoda .

-r , - korijen

Neki korisnici sastavljaju module pod nekorisnim useridom, a zatim instaliraju module kao root. Taj proces može ostaviti module u vlasništvu ne-root korisnika, iako je direktorij modula u vlasništvu root-a. Ako je ne-root korisnički identifikator ugrožen, uljez može prebrisati postojeće module u vlasništvu tog korisnika i koristiti ovu izlaganju za podizanje sustava do korijenskog pristupa.

Prema zadanim postavkama, modutils će odbiti pokušaj korištenja modula koji nije u vlasništvu root-a. Određivanje -r će prebaciti provjeru i omogućiti rootu da učita module koje nisu u vlasništvu root-a. Napomena: zadana vrijednost za provjeru korijena može se promijeniti prilikom konfiguriranja moduta.

Upotreba -r da biste onemogućili provjeru korijena ili postavljanje zadane postavke na "ne provjeravajte korijen" u vrijeme konfiguracije predstavlja veliku izloženost sigurnosti i nije preporučljiva.

-s , - syslog

Izlazite sve do syslog (3) umjesto terminala.

-S , -kallsyms

Snažiti učitani modul da ima klesyms podataka, čak i ako kernel ne podržava. Ova je opcija za male sustave gdje je kernel učitan bez klesyms podataka, ali odabrani moduli trebaju kallsyms za ispravljanje pogrešaka. Ova je opcija zadana na Red Hat Linuxu.

-v , - verbose

Budite oprezni.

-V , --verzija

Prikaz inačice insmoda .

-X , - izvoz ; -x , - neizvoz

Učinite i ne izvezite sve vanjske simbole modula. Zadano je da se simboli izvoze. Ova je opcija učinkovita samo ako modul ne eksplicitno izveze vlastitu kontroliranu tablicu simbola i stoga je obustavljen.

-Y , -ksymoops ; -y , noksymoops

Učinite i ne dodajte ksymoops simbole ksyms. Ovi simboli upotrebljavaju ksymoops kako bi omogućili bolje uklanjanje pogrešaka ako u ovom modulu postoji opcija Oops. Zadana je definicija ksymoops simbola. Ova je opcija neovisna o opcijama -X / -x .

ksymoops simboli dodaju oko 260 bajta po učitanom modulu. Ako niste doista kratko na prostoru kernela i pokušavate smanjiti ksime na svoju minimalnu veličinu, uzmite zadanu postavku i preciznije ispravite Oops debugging. ksymoops simboli su potrebni za spremanje perzistentnih podataka modula.

-N , - samo numericki

Samo provjerite brojčani dio verzije modula prema verziji kernela, tj. Ignorirajte EXTRAVERSION prilikom odlučivanja je li modul pripadao kernelu. Ta se oznaka automatski postavlja za kernel 2.5 dalje, to je izborno za ranije zrna.

Parametri modula

Neki moduli prihvaćaju parametre učitavanja kako bi prilagodili svoj rad. Ovi parametri su često I / O portovi i IRQ brojevi koji se razlikuju od stroja do stroja i ne mogu se odrediti s hardvera.

U modulima izgrađenim za kernele serija 2.0, bilo koji cijeli broj ili simbol pokazivača znakova može se tretirati kao parametar i modificirati. Počevši od jezgri serije 2.1, simboli su izričito označeni kao parametri tako da se mogu mijenjati samo određene vrijednosti. Nadalje, navedene su informacije o vrsti za provjeru vrijednosti dobivene u vrijeme punjenja.

U slučaju cijelih brojeva, sve vrijednosti mogu biti u decimalnom, oktalnom ili heksadecimalnom la C: 17, 021 ili 0x11. Elementi polja određeni su slijed odvojeni zarezima. Elementi se mogu preskočiti izostavljanjem vrijednosti.

U modulima serije 2.0, vrijednosti koje ne počinju s brojem smatraju se nizovima. Počevši od 2.1, informacije tipa parametra označavaju hoće li interpretirati vrijednost kao niz. Ako vrijednost započne s dvostrukim navodnicima ( " ), niz se tumači kao u C, escape sekvenci i sve. Imajte na umu da iz prompta ljuske, same citate moraju biti zaštićene od interpretacije ljuske.

GPL licencirani moduli i simboli

Polazeći od kernela 2.4.10, moduli trebaju imati niz licenci, definiran pomoću MODULE_LICENSE () . Nekoliko grupa se priznaje kao GPL kompatibilan; bilo koji drugi licenčni niz ili bez ikakve licence znači da se modul tretira kao vlasnik.

Ako kernel podržava / proc / sys / kernel / zaraženu zastavicu, insmod će OR zaraženu zastavicu označiti s '1' prilikom učitavanja modula bez GPL licence. Upozorenje se izdaje ako kernel podržava zagađenje i modul se učita bez licence. Upozorenje je uvijek izdano za module koji imaju MODULE_LICENSE () koji nije kompatibilan s GPL-om, čak i na starijim jezgrama koji ne podržavaju zagađenje. To smanjuje upozorenja kada se na starijim jezgrama koriste novi modutils.

insmod -f (sila) način će ILI zaražena zastava s '2' na jezgrama koja podržava zagađenje. Uvijek šalje upozorenje.

Neki razvojni programeri kernela zahtijevaju da simboli koji se izvoze prema njihovom kodu koriste samo moduli s licencom koja je kompatibilna s GPL-om. Ti simboli izvoze EXPORT_SYMBOL_GPL umjesto uobičajenog EXPORT_SYMBOL . Samo simboli GPL-a koji izvoze kernel i drugi moduli vidljivi su samo modulima s licencom koja je kompatibilna s GPL-om, a simboli se pojavljuju u / proc / ksyms s prefiksom ' GPLONLY_ '. insmod zanemaruje GPLONLY_ prefiks na simbolima tijekom učitavanja GPL licenciranog modula tako da modul samo upućuje na normalni naziv simbola bez prefiksa. GPL-ovi simboli nisu dostupni samo za module bez GPL kompatibilne licence, što uključuje module bez licence.

Ksymoops pomoć

Pomoć pri uklanjanju pogrešaka kernela Ups kada koristite module, insmod zadane dodavanjem nekih simbola u ksime, pogledajte opciju -Y . Ti simboli počinju s __insmod_modulename_ . Naziv modula potreban je kako bi simboli bili jedinstveni. Pravilo je učitavanje istog objekta više puta u različitim nazivima modula. Trenutno definirani simboli su:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

objectfile je naziv datoteke s kojeg je učitan objekt. To osigurava da ksymoops može odgovarati kodu na ispravan objekt. mtime je posljednja izmijenjena vremenska oznaka na toj datoteci u hex, nula ako stat failed. verzija je verzija jezgre za koju je modul sastavljen, -1 ako nijedna verzija nije dostupna. _O simbol ima istu početnu adresu kao zaglavlje modula.

__insmod_modulename_Ssectionname_Llength

Ovaj se simbol pojavljuje na početku odabranih odjeljaka ELF, trenutno .text, .rodata, .data, .bss i .sbss. Prikazuje se samo ako odjeljak ima veličinu koja nije nula. naziv odjeljka je naziv odjeljka ELF, dužina je duljina odjeljka u decima . Ovi simboli pomažu ksymoops adresama karata na odjeljke kada nema simbola dostupnih.

__insmod_modulename_Ppersistent_filename

Dostupna je samo insmod izrađen ako modul ima jedan ili više parametara označenih kao uporni podaci i naziv datoteke za spremanje upornih podataka (vidi -e , gore).

Drugi problem s kernelom za ispravljanje pogrešaka Oops in modules je taj da se sadržaj / proc / ksyms i / proc / moduli mogu izmjenjivati ​​između Oops i kada obradite log datoteku. Da bi se prevladao taj problem, ako postoji direktorij / var / log / ksymoops tada insmod i rmmod će automatski kopirati / proc / ksyms i / proc / module u / var / log / ksymoops s prefiksom datuma +% Y% m % H% d% M% S`. Administrator sustava može prepoznati ksymoops koje snimke datoteka koriste za otklanjanje pogrešaka u vezi s prekidima. Nema prebacivanja za onemogućavanje ove automatske kopije. Ako ne želite da se to dogodi, nemojte stvarati / var / log / ksymoops . Ako taj direktorij postoji, trebao bi biti u vlasništvu root-a i biti način rada 644 ili 600 i trebali biste raditi ovu skriptu svaki dan ili na taj način. Skripta u nastavku instalirana je kao insmod_ksymoops_clean .

Osnovne informacije koje treba znati

IME

insmod - instalirajte modul opterećenog kernela

SINOPSIS

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o module_name ] [-O blob_name ] [-P prefiks ] modul [ simbol = vrijednost ...]