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>