При использовании 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.