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 ...603 
 2.0-> Linux IP Networking...353 
 Secure Programming for Li...294 
 2.6-> Kernel 2.6.17...226 
 William Gropp...222 
 Kamran Husain...221 
 Robbins 4...218 
 Advanced Bash Scripting G...211 
 Rodriguez 9...197 
 Rodriguez 6...195 
 Ethreal 1...193 
 UML 3...192 
 Стивенс 8...189 
 Daniel Bovet 2...188 
 Steve Pate 1...187 
 Steve Pate 3...186 
 Kamran Husain...184 
 Advanced Bash Scripting G...182 
 Rodriguez 8...179 
 Kernel Notes...176 
 
  01.03.2019 : 2682145 посещений 

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

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

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