Рано или поздно (скорее всего рано 🙂 ) вам понадобится изменить ядро системы. Например включить ipfw, или просто почистить от ненужного мусора. Существует мнение, что это сложно и опасно. Ничего подобного! И Вы в этом сейчас убедитесь…
Рассмотрим весь процесс пересборки ядра:
1. Стандартный файл ядра, с которым устанавливается система, и который содержит настройки, рассчитанные на загрузку ОС, в большинстве конфигураций находится здесь: /sys/i386/conf/GENERIC. Это файл не надо править НИ ПРИ КАКИХ СИТУАЦИЯХ. Для нового ядра нужно скопировать GENERIC в туже папку под другим названием (в моем случае /sys/i386/conf/MYKERN).
cp /sys/i386/conf/GENERIC /sys/i386/conf/MYKERN
2. Теперь давайте его отредактируем, включив IPFW (для примера). Вы можете использовать любой редактор текстовых файлов, который вам больше нравится. Я предпочитаю «ee».
- 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