Сергей Супрунов
Сборка собственного ядра на сервере – это почти обязательный ритуал для
каждого системного администратора. Сегодня мы поговорим о том, как это делать
по возможности быстро и эффективно.
Плюсы и минусы «стандартного»
подхода
Информацию о том, как собирать собственное ядро, можно найти практически в
любой книге, посвящённой системе FreeBSD. Естественно, есть она и в официальной
документации (в частности, см. Handbook), так что не будем останавливаться на
этом вопросе.
В конфигурационном файле ядра в первую очередь по
устоявшейся традиции отключают все «лишние» устройства. Действительно, какой
смысл собирать в ядре поддержку сетевых карт USB или SCSI-дисков, если их в
сервере нет и в ближайшие годы не планируется? Так что, добавляя поддержку
пакетного фильтра или квот, практически любой системный администратор заодно
пробегает и по стройным рядам device-строк, безжалостно расставляя комментарии
перед теми, которые выглядят подозрительно.
Но одной из особенностей сборки ядра во FreeBSD
является то, что, даже закомментировав в конфигурационном файле строку,
отвечающую за то или иное устройство или опцию, вы всё равно получите их
поддержку в виде модуля. То есть драйвер редко используемого устройства не будет
постоянно занимать место в оперативной памяти, но при необходимости его всегда
можно подгрузить.
Но есть здесь и небольшой недостаток – время на
сборку модулей будет всё равно потрачено. И зачастую даже небольшое изменение
конфигурации ядра требует нескольких часов на пересборку, особенно на не
слишком мощном «железе». Как правило, особых проблем это не создаёт (запустил
сборку и пошёл обедать; да и на вопрос начальства «Чем занимаешься?» всегда
можно честно ответить: «Ядро собираю»). Однако иногда «жаба душит», когда
десятки минут созерцаешь процесс сборки чего-то, что никогда на сервере не
понадобится... Попытаемся решить эту проблему.