Зачем нужно пересобирать ядро (kernel)?
При инсталляции FreeBSD мы сразу же имеем вполне работоспособное ядро. Зачем его переделывать? Дело в том, что это ядро (GENERIC конфигурация) предназначено для того, чтобы система успешно развернулась на "железе" любой конфигурации (из поддерживаемых, конечно). В эту конфигурацию встроена поддержка ВСЕХ типов накопителей (HDD и CD) и БОЛЬШИНСТВА сетевых карт, которые на данный момент поддерживаются FreeBSD. Это вполне логично - вы должны иметь возможность поставить свой Unix и дополнительные программы на тот HDD, который имеется у вас в машине и суметь войти в сеть, какой бы сетевой карточкой вы ни пользовались, хотя на новом железе это далеко не всегда так даже на FreeBSD 7.1 (могу привести кучу примеров тому в подтверждение).
Наряду с этим, в ядро не включены полезные опции, которые обязательно вам понадобятся в дальнейшем, если вы хотите использовать вашу машину в качестве сервера. (Например - поддержка firewall, PPP, VPN и т.п.).
Итак, первым делом обновим или установим дерево портов и исходные коды операционной системы (если их не ставили во время первичной установки FreeBSD). Для поддержания дерева портов в актуальном состоянии, FreeBSD использует утилиту cvsup. Посредством CVSup можно обновлять не только порты, исходные коды в каталоге /usr/src, но и документацию в каталоге /usr/share/doc.
Устанавливаем CVSup:
# cd /usr/ports/net/cvsup-without-gui # make install clean
Далее создаем sup-файл, в котором описываем: что обновлять, откуда и какую версию использовать. Пример такого можно посмотреть в директории /usr/share/examples/cvsup
Пример моего supfile для стабильной ветки FreeBSD 7.0:
cat /etc/cvsupfile
*default host=cvsup2.ru.freebsd.org *default base=/usr *default prefix=/usr *default release=cvs *default tag=RELENG_7_0 *default delete use-rel-suffix *default compress src-all *default tag=. ports-all
выполняем само обновление:
cvsup -g -L 2 /etc/cvsupfile
Параметр -g указывает CVSup не использовать GUI. Он действует автоматически, если вы не работаете под X11, но иначе вам потребуется его указать.
Параметр -L 2 указывает CVSup выводить информацию о каждом производимом обновлении. Есть три уровня протоколирования, от -L 0 до -L 2. Уровень по умолчанию 0, что означает полное отсутствие сообщений, за исключением сообщений об ошибках.
Процесс обновления требует некоторого времени, зависящего от вашего канала связи с Internet.
Сборка ядра:
Переходим в каталог с файлами конфигурации ядра и берем за основу ядро GENERIC. GENERIC копируем в XXXXX, где XXXXX название нашего нового ядра
cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/XXXXX vi /usr/src/sys/i386/conf/XXXXX
#оставляем только свою архитектуру #cpu I486_CPU #cpu I586_CPU cpu I686_CPU ident меняем на XXXXX #включаем FIREWALL options IPFIREWALL options IPFIREWALL_FORWARD #по умолчанию делать Firewall открытым options IPFIREWALL_DEFAULT_TO_ACCEPT options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=1 options IPDIVERT options IPFILTER options IPFILTER_LOG если машина поддерживает SMP options SMP #Symmetric MultiProcessor Kernel #комментируем все устройства, которых нет в вашей системе, но с умом - не перестарайтесь. #Например если выключить `#device miibus`, то сеть работать не будет
После того, как все изменения внесены и сохранены, перейдите в каталог /usr/src и соберите ядро:
# cd /usr/src # make buildkernel KERNCONF=MYKERNEL
Установите новое ядро, после чего нужно перезагрузить машину для запуска её с новым ядром.
# make installkernel KERNCONF=MYKERNEL
Дополнительные материалы:
Сборка ядра FreeBSD. Если что-то пошло не так...
Немає коментарів:
Дописати коментар