В конфигурации по-умолчанию, операционная система FreeBSDвключает в себя несколько десятков модулей ядра, которые расположены в директории /boot/kernel вместе с самим ядром (файлом kernel).
Каждый из модулей предоставляет дополнительные функции, или возможность поддержки новых устройств, которые могут отсутствовать в ядре GENERIC (ядро по-умолчанию).
Загружать и выгружать эти модули может только супер-пользователь (root).
К слову сказать, эти модули имеют расширение *.ko (kernelobject). В произвольный момент времени такой модуль может быть загружен и у нас появится возможность, например, читать нестандартную файловую систему или работать с новым устройством, работа с которым до этого была невозможна.
Для примера рассмотрим такой модуль как «smbfs.ko». Этот модуль предназначен для обеспечения поддержки такой файловой системы, как SMB – основа совместного использования файлов в сетях с Windows. По умолчанию такой поддержки в ядре GENERIC нет.
Абстрактная ситуация – у нас в сети есть сервер на Windows, расшаренную папку которого мы хотим примонтировать к нашей файловой системе на FreeBSD. Для этого добавляем поддержку SMBFS в ядро командой kldload:
# kldload smbfs
Вышеприведённая команда добавит в ядро модуль smbfs.ko, в чём можно убедиться выполнив команду kldstat
Выгрузить модуль из ядра можно командой kldunload
Выгрузка модулей может быть полезна в случаях, если компонент системы ведёт себя нестабильно или потребляет много ресурсов.
Существует способ автоматической загрузки нужных модулей при старте системы. Для этого служит файл /boot/loader.conf который состоит из строк вида
«имямодуля_load=”YES”»
Например «smbfs_load=”YES”»
Если этот способ оказывается неудобным, иногда бывает нужно собирать специальное ядро, включающее в себя функциональные возможности этих модулей. Об этом будет рассказано позднее.
Comments: