Традиционно в FreeBSD использовалось так называемое ``монолитное'' ядро. Это означает,
что ядро - это одна большая программа, которая поддерживает фиксированный набор устройств
и в случае, если необходимо изменить его поведение, требуется сборка нового ядра и
перезагрузка компьютера уже с новым ядром.
На сегодняшний день FreeBSD быстро продвигается к модели, в которой большая часть
функциональности содержится в модулях, которые могут быть при необходимости динамически
загружены и выгружены из ядра. Это позволяет ядру использовать устройства, которые
``внезапно'' появились в системе (например, устройства PCMCIA в лэптопе) или добавлять
новую функциональность в ядро, которая не была необходима в момент первоначальной сборки
ядра. Такой подход известен как модульность ядра.
Несмотря на это, всё ещё иногда бывает необходимо, чтобы некоторая функциональность
была вкомпилирована в ядро статически. В некоторых случаях это продиктовано тем, что эта
функциональность настолько сильно привязана к ядру, что не может быть динамически
загружаемой. В других случаях это может быть просто потому, что никто не уделил время
написанию динамически загружаемого модуля для этой функциональности.
Сборка собственного ядра - один из наиболее важных ритуалов, через который должен
пройти практически любой пользователь BSD. Несмотря на длительность этого процесса, ваша
FreeBSD останется только в выигрыше. В отличие от ядра GENERIC,
которое должно поддерживать широкий спектр аппаратного обеспечения, собственное ядро
содержит поддержку аппаратного обеспечения только вашего компьютера. Это может давать следующие плюсы:
-
Меньшее время загрузки. Поскольку ядро будет пытаться определить только то аппаратное
обеспечение, которое установлено в вашем компьютере, время, которое потребуется системе
для загрузки, может значительно уменьшиться.
-
Уменьшение использования памяти. Собственное ядро часто использует меньше памяти, чем
ядро GENERIC, что очень важно, поскольку ядро всегда находиться
в физической памяти. Именно по этой причине собственное ядро особенно полезно при
использовании систем с малым объемом оперативной памяти.
-
Поддержка дополнительного аппаратного обеспечения. Собственное ядро позволяет вам
добавить поддержку таких устройств, поддержка которых отсутствует в ядре GENERIC.