Opis jądra Linux-a, jego instalacji itp.: Moduły.
Następna strona
Poprzednia strona
Spis treści
9. Moduły.
Ładowalne moduły jądra mogą zaoszczędzić trochę pamięci i ułatwić
konfigurację. Obszar działania modułów urósł już do tego, że
zawierają one systemy plików, sterowniki do kart Ethernet, do
taśm, do drukarek i wiele innych.
9.1 Instalacja narzędzi modułowych.
Narzędzia te sa dostępne stamtąd, skąd masz źródła jądra. Nazywają
się modutils-x.y.z.tar.gz; wybierz najwyższą wersję równą,
albo mniejszą od wersji twojego jądra. Rozpakuj poleceniem tar
zxvf modutils-x.y.z. Wejdź do stworzonego katalogu i poczytaj
plik README. Wypełnij dokładnie instrukcje na temat instalacji
(jest ona z reguły bardzo prosta: make install lub coś
podobnego). Powinieneś mieć teraz programy: insmod, rmmod,
ksyms, lsmod, genksyms, modprobe i depmod w katalogu /sbin.
Jeśli chcesz przetestować narzędzia z przykładowym sterownikiem
"hw" w insmod; przejrzyj plik INSTALL w tym
katalogu.
insmod ładuje moduł do uruchomionego jądra. Moduły mają z
reguły roszerzenie .o; przykładowy moduł wspomniany wyżej nazywa
się drv_hello.o, a więc aby go załadować, napisz:
insmod drv_hello.o. Aby zobaczyć jakie moduły są
aktualnie używane przez jądro użyj lsmod. Powinien
wyświetlić coś takiego
blah# lsmod
Module: #pages: Usedby:
drv_hello 1
drv_hello jest nazwą modułu, używa jednej strony (4kB) pamięci i
żadne inne moduły nie zależą od niego w tej chwili. Aby usunąć ten
moduł z jądra użyj rmmod drv_hello. Zauważ, że
rmmod chce nazwy modułu a nie pliku. Weź ją z polecenia
lsmod. Inne narzędzia modułowe są opisane w podręczniku
man.
9.2 Moduły dystrybuowane z jądrem.
Jeśli chodzi o wersję 2.0.30 większość sterowników dostępna jest w
postaci modułów. Aby ich użyć, najpierw upewnij się czy nie
skonfigurowałeś ich jako stałe części jądra. To znaczy: nie
odpowiadaj "y" na pytania ich dotyczące podczas konfiguracji, ale
"m" jeśli jest taka możliwość. Po skompilowaniu jądra napisz
make modules i make modules_install. Pierwsze
polecenie skompiluje wszystkie sterowniki wyspecyfikowane jako
moduły, a drugie zainstaluje je w katalogu /lib/modules/x.y.z,
gdzie x.y.z jest wersją jądra. Po zainstalowaniu tych modułów
wejdź do katalogu /lib/modules/x.y.z i napisz modprobe -a,
jeśli masz ten program.
$lsqb;Od tłumacza] Jeśli kompilujesz jądro o wersji takie
samej jak to które używasz obecnie, to na wszleki wypadek przed
poleceniem make modules_install, zrób w katalogu
/lib/modules/ kopię katalogu o nazwie takiej samej jak wersja
obecnego jądra.
Moduły są szczególnie przydatne do systemów plików albo sterowników
urządzeń, których rzadko używasz. Np. jeśli chcesz użyć dyskietki
msdos, to najpierw piszesz insmod /lib/modules/x.y.z/fs/msdos.o
i używasz tej dyskietki. Po skończeniu piszesz rmmod msdos.
Operacja ta zaoszczędza jakieś 50 kB RAM-u - niby nic ale jak się
uzbiera kilka takich sterowników to docenisz tę zaletę. Co do
systemu plików minix to powinien on być zawsze
wkompilowany w jądro na stałe, w razie użycia dyskietki startowej.
Na dyskietkach jest właśnie minix.
------------------------------------------------------------------
Od tłumacza:
Znowu facet skomplikował sprawę.
Jest narzędzie, które zajmuje się za ciebie ładowaniem i usuwaniem
odpowiednich modułów do i z pamięci. Nazywa się kerneld
czyli kernel daemon. Jeśli użyjesz czegoś co wymaga sterownika w
module, kerneld załaduje za ciebie ten moduł, a potem go wyrzuci jak
już przestaniesz tego używać. Aby go użyć musisz odpowiedzieć na pytanie
konfiguracyjne dotyczące kerneld "Kernel daemon support"
"y". Przedtem jeszcze odpowiedz "y" na pytanie "Modules support"
czy jakoś tak, żeby móc w ogóle używać modułów. Po kompilacji
jądra wszystko idzie tak samo jak opisane powyżej. Jeszcze jedno:
jeśli masz dystrybucję RH to sprawdź czy w pliku
/etc/rc.d/rc.sysinit jest uruchamiany /sbin/kerneld.
Jeśli nie, to sprawdź czy uruchamia się tam program depmod.
jeśli też nie to dopisz te linijki:
/sbin/depmod -a
if [ -x /sbin/kerneld ]; then
/sbin/kerneld
fi
za linijką która wygląda mniej więcej tak:
mount -n -o remount,rw /
Jeśli masz Slackware sprawdź czy w pliku /etc/rc.d/rc.M
jest uruchamiany /sbin/kerneld. Jeśli nie, to sprawdź czy uruchamia
się tam program depmod. Jeśli też nie, to dopisz te linijki
/sbin/depmod -a
if [ -x /sbin/kerneld ]; then
/sbin/kerneld
fi
za linijką która wygląda mniej więcej tak:
mount -n -o remount,rw /
Jeśli masz dystrybucję Debian to:
1) sprawdź czy jest plik /etc/init.d/kerneld, jeśli tak to
2) sprawdź czy w /etc/rcX.d/ jest dowiązanie do tego pliku
(będzie to plik SYYkerneld), jeśli jest, to wszystko jest w
porządku. X - numer runlevel-u który standardowo uruchamiasz.
(sprawdź w pliku /etc/inittab linijkę initdefault)
Jeśli któryś z tych warunków jest niespełniony to:
ad 1) załóż plik /etc/init.d/kerneld o treści:
#!/bin/bash
# source function library
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo -n "Starting kerneld "
if [ -f "/sbin/kerneld" ]; then
/sbin/kerneld
/sbin/depmod -a
fi
touch /var/lock/subsys/kerneld
;;
stop)
echo -n "Shutting down kerneld: "
killproc kerneld
rm -f /var/lock/subsys/kernled
echo
;;
*)
echo "Usage: kerneld {start|stop}"
exit 1
esac
exit 0
ad 2) napisz
cd /etc/rcX.d/
ln -s /etc/init.d/kerneld SYYkerneld
YY musi być numerem przed ładowaniem modułów; najlpiej jak
najwcześniej.
------------------------------------------------------------------
Następna strona
Poprzednia strona
Spis treści
Wyszukiwarka
Podobne podstrony:
Kernel HOWTO pl 12 (2)Kernel HOWTO pl 6 (2)Kernel HOWTO pl 4 (2)Kernel HOWTO pl (2)Kernel HOWTO pl 7 (2)Kernel HOWTO pl 5 (2)Kernel HOWTO pl 2 (2)Kernel HOWTO plKernel HOWTO pl 11 (2)Kernel HOWTO pl 1 (2)Kernel HOWTO pl 10 (2)Kernel HOWTO pl 3 (2)Kernel HOWTO pl (3)Kernel HOWTO pl 8 (2)bootdisk howto pl 8PPP HOWTO pl 6 (2)NIS HOWTO pl 1 (2)kernel howto 3 clbigwpagydoy3epnkmic3ys7wlqwsg4rlwwgvq clbigwpagydoy3epnkmic3ys7wlqwsg4rlwwgvqcdrom howto pl 1więcej podobnych podstron