Linux / Unix parancs: insmod

A Linux / Unix parancs insmod telepít egy betölthető modult a futó rendszermagban. Az insmod megpróbálja összekapcsolni egy modult a futó rendszermaggal azáltal, hogy megszünteti az összes szimbólumot a kernel exportált szimbólumtáblájából.

Ha a modulfájlnevet könyvtárak vagy kiterjesztés nélkül adják meg, akkor az insmod néhány szokásos alapkönyvtárban keresi a modult. A MODPATH környezeti változó az alapértelmezést felülbírálhatja. Ha létezik egy modul konfigurációs fájl, például az /etc/modules.conf , felülírja a MODPATH-ban meghatározott útvonalakat.

A MODULECONF környezeti változó egy másik konfigurációs fájlt is kiválaszthat az alapértelmezett /etc/modules.conf fájlból (vagy /etc/conf.modules (elavult)). Ez a környezeti változó felülírja a fenti definíciókat.

Amikor a UNAME_MACHINE környezeti változó be van állítva, a modutils a gép mező helyett az értéket használja az uname () syscall-ből. Ez elsősorban akkor használható, amikor 64 bites modulokat állít össze 32 bites felhasználói területen, vagy fordítva, állítsa az UNAME_MACHINE típust a modulok típusára. A jelenlegi modulok nem támogatják a teljes kör keresztmetszetű modult a modulokhoz, csak a gazdagép 32- és 64-bites verzióinak kiválasztására korlátozódnak.

Lehetőségek

-e persist_name , --persist = persist_name

Megadja, hogy a modullal kapcsolatos állandó adatokat meg lehessen-e olvasni a terhelésről, és be kell írni, amikor a modul ilyen instantiálása ki van töltve. Ezt az opciót figyelmen kívül hagyja, ha a modulnak nincsenek tartós adatai. A tartós adatok csak az insmod által olvashatóak, ha ez az opció jelen van, az insmod alapértelmezés szerint nem feldolgozza a tartós adatokat.

Egy rövidített formanyomtatványként a "" (üres karakterláncot) az " insmod " kifejezést a modules.conf fájlban definiált persistdir értékeként értelmezi, majd a modulnak a modul keresési útvonalához viszonyított fájlnevét, mínusz bármelyik ".gz", ".o" vagy ".mod" után. Ha a modules.conf megadja a " persistdir = " kifejezést (azaz a persistdir egy üres mező), akkor ezt a rövidített szöveget néma figyelmen kívül hagyja. (Lásd modules.conf (5).)

-f , - erő

Kísérlet a modul betöltése akkor is, ha a futó rendszermag és a rendszermag azon verziója, amelyhez a modul össze lett állítva, nem egyeznek meg. Ez csak felülbírálja a rendszermagverzió ellenőrzését, nincs hatása a szimbólumnevek ellenőrzésére. Ha a modulban szereplő szimbólumnevek nem egyeznek a rendszermaggal, akkor nincs mód arra, hogy a modul betöltéséhez insmodot kényszerítsünk.

-h , --segít

Jelenítse meg az opciók összefoglalását, és azonnal lépjen ki.

-k , --autoclean

Állítsa be az auto-clean jelzőt a modulon. Ezt a zászlót a kerneld (8) használja olyan modulok eltávolításához, amelyeket nem használtak bizonyos időtartam alatt - általában egy percig.

-L , --lock

Használja az állományt (2), hogy megakadályozza ugyanazon modul egyidejű terhelését.

-m , --map

Készítsen terhelési térképet a stdouton, megkönnyítve a modul hibakeresését a rendszermag pánik esetén.

-n , - noload

Dummy futni, mindent megtenni, kivéve, ha betölti a modult a rendszermagba. Ha egy -m vagy -O kér, a futtatás térképet vagy blob fájlt hoz létre. Mivel a modul nincs betöltve, a valódi rendszermag betöltési címe ismeretlen, így a térkép és a blob fájl egy 0x12340000 tetszőleges terhelési címen alapul.

-o modul_neve , --name = modul_neve

Pontosan nevezze el a modult, ahelyett, hogy származtatná a nevet a forrás objektumfájl alapnevéből.

-O blob_name , --blob = blob_name

Mentse a bináris objektumot a blob_name-ben . Az eredmény egy bináris blob (nincs ELF fejléc), amely pontosan mutatja, mi történik a rendszermagban a szekció manipuláció és áthelyezés után. Az opció -m ajánlott egy objektum térképet készíteni.

-p , - probe

Vizsgálja meg a modult, hogy láthassa, sikeresen betölthető-e . Ez magában foglalja az objektumfájl megtalálását a modulútvonalon, a verziószámok ellenőrzése és a szimbólumok feloldása. Nem ellenőrzi az áthelyezést, és nem készít térképet vagy blob fájlt.

-P előtag , --prefix = előtag

Ez az opció SMP vagy bigmem rendszermag verziószámú modulokkal használható, mivel ezeknek a moduloknak extra előtagja van a szimbólumnevekben. Ha a rendszermag szimbólumverziókkal lett felépítve, az insmod automatikusan kitölti az előtagot a "get_module_symbol" vagy az "inter_module_get" definícióból, amelyek közül az egyiknek léteznie kell minden olyan rendszermagban, amely támogatja a modulokat. Ha a rendszermagnak nincs szimbólumverziója, de a modul szimbólumverziókkal van felépítve, akkor a felhasználónak kell megadnia a -P-t .

-q , --quiet

Ne nyomtasson ki semmilyen megoldatlan szimbólumot. Ne panaszkodj a verzió eltérése miatt. A probléma csak az insmod kilépési állapotában jelenik meg.

-r , - root

Egyes felhasználók modulokat készítenek egy nem root felhasználóként, majd a modulokat rootként telepítik. Ez a folyamat hagyhatja el a nem root felhasználóként működő modulokat, annak ellenére, hogy a modulok könyvtára a root tulajdonában van. Ha a nem root felhasználói azonosító sérül, az betolakodó felülírhatja az adott felhasználónév tulajdonában levő meglévő modulokat, és ezt az expozíciót a rendszerindításkor root hozzáférésre használhatja.

Alapértelmezés szerint a modutils elutasítja a gyökér nélküli tulajdonlási modult. A -r megadása átkapcsolja a csekket, és engedélyezi a gyökérnek a gyökért nem tulajdonított modulok betöltését. Megjegyzés: a gyökérellenőrzés alapértelmezett értéke módosítható a modutils konfigurálásakor.

A -r használata a gyökérellenőrzés letiltásához vagy az alapértelmezett beállításhoz a "nem gyökércsomag" beállításhoz a konfigurációs idő alatt jelentős biztonsági expozíció, és nem ajánlott.

-s , - syslog

Minden kimenetet a terminál helyett a rendszernek (3).

-S , - küszöbök

A betöltött modul kényszerítése arra, hogy khingyms adatait is megadja , még akkor is, ha a rendszermag nem támogatja. Ez a lehetőség kisebb rendszerek esetén, ahol a rendszermag betöltődik kallsyms adatok nélkül, de a kiválasztott moduloknak kallsyms szükséges hibakeresésre. Ez az opció a Red Hat Linux alapértelmezett beállítása.

-v , --verbose

Legyen szóba.

-V , --verzió

Az insmod verziójának megjelenítése.

-X , --export ; -x , --export

Végezze el és ne exportálja az összes modul külső szimbólumát. Az alapértelmezés szerint a szimbólumok exportálhatók. Ez az opció csak akkor érvényes, ha a modul kifejezetten nem exportál saját ellenőrzött szimbólumtábláját, így elavult.

-Y , -ksymoops ; -y , - noksymoops

A ksymoops szimbólumokat ne vegye ksime-khez. Ezeket a szimbólumokat az ksymoops használja, hogy jobb hibakeresést biztosítson, ha van egy Oops ebben a modulban. Az alapértelmezés az, hogy meg kell határozni az ksymoops szimbólumokat. Ez az opció független a -X / -x opcióktól.

Az ksymoops szimbólumok körülbelül 260 bájtot adnak meg a betöltött modulonként. Hacsak nem vagy nagyon kicsi a rendszermag, és megpróbálják minimalizálni a ksimexeket a minimális méretére, vegye figyelembe az alapértelmezett értéket, és pontosabban ellenőrizze az Oops hibakeresést. ksymoops szimbólumok szükségesek a tartós moduladatok mentéséhez.

-N , - csak számjegyű

Csak ellenőrizzük a modul verziószámát a rendszermag verziójával, azaz figyelmen kívül hagyjuk a EXTRAVERSION-ot, amikor eldöntjük, hogy egy modul egy rendszermaghoz tartozik-e. Ez a jelző automatikusan a 2.5 kernelre van állítva, ez a korábbi kernelekhez opcionális.

Modul paraméterek

Néhány modul elfogadja a betöltési idő paramétereket a működésük testreszabásához. Ezek a paraméterek gyakran az I / O port és az IRQ számok, amelyek gépen és gépen eltérnek, és nem határozhatók meg a hardveren.

A 2.0 sorozatú rendszermagokhoz épített moduloknál bármely egész vagy karaktermutató szimbólum paraméterként kezelhető és módosítható. A 2.1-es sorozatú rendszermagoktól kezdve a szimbólumokat kifejezetten paraméterként jelölik, így csak bizonyos értékek módosíthatók. Ezenkívül a beadási időben megadott értékek ellenőrzése céljából típusinformációkat szolgáltatnak.

Az egész számok esetében minden érték lehet decimális, oktális vagy hexadecimális a la C: 17, 021 vagy 0x11. A tömbelemek vesszővel elválasztva kerülnek sorrendbe. Az elemek kihagyhatók az érték elhagyásával.

A 2.0 sorozatú modulokban az olyan értékek, amelyek nem kezdődnek számmal, húrként tekintendők. A 2.1-es verziótól kezdődően a paramétertípus-információ jelzi, hogy értelmezi-e az értéket karakterláncként. Ha az érték kettős idézőjelekkel ( " ) kezdődik, akkor a karakterláncot úgy értelmezzük, mint a C, escape szekvenciák és mindegyiket. Ne felejtsük el, hogy a shell parancsból szükségessé válhat az idézőjelek védelme a héjértelmezéstől.

GPL Licensed Modules and Symbols

A 2.4.10-es kerneltől kezdve a moduloknak licencfájlnak kell lenniük, a MODULE_LICENSE () függvény segítségével. Számos karakterláncot GPL kompatibilisnek ismerünk el; minden más licencfájl vagy licenc egyáltalán nem jelenti azt, hogy a modult saját tulajdonúnak tekintik.

Ha a rendszermag támogatja a / proc / sys / kernel / zavaros zászlót, akkor az insmod VAGY a zavaros zászlót "1" -el a GPL licenc nélküli modul betöltésekor. Figyelmeztetés kerül kiadásra, ha a rendszermag támogatja a megfertőzést és a modult licenc nélkül tölti be. Figyelmeztetés mindig olyan modulokra vonatkozik, amelyek MODULE_LICENSE () függvényében nem GPL kompatibilisek, még olyan régebbi rendszermagokon is, amelyek nem támogatják a szennyeződést. Ez minimalizálja a figyelmeztetéseket, ha új modutilt használnak a régebbi rendszermagokban.

Az insmod -f (force) mód VAGY a zavaros zászlót a "2" -el a rendszermagokon, amelyek támogatják a megfertőzést. Mindig figyelmeztetést ad ki.

Néhány rendszermag-fejlesztő megköveteli, hogy a kódjuk által exportált szimbólumokat csak GPL-kompatibilis licencekkel rendelkező modulok használják. Ezeket a szimbólumokat EXPORT_SYMBOL_GPL exportálja a szokásos EXPORT_SYMBOL helyett. A rendszermag és más modulok által exportált GPL-szimbólumok csak a GPL-kompatibilis licencekkel rendelkező modulok számára láthatók, ezek a szimbólumok a / proc / ksymsben szerepelnek a " GPLONLY_ " előtaggal. Az insmod figyelmen kívül hagyja a GPLONLY_ előtagot a szimbólumokra a GPL engedéllyel rendelkező modul betöltése közben, így a modul csak az előtag nélküli normál szimbólumnevet jelenti. A GPL csak szimbólumokat nem áll rendelkezésre a GPL-kompatibilis licenc nélküli modulok számára, ez egyáltalán nem engedélyezett modulokat tartalmaz.

Ksymoops Assistance

Segítség a rendszermag hibakeresésében Hoppá a modulok használata esetén az insmod alapértelmezés szerint néhány szimbólumot tartalmaz ksime-khez, lásd a -Y opciót. Ezek a szimbólumok a __insmod_modulename_ paranccsal kezdődnek . A szimbólumok egyediségét a modulnév szükséges. Legális, hogy ugyanazt az objektumot többször is betöltsék különböző modulnevek alatt. Jelenleg a meghatározott szimbólumok a következők:

__insmod_modulename_Oobjectfile_Mmtime_Vversion

objectfile a fájl neve, ahonnan az objektumot töltötte. Ez biztosítja, hogy az ksymoopok a kódot a megfelelő objektumhoz igazítsák. Az mtime a fájl utolsó módosított időbélyege hexon, nulla, ha a stat nem sikerült. a változat a rendszermag verziója, amelyre a modul fordult, -1, ha nincs elérhető verzió. Az _O szimbólumnak ugyanaz a címe, mint a modul fejléce.

__insmod_modulename_Ssectionname_Llength

Ez a szimbólum megjelenik a kiválasztott ELF szakaszok kezdetén, jelenleg .text, .rodata, .data, .bss és .sbss. Csak akkor jelenik meg, ha a szakasz nem nulla méretű. sectionname az ELF szakasz neve, a hossza a szakasz hossza tizedesben. Ezek a szimbólumok segítséget nyújtanak a ksymoops-nak, hogy címeket adjanak a szekciókhoz, ha nincsenek szimbólumok

__insmod_modulename_Ppersistent_filename

Csak az insmod által létrehozott, ha a modul egy vagy több paramétert tartalmaz, amelyek tartós adatokként vannak megjelölve, és a fájlok mentett fájlok (lásd -e , fent).

A másik hiba a debugging kernel Oops modulokban az, hogy a / proc / ksyms és a / proc / modules tartalma megváltozhat a Hoppá és a naplófájl feldolgozásakor. A probléma leküzdéséhez, ha a / var / log / ksymoops könyvtár létezik, akkor az insmod és rmmod automatikusan átmásolják a / proc / ksyms és / proc / modules könyvtárat a / var / log / ksymoops-ra a dátum +% Y% m előtaggal % d% H% M% s`. A rendszergazda meg tudja mutatni a ksymoopokat, amelyek pillanatképfájlokat használnak az Oops hibakeresésekor. Az automatikus másolat letiltására nincs váltás. Ha nem akarja, hogy ez megtörténjen, ne hozzon létre / var / log / ksymoops . Ha ez a könyvtár létezik, akkor a gyökér tulajdonában kell lennie, és 644 vagy 600 módban kell lennie, és minden nap futtatni kell ezt a szkriptet. Az alábbi parancsfájl telepítése insmod_ksymoops_clean .

Alapvető információk a tudáshoz

NÉV

insmod - telepítse a betölthető rendszermag modult

SZINOPSZIS

insmod [-fhkLmnpqrsSvVxXyYN] [-e persist_name ] [-o modul_neve ] [-O blob_name ] [-P prefix ] modul [ szimbólum = érték ...]