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 
 5.x 
 6.x 
 Интервью 
 Kernel
 HOW-TO 1
 Ptrace
 Kernel-Rebuild-HOWTO
 Runlevel
 Linux daemons
 FAQ
NEWS
Последние статьи :
  Тренажёр 16.01   
  Эльбрус 05.12   
  Алгоритмы 12.04   
  Rust 07.11   
  Go 25.12   
  EXT4 10.11   
  FS benchmark 15.09   
  Сетунь 23.07   
  Trees 25.06   
  Apache 03.02   
 
TOP 20
 Linux Kernel 2.6...5175 
 Trees...951 
 Максвелл 3...877 
 Go Web ...832 
 William Gropp...816 
 Ethreal 3...792 
 Gary V.Vaughan-> Libtool...782 
 Ethreal 4...776 
 Rodriguez 6...771 
 Ext4 FS...766 
 Clickhouse...765 
 Steve Pate 1...762 
 Ethreal 1...747 
 Secure Programming for Li...737 
 C++ Patterns 3...724 
 Ulrich Drepper...705 
 Assembler...699 
 DevFS...670 
 Стивенс 9...657 
 MySQL & PosgreSQL...639 
 
  01.01.2024 : 3621733 посещений 

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

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

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