Site icon 8HOST.COM

Настройка и перекомпиляция ядра FreeBSD 10.1

Операционная система FreeBSD 10.1 по умолчанию использует ядро GENERIC. Эта стандартная конфигурация используется для поддержки большого количества аппаратных средств из коробки. Компиляция пользовательского ядра, в свою очередь, позволяет повысить безопасность, увеличить функциональность и улучшить производительность сервера.

Для этого FreeBSD использует две ветки кода: стабильную и текущую. Стабильная ветка – это последний релиз кода, готовый к производству. Текущая ветка – это последний релиз кода от команды разработчиков, который предоставляет передовые функции, но при этом более уязвим к ошибкам и нестабильностям системы. В данном руководстве используется стабильная ветка кода.

Это руководство покажет, как выполнить пользовательскую компиляцию ядра FreeBSD.

Требования

Для выполнения руководства нужно предварительно настроить сервер FreeBSD 10.1. Чтобы получить инструкции по начальной настройке сервера FreeBSD, читайте статью «Начало работы с FreeBSD 10.1».

1: Загрузка исходного кода ядра

Сначала нужно загрузить исходный код операционной системы.

FreeBSD, как и многие другие дистрибутивы UNIX, предоставляет публичный доступ к своему коду для скачивания и модификации. Для того, чтобы перекомпилировать ядро, сначала нужно скачать исходный код из системы контроля версий FreeBSD.

Для хранения кодов команда FreeBSD использует репозиторий Subversion, потому для начала нужно установить бинарный порт Subversion.

sudo pkg install subversion

По умолчанию система FreeBSD использует оболочку tcsh, которая использует внутреннюю хэш-таблицу команд в $PATH. После установки Subversion нужно выполнить команду rehash, благодаря которой система повторно читает конфигурационные файлы.

rehash

Теперь найдите копию последней стабильной ветки в каталоге /usr/src.

sudo svn co https://svn0.us-east.FreeBSD.org/base/stable/10 /usr/src

Возможно, система предложит принять сертификат сервера. Чтобы принять его, введите p, убедившись, что контрольная сумма файла (или fingerprint) совпадает с суммой, указанной внизу этой страницы.

2: Пользовательская настройка ядра

Теперь можно приступать к настройке ядра системы.

Согласно конвенции об именах конфигурационных файлов ядра, имя ядра должно записываться в верхнем регистре. В данном руководстве этот файл будет называться EXAMPLE. Настройки ядра хранятся в каталоге /usr/src/sys/architecture/conf; допустим, используется архитектура AMD64.

Откройте конфигурационный каталог:

cd /usr/src/sys/amd64/conf

Создайте файл EXAMPLE и откройте его для редактирования в любом текстовом редакторе (в данном случае используется ее):

sudo ee EXAMPLE

По этой ссылке можно найти пример конфигураций. Скопируйте и вставьте код в файл EXAMPLE, а затем сохраните и закройте его.

Ядро GENERIC поддерживает огромное количество различной аппаратуры; ядро EXAMPLE поддерживает только оборудование, необходимое для запуска сервера, все стандартные и ненужные устройства удалены. Также EXAMPLE поддерживает фаервол для фильтрации пакетов (pf), шейпинг трафика (altq), шифрование файловой системы (geom_eli) и безопасность IP (IPsec).

Примечание: Подробнее об опциях можно прочесть в документации FreeBSD. Попробуйте самостоятельно написать код для ядра.

3: Сборка и установка ядра

Создав пользовательские конфигурации ядра, нужно собрать и перекомпилировать его.

Вернитесь в каталог /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

Настройка и перекомпиляция ядра выполнена успешно.