Компиляция ядра FreeBSD

Рано или поздно (скорее всего рано 🙂 ) вам понадобится изменить ядро системы. Например включить ipfw, или просто почистить от ненужного мусора. Существует мнение, что это сложно и опасно. Ничего подобного! И Вы в этом сейчас убедитесь…

Рассмотрим весь процесс пересборки ядра:

1. Стандартный файл ядра, с которым устанавливается система, и который содержит настройки, рассчитанные на загрузку ОС, в большинстве конфигураций находится здесь: /sys/i386/conf/GENERIC. Это файл не надо править НИ ПРИ КАКИХ СИТУАЦИЯХ. Для нового ядра нужно скопировать GENERIC в туже папку под другим названием (в моем случае /sys/i386/conf/MYKERN).

cp /sys/i386/conf/GENERIC /sys/i386/conf/MYKERN

2. Теперь давайте его отредактируем, включив IPFW (для примера). Вы можете использовать любой редактор текстовых файлов, который вам больше нравится. Я предпочитаю «ee».

  1. ee /sys/i386/conf/MYKERN

Первое, что надо изменить это параметр «ident GENERIC» на «ident MYKERN». Именно по этому параметру компилятор будет находить требуемый для компиляции конфиг ядра, а не по названию файла и вполне логично делать их одинаковыми (ident и имя файла).

Все изменения (кроме закомментирования ненужного оборудования) я делаю в самом конце файла. И вам советую поступать так же, не будет долгих поисков «И где же я тут правил?». Добавим в конец файла следующие строки:

options IPFIREWALL # включаем поддержку ipfw на уровне ядра options IPDIVERT # включаем поддержку перенаправления пакетов (нужно для NATD)

Вышли с сохранением изменений. Конфиг для компиляции ядра с поддержкой ipfw готов.
[править] Другие полезные опции при сборке ядра

options IPFIREWALL # собственно файрволл options IPFIREWALL_VERBOSE # логгинг пакетов, если в правиле

                                       # написано `log`

options IPFIREWALL_VERBOSE_LIMIT=5 # ограничение логов (повторяющихся) — на

                                         # случай атак типа флудинга
                                         # (я, правда, 100 ставлю)

options IPFIREWALL_FORWARD # перенаправление (форвардинг) пакетов

                                       # например, для прозрачного прокси

options IPDIVERT # если нужен NAT (трансляция адресов) options DUMMYNET # если понадобится ограничивать скорость

                                       # инета пользователям (обычно - да :))

options IPFIREWALL_DEFAULT_TO_ACCEPT # дефолтовое правило (последнее)

                                         # будет разрешающим (во всех других)
                                         # случаях - запрещающее

[править] Сетевое быстродействие

maxusers 512 options NMBCLUSTERS=65535 options NBUF=4096 /sbin/sysctl -w net.inet.tcp.sendspace=131072 /sbin/sysctl -w net.inet.tcp.recvspace=131072
3. Сборка и установка нового ядра.

переходим в каталог /usr/src/:

«# cd /usr/src/»

собираем ядро:

«# make BUILDKERNEL KERNCONF=MYKERN»

вместо MYKERN должен стоять ident вашего конфига устанавливаем ядро:

«# make INSTALLKERNEL KERNCONF=MYKERN»

вместо MYKERN должен стоять ident вашего конфига

Если при выполнении сборки выдана ошибка и сборка остановлена, значит вы допустили ошибки в конфиге. Понятно что их нужно исправить 🙂 И будьте осторожны! Если Вы работаете на удаленной машине, не трогайте сетевые настройки, и не включайте ipfw в закрытый режим, не проверив работоспособность его конфигурации на другой машине.

3б. второй способ (старый)

cd /usr/src/sys/i386/config/ cp GENERIC MYKERNEL /usr/sbin/config MYKERNEL cd ../../compile/MYKERNEL make depend && make make install

Все! Осталось только перезагрузиться: «shutdown -r now»

краткая инструкция по компиляции ядра FreeBSD:

cd /usr/src/sys/i386/conf
mkdir /root/kernel
cp GENERIC NEWKERNEL
ee NEWKERNEL
cp NEWKERNEL /root/kernel
/usr/sbin/config NEWKERNEL
cd ../compile/NEWKERNEL
make depend
make
make install

FreeBSD 6.2

cd /usr/src/sys/i386/conf
mkdir /root/kernel
cp GENERIC NEWKERNEL
ee NEWKERNEL
cp NEWKERNEL /root/kernel
/usr/sbin/config NEWKERNEL
cd ../compile/NEWKERNEL
make cleandepend; make depend
make
make install

опции для ipfw,natd:

options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET
options IPDIVERT
options IPFIREWALL_FORWARD

опции для ipfilter,ipnat,ipsec:

options         INET
options         IPFILTER
options         IPFILTER_LOG
options         IPSEC
options         IPSEC_ESP
pseudo-device   gif

опции для netgraph:

options         NETGRAPH                #netgraph(4) system 
options         NETGRAPH_ASYNC 
options         NETGRAPH_BPF 
options         NETGRAPH_CISCO 
options         NETGRAPH_ECHO 
options         NETGRAPH_ETHER 
options         NETGRAPH_FRAME_RELAY 
options         NETGRAPH_HOLE 
options         NETGRAPH_IFACE 
options         NETGRAPH_KSOCKET 
options         NETGRAPH_L2TP 
options         NETGRAPH_LMI 
# MPPC compression requires proprietary files (not included) 
#options        NETGRAPH_MPPC_COMPRESSION 
options         NETGRAPH_MPPC_ENCRYPTION 
options         NETGRAPH_ONE2MANY 
options         NETGRAPH_PPP 
options         NETGRAPH_PPPOE 
options         NETGRAPH_PPTPGRE 
options         NETGRAPH_RFC1490 
options         NETGRAPH_SOCKET 
options         NETGRAPH_TEE 
options         NETGRAPH_TTY 
options         NETGRAPH_UI 
options         NETGRAPH_VJC

работа с модулями ядра FreeBSD

Посмотреть список подгруженных модулей:

root@gw# kldstat
Id Refs Address    Size     Name
 1    8 0xc0400000 6a6424   kernel
 2    1 0xc0aa7000 122a4    geom_mirror.ko
 3    1 0xc1587000 15000    linux.ko
 4    1 0xc1b77000 3000     ng_ipacct.ko

Источник : openwiki.ru/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_%D1%8F%D0%B4%D1%80%D0%B0_FreeBSD

Запись опубликована в рубрике FreeBSD. Добавьте в закладки постоянную ссылку.

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

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

Я не спамер This plugin created by Alexei91