Для чего нужна компиляция ядра?
Как говорится в хэндбуке, компиляция ядра - это ритуал, через который должен пройти любой пользователь 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 и включил режим который пропускает весь трафик в любое направление! Теперь нужно создать свой набор правил и указать фаерволу, откуда читать правила. Но это уже совсем другая история.
Продолжение следует..... :)
#ee /etc/rc.conf
firewall_enable="YES"
firewall_type="open"
Теперь можно закрыть файлик и перезагрузиться.
Я откомпилировал ядро, воткнул в него фаервол IPFW и включил режим который пропускает весь трафик в любое направление! Теперь нужно создать свой набор правил и указать фаерволу, откуда читать правила. Но это уже совсем другая история.
Продолжение следует..... :)
/etc/make.conf
ОтветитьУдалитьCPUTYPE?=core2
KERNCONF=new_kernel