Для чего нужна компиляция ядра?
Как говорится в хэндбуке, компиляция ядра - это ритуал, через который должен пройти любой пользователь FreeBSD.

Но мне это нужно для того чтобы увеличить производительность системы, уменьшить время загрузки и включить фаервол IPFW т.к. он не включен. Я не ставлю перед собой задачу рассказать о том, что нужно удалить из файла конфигурации, я расскажу о том, что нужно добавить.




#cd /sys/i386/conf/ #Перехожу в коталог где хнаходится файл конфигурации ядра #ls #Смотрю содержимое GENERIC #Вот и файл который мне нужен (файлов тут больше, но мне нужен только этот) #cp GENERIC new_kernel #Создаю копию файла GENERIC и называю new_kernel #ls GENERIC new_kernel #ee new_kernel #Открываю файл для редактирования Приступаю к правке файла ядра. Сначала необходимо изменить идентификатор ядра (в первой секции параметр ident.) ident new_kernel а потом можно добавить следующие опции для IPFW options IPFIREWALL # встраиваем файрвол в ядро options IPFIREWALL_VERBOSE # вывод информации об отброшенных пакетах options IPFIREWALL_VERBOSE_LIMIT=10 # ограничениена кол-во записей лога в сек. options IPDIVERT # поддержка IP-маскарадинга options DUMMYNET # шейпер options IPFIREWALL_FORWARD # включаю возможность перенаправления пакетов options TCP_DROP_SYNFIN # дроп нежелательных пакетов Все! Больше я ничего пока не добавляю, только удаляю всякие SCSI девайсы кот. у меня нет. Нажимаю на ESC, подтверждаю что нужно сохранить файл и выхожу. Далее нужно собрать ядро, а потом его установить. #cd /usr/src/ #make buildkernel KERNCONF=new_kernel #make installkernel KERNCONF=new_kernel После того, как уставится новое ядро нужно перезагрузить комп. В начале запуска системы можно увидеть, что ядро которое загружается называется "new_kernel" ну или как то там по другому в зависимоти от того кому как нравится называть свои ядра!

Могут быть и проблемы, как во время компилирования, так и во время запуска системы. В основном проблемы при компилировании связанны с тем, что где-то не хватает буквы или на оборот случайно была выставленна какая-то запятая. Тогда нужно зайти в файл ядра и исправить ошибку.

Если криво откомпелировать ядро или случайно удалить нужную секцию, система может не загрузиться. В таком случае можно загрузить старое рабочее ядро GENERIC.


Во время 10-ти секундного отсчета нужно нажать на цифру 6-ть, для того чтобы увидеть приглашение загрузчика. Для начала нужно выгрузить криво откомпелированное ядро из памяти, потом загрузить рабочее ядро GENERIC и дать команду для запуска.

OK unload
OK load /boot/GENERIC/kernel
OK boot

После загрузки нового ядра, можно заново начать процесс компиляции :)

ВАЖНО:
После компиляции ядра с включением IPFW, по умолчанию будет только одно правило, которое влокирует весь трафик идущий в любое направление.

65535 deny ip from any to any

У IPFW есть несколько готовых типов работы, которые можно включить:


  • open #пропускаем весь траффик
  • client #будет защищать только эту машину
  • simple #защита всей сети
  • closed #полностью выключает весть IP траффик; исключая loopback интерфейс
  • UNKNOWN #выключает загружаемые правила файрвола
  • filename #путь к файлу содержащему правила

Для начала можно пропускать весь трафик, а потом когда будут свои правила, можно поменять тип работы фаервола, таким образом сделать сеть более защищенной. В файл /etc/rc.conf нужно добавить 2-е записи:

#ee /etc/rc.conf

firewall_enable="YES"
firewall_type="open"

Теперь можно закрыть файлик и перезагрузиться.
Я откомпилировал ядро, воткнул в него фаервол IPFW и включил режим который пропускает весь трафик в любое направление! Теперь нужно создать свой набор правил и указать фаерволу, откуда читать правила. Но это уже совсем другая история.
Продолжение следует..... :)
41bdUlZxGcA