Skip to main content

Sve o Linux / Unix naredbi: insmod

Python 2 - uvjetne naredbe (if, elif, else) #5 (Lipanj 2025)

Python 2 - uvjetne naredbe (if, elif, else) #5 (Lipanj 2025)
Anonim

Linux / Unix naredba insmod instalira modul koji se može učitati u kernelu koji radi.insmod pokušava povezati modul u pokrenutom kernelu rješavanjem svih simbola iz izvezene tablice simbola kernela.

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

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

Kada se promijeni okolinaUNAME_MACHINE je postavljen, modutils će koristiti vrijednost umjesto polja stroja iz uname () syscall. To se uglavnom koristi prilikom sastavljanja 64-bitnih modula u 32-bitnom korisničkom prostoru ili obratnoUNAME_MACHINE na vrstu modula. Trenutni modutils ne podržavaju puni način križanja modula, on je ograničen na odabir između 32 i 64-bitne verzije arhitekture domaćina.

Opcije

-e persist_name , --ustrajati= 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. Neprekidni podaci čitaju samoinsmod ako je ta opcija prisutna, prema zadanim postavkamainsmod ne obrađuje trajne podatke.

Kao stenografski oblik,-e "" (prazan niz) tumačiinsmod kao vrijednostpersistdir kako je definirano umodules.conf, nakon čega slijedi naziv datoteke modula u odnosu na put traženja modula na kojem je pronađen, bez ikakvog naziva ".gz", ".o" ili ".mod". Akomodules.conf specificira "persistdir ="(tj.persistdir je prazno polje) onda se ovaj stenografski oblik tiho zanemaruje. (Vidjetimodules.conf (5).)

f, --sila

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 nazivi simbola u modulu ne odgovaraju kernelu onda nema načina prisiljavanjainsmod za učitavanje modula.

-h, --Pomozite

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

-k, --autoclean

Postavite auto-čisti zastavicu na modulu. Ta će zastava koristitikerneld(8) za uklanjanje modula koji nisu korišteni u određenom vremenskom periodu - obično jednu minutu.

-L, --lock

Koristitistado(2) kako bi se spriječilo istodobno opterećenje istog modula.

-m, --karta

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 ga zatraži-m ili-O, trčanje ć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 MODULE_NAME , --Ime= MODULE_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 dobiti kartu objekta.

-p, --sonda

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 , --prefiks= 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 ondainsmod automatski će izdvojiti 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, --miran

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

-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. Navođenje -r prebacit će provjeru i dopustiti rootu da učita module koje nisu u vlasništvu root-a.

Bilješka: 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 svesyslog(3) umjesto terminala.

-S, --kallsyms

Učvrstite učitani modulkallsyms podataka, čak i ako kernel ne podržava. Ova je opcija za male sustave gdje se kernel učita bezkallsyms podaci, ali odabrani moduli trebajukallsyms za uklanjanje pogrešaka. Ova je opcija zadana na Red Hat Linuxu.

-v, verbose

Budite oprezni.

-V, --verzija

Prikaz verzije programainsmod.

-X, --izvoz; -x, --noexport

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

Uradite i ne dodajteksymoops simboli na ksime. Ti se simboli koriste zaksymoops kako bi se omogućilo bolje uklanjanje pogrešaka ako u ovom modulu postoji opcija Oops. Zadana postavka je zaksymoopssimboli koji će biti definirani. Ova je opcija neovisna o-X/-x opcije.

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 potrebni su simboli za spremanje stalnih podataka modula.

N, --numeric samo

Samo provjerite brojčani dio verzije modula prema verziji jezgre, tj. Zanemari EXTRAVERSION prilikom odlučivanja je li modul pripadao jezgri. 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 počinje dvostrukim navodnicima ('), niz se tumači kao u C, escape sekvenci i sve. Imajte na umu da iz prompta ljuske, sami citati možda moraju biti zaštićeni od interpretacije ljuske.

GPL licencirani moduli i simboli

Polazeći od kernela 2.4.10, moduli trebaju imati niz licenci, definiran pomoćuMODULE_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žen zastava ondainsmod ili će zaražena zastava s oznakom '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 aMODULE_LICENSE () to nije GPL kompatibilan, č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) ili će 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. Ovi simboli izvoze seEXPORT_SYMBOL_GPL umjesto normalnogEXPORT_SYMBOL, Samo simboli GPL-a koji izvoze kernel i drugi moduli vidljivi su samo modulima s licencom koja je kompatibilna s GPL-om,/ Proc / ksyms s prefiksom 'GPLONLY_'. insmod ignoriraGPLONLY_ predbroj 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ć

Kako bi se pomoglo za uklanjanje pogrešaka kernela Ups kada koristite module,insmod zadane postavke dodavanja nekih simbola u ksime, pogledajteY opcija. Ti simboli počinju s__insmod_ modulename_ , modulename potrebno je napraviti simbole jedinstvenim. 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 sastavljen modul, -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. sectionname je naziv ELF odjeljka, dužina je dužina odjeljka u decima. Ovi simboli pomažu ksymoops adresama karata na odjeljke kada nema simbola dostupnih.

__insmod_ modulename _Ppersistent_ naziv datoteke

Samo stvorioinsmod ako modul ima jedan ili više parametara koji su označeni kao uporni podaci i naziv datoteke za spremanje trajnih podataka (pogledaj-e, gore) je dostupna.

Drugi problem s kvarom za ispravljanje pogrešaka Oops in modules je sadržaj / proc / ksyms i / proc / moduli mogu se mijenjati između opcije Oops i kada obradite datoteku zapisnika. Da bi se prevladao taj problem, tada postoji direktorij / var / log / ksymoopsinsmod irmmod će automatski kopirati / proc / ksyms i / proc / module u / var / log / ksymoops s prefiksom datuma +% Y% m% d% H% 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.

#! / Bin / sh # Izbriši spremljene ksyme i module kojima se ne pristupa u roku od 2 dana ako -d / var / log / ksymoops zatim set -e # Provjerite postoji li barem jedna verzija d = `datum +% Y% m% d% H% M% S ' cp -a / proc / ksyms /var/log/ksymoops/${d}.ksyms cp -a / proc / modules /var/log/ksymoops/${d}.modules pronađi / var / log / ksymoops -type f-vrijeme +2 -exec rm {} ; fi

Osnovne informacije koje treba znati

IME

insmod - instalirajte modul učitavanja kernela

SINOPSIS

insmod -fhkLmnpqrsSvVxXyYN -e persist_name -o MODULE_NAME -O blob_name -P prefiks modul simbol= vrijednost …