Search     or:     and:
 LINUX 
 Language 
 Kernel 
 Package 
 Book 
 Test 
 OS 
 Forum 
 iakovlev.org 
 Kernels
 Boot 
 Memory 
 File system
 0.01
 1.0 
 2.0 
 2.4 
 2.6 
 3.x 
 4.x 
 Интервью 
 Kernel
 HOW-TO 1
 Ptrace
 Kernel-Rebuild-HOWTO
 Runlevel
 Linux daemons
 FAQ
NEWS
Последние статьи :
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
  SQL 30.07   
  JFS 10.06   
  B-trees 01.06   
 
TOP 20
 Go Web ...554 
 Steve Pate 3...452 
 Rodriguez 6...422 
 Trees...407 
 TCP 3...385 
 Rodriguez 2...372 
 Rubni-Corbet -> Глав...358 
 Steve Pate 1...347 
 B.Blunden 1...344 
 Daniel Bovet 3...343 
 UML 3...339 
 Стивенс 9...338 
 Robert Love 3...338 
 Robert Love 2...333 
 Максвелл 1...331 
 Максвелл 1...331 
 Mod_perl 2...330 
 Daniel Bovet 4...330 
 Robbins 1...327 
 C++ Templates 1...324 
 
  01.04.2017 : 2166403 посещений 

iakovlev.org

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 и распечатать запросы , которые он выполняет во время своей работы .
Оставьте свой комментарий !

Ваше имя:
Комментарий:
Оба поля являются обязательными

 Автор  Комментарий к данной статье