
Операционная система FreeBSD по умолчанию использует ядро GENERIC. Эта стандартная конфигурация используется для поддержки большого количества аппаратных средств из коробки. Компиляция пользовательского ядра, в свою очередь, позволяет повысить безопасность, увеличить функциональность и улучшить производительность сервера.
Для этого FreeBSD использует две ветки кода: стабильную и текущую. Стабильная ветка – это последний релиз кода, готовый к производству. Текущая ветка – это последний релиз кода от команды разработчиков, который предоставляет передовые функции, но при этом более уязвим к ошибкам и нестабильностям системы. Теперь можно приступать к настройке ядра системы.
Согласно конвенции об именах конфигурационных файлов ядра, имя ядра должно записываться в верхнем регистре. В данном руководстве этот файл будет называться EXAMPLE. Настройки ядра хранятся в каталоге /usr/src/sys/architecture/conf; допустим, используется архитектура AMD64.
Откройте конфигурационный каталог:
|
1 |
cd /usr/src/sys/amd64/conf |
Создайте файл EXAMPLE и откройте его для редактирования в любом текстовом редакторе (в данном случае используется ее):
|
1 |
sudo ee EXAMPLE |
Ядро GENERIC поддерживает огромное количество различной аппаратуры; ядро EXAMPLE поддерживает только оборудование, необходимое для запуска сервера, все стандартные и ненужные устройства удалены. Также EXAMPLE поддерживает фаервол для фильтрации пакетов (pf), шейпинг трафика (altq), шифрование файловой системы (geom_eli) и безопасность IP (IPsec).
Сборка и установка ядра
Создав пользовательские конфигурации ядра, нужно собрать и перекомпилировать его.
Вернитесь в каталог /usr/src и выполните команду make buildkernel, используя новый конфигурационный файл:
cd /usr/src
sudo make buildkernel KERNCONF=EXAMPLE
Это может занять некоторое время в зависимости от объёма ресурсов сервера (в среднем сервер в 1GB компилируется 90 минут).
После завершения перекомпиляции установите новое ядро:
sudo make installkernel KERNCONF=EXAMPLE
Затем перезапустите систему.
sudo shutdown -r now
После этого сервер отключит текущие сервисы, синхронизирует диски и обновит ядро.
После перезагрузки сервера войдите в систему. При помощи следующей команды убедитесь, что конфигурационный файл ядра используется системой.
sysctl kern.conftxt | grep ident
На экране должен появиться такой результат:
ident EXAMPLE
Настройка и перекомпиляция ядра выполнена успешно.
Можно чуть по другому…
2. Исходные коды системы должны быть установлены.
По-умолчанию, устанавливается ядро GENERIC, это стандартное ядро, построено, чтобы без проблем работать на большинстве аппаратных конфигураций, от него и будем отталкиваться. Заходим в папку с конфигурационными файлами ядер и копируем конфигурационный файл ядра GENERIC в файл с новым именем:
|
1 2 3 4 |
server# cd /usr/src/sys/`uname -p`/conf/ server# pwd /usr/src/sys/i386/conf server# cp GENERIC SERVER |
Далее редактируем полученный файл SERVER в текстовом редакторе, новичкам будет проще использовать редактор ee.
|
1 |
server# ee SERVER |
В числе необходимых изменений — только параметр ident, это название нового ядра. Для увеличения производительности нового можно закомментировать/удалить строчки с заведомо неиспользуемым оборудованием, неизвестные опции лучше не трогать. Для начала попробуйте только убрать поддержку IPv6.
Далее, ядро нужно собрать, данный процесс может занимать длительное время, в зависимости от аппаратной конфигурации вашей системы. Делается это следующими командами.
|
1 2 |
server# cd /usr/src/ server# make buildkernel KERNCONF=SERVER |
После этого, собранное ядро нужно инсталлировать:
|
1 |
server# make installkernel KERNCONF=SERVER |
И перезагрузиться:
|
1 |
server# shutdown -r now |
Если система не загружается с новым ядром, то в меню загрузки нужно выбрать пункт 6 "Escape to loader prompt" и ввести в приглашении загрузчика boot kernel.old. Система загрузится с предыдущим ядром. После этого нужно ещё раз проверить конфигурационный файл и повторить процесс пересборки.
Один комментарий для “FreeBSD перекомпиляция ядра”