Сборка собственного ядра FreeBSD

При использовании FreeBSD даже в качестве домашнего роутера мне приходится собирать собственное ядро. В настоящее время, в связи с увеличением мощности процессоров, это не занимает много времени. Однако, если в качестве шлюза используются 32-х битные компьютеры, произведенные лидерами индустрии еще в начале века, следует избегать ошибок в конфигурации ядра, чтобы не тратить время на повторные пересборки.

Конечно же, можно собрать ядро на другом компьютере с указанием компилятору архитектуры. А затем тупо перенести его на эту старую тачку. Но все знают, что при сборке ядро «шлифуется и притирается» к конкретному компьютеру.. И работает потом гораздо быстрее и стабильнее ))

Итак, имеем FreeBSD 11.2 32 bit, работающую на шлюзе маленькой конторки. Имеется две сетевых карты, подключенных в интернет через разных провайдеров, а также третья сетевуха, раздающая локальную сеть с доступом в интернет.

Для сборки ядра в первую очередь нужно получить исходные тексты FreeBSD ( это так называемые «сырцы», которые находятся в /usr/src ).
Естественно, у разных версий ОС — свои исходные коды. Смотрим, что у нас за ОСь:

# Определяем версию ОС:
uname -rm
11.2-RELEASE-p4 i386

Обнаруживаем, что здесь установлена 32-х битная FreeBSD 11.2-RELEASE, находим для нее «исходники» на сайте FreeBSD. Нужные исходники лежат здесь ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/11.2-RELEASE/src.txz

# Закачиваем сырцы:
fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/i386/11.2-RELEASE/src.txz
# Распаковываем полученный архив:
tar -C / -xzvf src.txz

Настройки ядра находятся в файле /usr/src/sys/(архитектура|i386|amd64)/conf/(Ваш_конфиг) Создаем новый конфиг из стандартного GENERIC

# Копируем 
cd /usr/src/sys/i386/conf
cp GENERIC Z
# Редактируем наш новый конфиг.
nano Z

В новый конфиг добавляем строки и выключаем ipV6, для этого комментируем опцию #options INET6 :

#  
# Выключаем опции
#cpu            I486_CPU
#cpu            I586_CPU
# Добавляем
#-----begin vps-server.ru
options IPFIREWALL
options IPDIVERT
options IPFILTER
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_NAT
options DUMMYNET
options LIBALIAS
options NETGRAPH
# Если файрвол открытый. Иначе строчку ниже удалить|закомментировать
options IPFIREWALL_DEFAULT_TO_ACCEPT   
options QUOTA
# Два провайдера. Иначе строчку ниже изменить|удалить|закомментировать
options ROUTETABLES=2
 
device          if_bridge
device          tap
#-----end vps-server.ru
# Нужно выключить:
#options        INET6

Компилируем новое ядро:

# Компилируем новое ядро:
cd /usr/src
make -j4 buildkernel KERNCONF=Z
# После сборки ядра копируем текущее, рабочее ядро
# на случай, если с новым ядром "не взлетит..":
cp -r /boot/kernel/ /boot/kernel.good
# Устанавливаем новое ядро.
make installkernel KERNCONF=Z

После установки новое ядро будет находиться в каталоге /boot/kernel, а резервная копия старого ядра будет лежать в /boot/kernel.old.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *