Статически соединение раньше было единственным способом загрузить модуль, который является, думают, основная причина к наличию опций как COMPAT_LINUX. Кроме того, до loader
, это раньше было единственным путем к загрузочным модулям, необходимым, чтобы заставить FreeBSD заставлять необходимые драйверы монтировать корневую файловую систему и FreeBSD начальной загрузки. В наше время я не думаю, что существует любое значительное преимущество для статичного соединения в модуле, если это может быть легко загружено во времени выполнения. Я не думаю, что Вы будете видеть любое преимущество в производительности путем статичного соединения поддержки совместимости Linux, но некоторые пользователи все еще клянутся им. Я избежал бы его только из-за неудобства перекомпиляции Ядра для мало ни к какому воспринятому увеличению производительности.
Если вы статически связали все, что вам нужно, вы можете затем просто использовать makeoptions NO_MODULES=yes
, чтобы не собирать ненужные модули.
Этого также можно добиться с помощью MODULES_OVERRIDE
и/или WITHOUT_MODULES
.
Возможность загружать модули во время выполнения - не всегда хорошая вещь. Модуль может быть, например, руткитом.
SECURELEVEL также смягчает эту проблему.
Как и в этих двух случаях, вероятно, любое преимущество может (а некоторые утверждают, что должно) быть достигнуто другим способом.
Лично мне нравится, когда мое ядро похоже на набор правил брандмауэра: Я начинаю с исключения всего, затем добавляю то, что мне нужно, и предотвращаю добавления во время выполнения.
Пока ядро не перекомпилировано, я точно знаю, что поддерживается. Поэтому, если я не скомпилировал какую-то функциональность, например SCTP или NFS, я могу просто игнорировать рекомендации, которые касаются только этих частей. Добавление функциональности требует, чтобы я добавил ее вручную.
С модулями существует множество способов автоматической загрузки модуля: простое использование некоторой функциональности один раз, установка порта, обновление (изменено значение по умолчанию, добавлена новая функциональность) и т.д.
Во всех этих случаях я думаю, что это преимущество - быть вынужденным вручную добавлять функциональность, если, и только если она действительно нужна.