Kerneld
Henrik Storner
kerneld - фича ядра , появившаяся начиная с версии 1.3 (Bjorn Ekwall), которая автоматически загружает
такие модули ядра , как драйвера устройств , сетевые драйвера , не используя при этом команды
modprobe или insmod.
kerneld состоит из 2-х основных компонентов - демона ядра и демона пользователя.
Преимущество этой модели в том , что если например необходимо построить несколько систем ,
которые незначительно отличаются друг от друга , то можно построить одно ядро с набором модулей
вместо того , чтобы строить несколько различных ядер .
Модули легче тестировать - не нужно перезагружать систему.
Эта модель ядра более экономно использует память.
Для того , чтобы эта модель работала , нужно взять соответствующий пакет , распаковать исходники
и запустить make install . При этом в каталог /sbin должны лечь утилиты :
genksysm, insmod, lsmod, modprobe, depmod, kerneld.
Далее , рекомендуется в start-up скрипт /etc/rc.d/rc.S(для Slackware) или /etc/rc.d/rc.sysinit
(для Debian, RedHat, Mandrake) прописать следующее :
# Start kerneld
if [ -x /sbin/kerneld ]
then
/sbin/kerneld
fi
# Update kernel-module dependencies file
if [ -x /sbin/depmod ]
then
/sbin/depmod -a
fi
Утилита depmod строит список всех доступных модулей , проверяет зависимости между ними
и предупреждает kerneld о том , какие модули должны быть загружены раньше .
Затем необходимо откомпилировать ядро с новыми опциями .
При выполнении make xconfig следующий диалог :
Enable loadable module support (CONFIG_MODULES) [Y/n/?] Y
Kernel daemon support (CONFIG_KERNELD) [Y/n/?] Y
Некоторые драйвера , такие как hard-disk driver и root filesystem,жестко встроены в ядро
и не могут быть подгружаемыми модулями .
Компиляция Kernel Image выполняется путем
make zImage
и получением файла
arch/i386/boot/zImage
(Яковлев С: что,кстати,не факт - для асп 9.2 это файл /boot/vmlinuz-2.4.22-1.2154.nptl.asp)
Теперь давайте посмотрим,как работает kerneld . Выполним команду :
ps ax
На асп 9.2 я получил вывод - первые несколько строк :
PID TTY STAT TIME COMMAND
1 ? S 0:04 init [5]
2 ? SW 0:00 [keventd]
3 ? SW 0:00 [kapmd]
4 ? SWN 0:00 [ksoftirqd/0]
6 ? SW 0:00 [bdflush]
5 ? SW 0:05 [kswapd]
7 ? SW 0:00 [kupdated]
8 ? SW 0:00 [mdrecoveryd]
17 ? SW 0:01 [kjournald]
Работу kerneld можно посмотреть на примере флоппи - выполнив команду
mdir a:
мы получим информацию о дискете - это есть пример работы floppy driver .
Теперь , запустив команду
/sbin/lsmod
мы обнаружим новую строку в списке :
floppy 11 0 (autoclean)
"(autoclean)" означает , что модуль будет автоматически удален по истечению определенного
времени , если не используется . При его работе задействовано 11 страниц памяти - 44 кб.
Демон kerneld может контролировать следующие типы драйверов :
* a block-device driver
* a character-device driver
* a binary format
* a tty line discipline
* a filesystem
* a network device
* a network service (e.g. rarp)
* a network protocol (e.g. IPX)
Он сканирует файл /etc/conf.modules (в разных системах этот файл может называться по-разному).
В этом файле 2 типа ссылок - конкретные пути до модулей и алиасы.
Можно выполнить команду
/sbin/modprobe -c | grep -v '^path' /etc/conf.modules
Если выполнить команду
modprobe -c
получим список всех модулей , которые контролируются kerneld.
<>br
Для поддержки модулей бинарного формата в /etc/conf.modules есть строки типа
alias binfmt-264 binfmt_aout # pure executable (NMAGIC)
alias binfmt-267 binfmt_aout # demand-paged executable (ZMAGIC)
alias binfmt-204 binfmt_aout # demand-paged executable (QMAGIC)
для загрузки модуля , который определяет формат бинарного модуля.
Такие сетевые протоколы , как IPX, AppleTalk, AX.25 , могут быть загружены как модули .
К файловым относится например модуль isofs , который отвечает за файловую систему CD-ROM.
Иногда простой загрузки модуля нелостаточно , требуется дополнительная настройка.
Так , команда
post-install sound /usr/local/bin/setmix -f /etc/volume.conf
загружает дополнительные конфиг-настройки с помощью команды post-install
Существует утилита kdstat , с помощью которой можно отдебажить работу kerneld и распечатать
запросы , которые он выполняет во время своей работы .
|
|