22.05.2017

Обновление ядра FreeBSD

Ядро - это базовая часть ОС. В FreeBSD оно отвечает за управление памятью, управление сетевыми и прочими устройствами,  а также многое другое.

Для чего возникает необходимость пересобрать ядро? В моей практике это  было необходимо для включения поддержки некоторых сетевых карт (например Atheros), поддержки фаеволов и шейперов.

1. Установка и/или обновление исходных кодов.

Для начала, нам нужно установить Subversion или воспользоваться встроенной SVNLite (для FreeBSD 11) Установка Subversion

cd /usr/ports/devel/subversion

make install clean

Обновляем исходные коды

rm -rf /usr/src

svn checkout svn://svn.freebsd.org/base/release/10.2/ /usr/src

или по http

svn checkout http://svn.freebsd.org/base/release/10.2/ /usr/src

Где 

10.2 - версия нашей системы

releng - ветка системы

Посмотреть можно, выполнив команду

grep -A 2 'TYPE="' /usr/src/sys/conf/newvers.sh

Для одной из моих систем вывод такой

TYPE="FreeBSD"

REVISION="10.2"

BRANCH="RELEASE-p28"

2. Редактируем ядро

cd /usr/src/sys/i386/conf

cp GENERIC MY_GENERIC

i386 - тип нашего процессора, смотрим через uname -a

MY_GENERIC - имя нашего нового ядра

Далее редактируем файл настроек ядра. Обязательно нужно изменить строку

ident KERNEL

на

ident  MY_GENERIC

И добавляем необходимые нам параметры.

Например, для поддержки фаерволла PF в ранних версиях ОС необходимо было добавить

device pf

device pflog

device pfsync

Для поддержки ALTQ 

options         ALTQ

options         ALTQ_CBQ        # Class Bases Queuing (CBQ)

options         ALTQ_RED        # Random Early Detection (RED)

options         ALTQ_RIO        # RED In/Out

options         ALTQ_HFSC       # Hierarchical Packet Scheduler (HFSC)

options         ALTQ_PRIQ       # Priority Queuing (PRIQ)

options         ALTQ_NOPCC      # Required for SMP build

Для поддержки ipfw с очередями (шейперами)

options    IPFIREWALL # enables IPFW

options    IPFIREWALL_VERBOSE # enables logging for rules with log keyword

options    IPFIREWALL_VERBOSE_LIMIT=5 # limits number of logged packets per-entry

options    IPFIREWALL_DEFAULT_TO_ACCEPT # sets default policy to pass what is not explicitly denied

options    IPDIVERT # enables NAT

options         DUMMYNET

Для поддержки FastOpen добавляем опцию

options TCP_RFC7413

Данную опцию необходимо включать, если при работе системы встречаются ошибки

setsockopt(21, TCP_FASTOPEN) failed with Operation not permitted

3. Устанавливаем ядро

Выполняем команды:

cd /usr/src (переход в каталог)

make buildkernel KERNCONF=MY_GENERIC

make installkernel KERNCONF=MY_GENERIC

Если все прошло без ошибок, перезагружаемся. Система загрузится уже с новым ядром.

Комментариев нет:

Отправить комментарий