Ядро - это базовая часть ОС. В 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
Если все прошло без ошибок, перезагружаемся. Система загрузится уже с новым ядром.
Комментариев нет:
Отправить комментарий