Как kerneld определяет, какой модуль загружать?

Как kerneld определяет, какой модуль загружать?

Несмотря на то, что kerneld содержит в себе встроенную информацию о наиболее распространенных типах модулей, иногда возникает ситуация когда kerneld не будет знать, как обработать запрос ядра. Это бывает в том случае, когда запрос идет к устройствам типа CD-ROM или сетевых плат, и существует несколько модулей, которые можно загрузить.

Запрос, который kerneld получает от ядра, приходит при обращении к одному из следующих пунктов:

kerneld определяет, какой модуль должен быть загружен, просматривая файл /etc/conf.modules [1] Существует два вида строк в этом файле: пути (где находятся файлы модулей), и алиасы (aliases) (какие модули для чего предназначены). Если у вас еще нет этого файла, его можно создать при помощи команд

  /sbin/modprobe -c | grep -v '^path' /etc/conf.modules

Если вы хотите добавить еще один путь к стандартным, вы должны также включить все стандартные пути, так как директива path в файле /etc/conf.modules заменит все известные по умолчанию пути!

Обычно нет необходимости вручную добавлять какие-либо пути, так как встроенного набора путей достаточно для "обычных" настроек (и не совсем обычных...), это точно!

С другой стороны, если же вы хотите просто добавить псевдоним или директиву options (опции), то ваши новые строчки в /etc/conf.modules будут добавлены к тому, что уже известно modprobe. Если вы хотите переопределить псевдоним или опции, ваши новые строки в /etc/conf.modules,

Формат кода программы (Binary formats)

Форматы кода обрабатываются почти также. Когда бы вы ни пытались запустить программу, формат которой неизвестен ядру, kerneld получает запрос на binfmt-xxx, где xxx - это номер вида кода, определенный из нескольких первых байтов кода. Таким образом, строка настройки kerneld, для поддержки загрузки модуля binfmt_aout для формата программ ZMAGIC (a.out), будет следующая:

  alias binfmt-267 binfmt_aout

так как магическое число (magic number) (см. /etc/magic) для формата ZMAGIC - 267. (Если вы внимательно рассмотрите /etc/magic, вы увидите число 0413, но числа в /etc/magic находятся в восьмеричном формате, kerneld использует десятичные, а восьмеричное 0413 = десятичному 267). На самом деле существует три слегка отличающихся варианта кода программ a.out (NMAGIC, QMAGIC и ZMAGIC), поэтому для полной поддержки модуля binfmt_aout необходимы три строки:

  alias binfmt-264 binfmt_aout  # обычная запускаемая программа (executable)(NMAGIC)
  alias binfmt-267 binfmt_aout  # запускаемая программа c подгрузкой страниц (demand-paged)(ZMAGIC)
  alias binfmt-204 binfmt_aout  # запускаемая программа c подгрузкой страниц (demand-paged)(QMAGIC)

Форматы кода a.out, Java и iBCS распознаются kerneld автоматически, без какой либо дополнительной настройки.

Примечания

[1]

В некоторых дистрибутивах этот файл называется modules.conf



Наш баннер
Вы можете установить наш баннер на своем сайте или блоге, скопировав этот код:
RSS новости