NÉV¶
insmod - betölthető kernel modult tölt be
ÁTTEKINTÉS¶
insmod [-fkmpqrsxXvyY] [-P prefix] [-o modul_név]
objektum_fájl [ symbol=value ... ]
LEÍRÁS¶
Insmod Betölt egy betölthető kernelmodult a
futó kernelbe.
Az
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.
Ha az objektum fájl neve kiterjesztés nélkül adott,
akkor az
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.
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.
OPCIÓK¶
- -f
- Megpróbálja betölteni a modult akkor is, ha a
futó kernel és a modul kernelverziója nem egyezik
meg.
- -k
- Az automatikus törlés kapcsolót állítja
be a modulban. Ezt a kerneld(8) használja, hogy
eltávolítsa az egy ideje nem használt modulokat
— rendszerint egy perc eltelte után.
- -m
- Egy betöltési térképet ír ki,
megkönnyítve a modul hibakeresését egy
kernelpánik esetén.
- -o module_name
- Expliciten megnevezi a modult ahelyett, hogy az objektum fájl
nevéből származtatná.
- -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.
- -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.
- -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.
-
- 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.
-
- A -r használata komoly biztonsági
probléma, és nem ajánlott.
- -s
- A terminál helyett mindent a syslog(3)-ba ír.
- -v
- Bőbeszédűbb lesz.
- -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ó.
- -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.
-
- 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.
- -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.
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.
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.
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.
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 (
") 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".
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
-Y
opciót. Ezek a szimbólumok "
__insmod_modulename _"-el kezdődnek. A
modulename 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
__insmod_
modulename_O
objectfile_M
mtime_V
version
Az
objectfile 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.
mtime
annak a fájlnak az utolsó módosítás ideje
hexadecimális értékben, 0 ha a stat() hibát
jelzett.
version 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.
__insmod_
modulename_S
sectionname_L
length
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.
sectionname az ELF szekció neve,
length 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.
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.
#!/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
LÁSD MÉG¶
rmmod(8),
modprobe(8),
depmod(8),
lsmod(8),
ksyms(8),
modules(2),
genksyms(8),
kerneld(8),
ksymoops(kernel).
TÖRTÉNELEM¶
A modul támogatást először Anonymous
készítette el.
A kezdeti Linux változat: Bas Laarhoven <bas@vimec.nl>
A 0.99.14-es verzió: Jon Tombs <jon@gtex02.us.es>
Kibővítette: Bjorn Ekwall <bj0rn@blox.se>
Az eredeti ELF támogatás: Eric Youngdale <eric@aib.com>
Újraírta a 2.1.17-es kernelhez Richard Henderson
<rth@tamu.edu>
Bővítés a modutils-2.2.*-hez: Bjorn Ekwall
<bj0rn@blox.se>, 1999 márciusa
Ksymoops támogatás: Keith Owens <kaos@ocs.com.au>, 1999
májusa
MAGYAR FORDÍTÁS¶
Böszörményi Zoltán <zboszor@mail.externet.hu>
Narancs v1 <narancs1@externet.hu>