.\" Copyright (c) 1996 Free Software Foundation, Inc. .\" This program is distributed according to the Gnu General Public License. .\" See the file COPYING in the kernel source directory. .\" $Id: insmod.8 1.7 Thu, 20 Apr 2000 14:31:49 +1000 kaos $ .\" .TH INSMOD 8 "October 12 1999" Linux "Linux Module Support" .SH NÉV insmod \- betölthető kernel modult tölt be .SH ÁTTEKINTÉS .B insmod [\-fkmpqrsxXvyY] [\-P\ prefix] [\-o\ modul_név] objektum_fájl [\ symbol=value\ ...\ ] .SH LEÍRÁS .B Insmod Betölt egy betölthető kernelmodult a futó kernelbe. .PP Az .B insmod parancs megpróbál hozzáfűzni egy modult a futó kernelhez úgy, hogy feloldja annak minden szimbólumát a kernel exportált szimbólum-táblázatából. .PP Ha az objektum fájl neve kiterjesztés nélkül adott, akkor az .B insmod parancs alapértelmezett alkönyvtárakban fogja keresni a modult. A MODPATH környezeti változó használható ennek felülbírálására. Ha egy modul konfigurációs fájl (pl. /etc/modules.conf) létezik, akkor annak tartalma fogja felülbírálni a MODPATH-ban definiált elérési utakat. .PP A MODULECONF környezeti változó is használható arra, hogy az alapértelmezett /etc/modules.conf -tól (vagy /etc/conf.modules, ez utóbbi használata nem javasolt) eltérő konfigurációs fájlt válasszunk. Ez a környezeti változó az összes fenti definíciót felülbírálja. .SS OPCIÓK .TP .I \-f Megpróbálja betölteni a modult akkor is, ha a futó kernel és a modul kernelverziója nem egyezik meg. .TP .I \-k Az automatikus törlés kapcsolót állítja be a modulban. Ezt a \fBkerneld\fP(8) használja, hogy eltávolítsa az egy ideje nem használt modulokat \(em rendszerint egy perc eltelte után. .TP .I \-m Egy betöltési térképet ír ki, megkönnyítve a modul hibakeresését egy kernelpánik esetén. .TP .I "\-o \fRmodule_name" Expliciten megnevezi a modult ahelyett, hogy az objektum fájl nevéből származtatná. .TP .I \-p Teszteli a modult, hogy sikeresen be lehetne-e tölteni. Ebbe beleértendő az objektum megkeresése a modul-útvonalon, a verziószám ellenőrzése és a szimbólumok feloldása. .TP .I \-q Nem írja ki a feloldhatatlan szimbólumok listáját. Nem panaszkodik verzióeltérésről. A problémát csak az insmod visszatérési értéke jelzi. .TP .I \-r Egyes felhasználók nem root azonosítóval fordítják a modulokat, majd root-ként installálják azokat. Ezen művelet után a modulok tulajdonosa egy nem root felhasználó lesz, még ha a modulokat tartalmazó könyvtár root tulajdonú is. Ha ezt a nem root azonosítót feltörik, a behatoló felülírhatja az általa tulajdonolt létező modulokat, és ezt felhasználhatja root jog szerzésére. .TP .I "" Alapértelmezés szerint a modutils programok visszautasítják olyan modulok használatát, amelyeknek nem root a tulajdonosa. A -r megadása ezt a hibát elnyomja, és megengedi a root-nak, hogy nem root tulajdonosú modulokat töltsön be. .TP .I "" .B A .I -r .B használata komoly biztonsági probléma, és nem ajánlott. .TP .I \-s A terminál helyett mindent a \fBsyslog\fP(3)-ba ír. .TP .I \-v Bőbeszédűbb lesz. .TP .I "\-X, -x" Exportáld (-X), illetve ne exportáld a modul külső szimbólumait. Alapértelmezés szerint a szimbólumokat exportálja. Ez az opció csak akkor hatásos, ha maga a modul nem exportálja explicite a saját szimbólumtábláját, így ez egy ritkábban használt opció. .TP .I "\-Y, -y" Hozzáadja, illetve nem adja hozzá a ksymoops szimbólumokat a ksyms-hez. Ezeket a szimbólomukat a ksymoops program használja, jobb hibakeresést lehetővé téve, ha egy Oops történik a modulban. Alapértelmezés szerint a ksymoops szimbólumok definiálódnak. Ez az opció független a -X/-x opcióktól. .TP .I "" A ksymoops szimbólumok kb. 260 byte-al növelik a betöltött modult. Használd inkább az alapértelmezést és a pontosabb Oops hibakeresés lehetőségét, kivéve ha tényleg kevés a kernelmemória és a ksyms-t próbálod a minimális méretére összehúzni. .TP .I "\-P prefix" Ez az opciót használható verzióval ellátott modulokhoz SMP vagy bigmem kernelek mellé, mivel az ilyen modulok egy extra prefixet tartalmaznak a szimbólumaik nevében. Ha a kernel szimbólum verzióval volt fordítva, akkor az insmod automatikusan felderíti ezt a prefixet a "get_module_symbol" definíciójából, ami minden olyan kernelben létezik, amelyik modulokat támogat. Ha a kernelben nincs modul verzió, de a modul szimbólum verzióval volt fordítva, akkor a felhasználónak meg kell adnia a \-P opciót. .SS "MODUL PARAMÉTEREK" Néhány modul elfogad betöltéskor paramétereket, melyekkel testreszabható a működésük. Ezek a paraméterek gyakran I/O címek és IRQ számok, amelyek gépról-gépre változnak, és nem lehet a hardverből megállapítani. .PP A 2.0-ás sorozatú kernelekhez fordított moduloknál bármilyen egész vagy karakteres mutató szimbólum kezelhető paraméterként és módosítható. A 2.1-es kernelektöl kezdve a paraméter szimbólumok expliciten meg vannak jelölve. Továbbá típusinformációt is tartalmaznak az érték ellenőrzéséhez betöltéskor. .PP Egész típus esetén minden érték lehet decimális, oktális vagy hexadecimális, pl.: 17, 021 vagy 0x11. A tömbelemeket vesszővel elválasztott sorozattal adhatjuk meg; egyes elemek kihagyhatók az érték meg nem adásával. .PP A 2.0-ás sorozatú modulokban azok az értékek, amelyek nem számjeggyel kezdődnek, karakterláncnak tekintendőek. 2.1-től kezdve a paraméter típusa határozza meg azt, hogy az értéket karakterláncként értelmezze-e. Ha az érték macskakörömmel (\fI"\fP) kezdődik, akkor az érték a C nyelv szerint lesz értelmezve, escape-szekvenciákkal, stb. Figyelembe kell venni, hogy héj (shell prompt) értelmezi a macskakörmöt, ezért "meg kell védeni". .SS "KSYMOOPS TÁMOGATÁS" Modulok használata esetén a kernel Oops hibakeresésének megkönnyítésére az insmod alapértelmezésként hozzáad néhány szimbólumot a ksyms-hez, lásd a \fB-Y\fP opciót. Ezek a szimbólumok "\fB__insmod_\fP\fImodulename\fP\fB_\fP"-el kezdődnek. A \fImodulename\fP szükséges ahhoz, hogy egyedileg azonosítsuk a szimbólumokat, és lehetséges ugyanazt az objektumfájlt többször más néven betölteni. A jelenleg definiált szimbólumok .PP __insmod_\fImodulename\fP_O\fIobjectfile\fP_M\fImtime\fP_V\fIversion\fP .PP Az \fIobjectfile\fP a fájl neve, amelyből az objektum betöltődött. Ez biztosítja, hogy a ksymoops egyeztetni tudja a kódot a megfelelő objektummal. \fImtime\fP annak a fájlnak az utolsó módosítás ideje hexadecimális értékben, 0 ha a stat() hibát jelzett. \fIversion\fP a kernel verziója, amelyhez a modult fordították, -1 ha nem nincs verziószám. A _O szimbólumnak ugyanaz a kezdőcíme, mint a modul fejlécének. .PP __insmod_\fImodulename\fP_S\fIsectionname\fP_L\fIlength\fP .PP Ez a szimbólum a kiválasztott ELF szekciók elején jelenik meg, amelyek jelenleg .text, .rodata, .data és .bss. Csak akkor jelenik meg, ha az adott szekciónak nullánál nagyobb a mérete. \fIsectionname\fP az ELF szekció neve, \fIlength\fP a szekció hossza decimálisan. Ezek a szimbólumok segítik a ksymoops-ot olyan szekciók feltérképezésében, ahol nincsenek hozzáférhető szimbólumok. .PP A kernel Oops hibakeresés másik problémája, hogy a /proc/ksyms és a /proc/modules tartalma változhat az Oops és a hiba logjának feldolgozása között. Ennek áthidalására, ha létezik a /var/log/ksymoops könyvtár, akkor insmod és rmmod automatikusan átmásolja a /proc/ksyms és /proc/modules fáljokat a /var/log/ksymoops könyvtárba a `date\ +%Y%m%d%H%M%S` prefix-szel. A rendszer adminisztrátor megmondhatja a ksymoops-nak, hogy melyik "pillanatfelvételt" használja amikor egy Oops-t debuggol. Nincs olyan opció, ami letiltaná ezt az automatikus átmásolást, ha nem akarjuk, hogy megtörténjen, akkor ne hozzuk létre a /var/log/ksymoops könyvtárat. Ha a könyvtár létezik, akkor a tulajdonosa root, és a joga 644 vagy 600 kell hogy legyen, és az alábbi script naponta futtatandó. A script insmod_clean_ksymoops néven található meg. .PP .ne 8 .nf #!/bin/sh # Törli a 2 napnál régebbi ksyms és modules mentéseket. if [ -d /var/log/ksymoops ] then set -e # Biztosítjuk, hogy mindig van legalább egy verzió d=`date +%Y%m%d%H%M%S` cp -a /proc/ksyms /var/log/ksymoops/${d}.ksyms cp -a /proc/modules /var/log/ksymoops/${d}.modules find /var/log/ksymoops -type f -atime +2 -exec rm {} \\; fi .SH LÁSD MÉG \fBrmmod\fP(8), \fBmodprobe\fP(8), \fBdepmod\fP(8), \fBlsmod\fP(8), \fBksyms\fP(8), \fBmodules\fP(2), \fBgenksyms\fP(8), \fBkerneld\fP(8), \fBksymoops\fP(kernel). .SH TÖRTÉNELEM A modul támogatást először Anonymous készítette el. .br A kezdeti Linux változat: Bas Laarhoven .br A 0.99.14-es verzió: Jon Tombs .br Kibővítette: Bjorn Ekwall .br Az eredeti ELF támogatás: Eric Youngdale .br Újraírta a 2.1.17-es kernelhez Richard Henderson .br Bővítés a modutils-2.2.*-hez: Bjorn Ekwall , 1999 márciusa .br Ksymoops támogatás: Keith Owens , 1999 májusa .SH MAGYAR FORDÍTÁS Böszörményi Zoltán .br Narancs v1