Сборка ядра в FreeBSD

Июнь, 29th 2009Рубрика: *NIX 7186
Подписаться на комментарии по RSS

freebsd_daemon

Зачем нужно пересобирать ядро (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

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

Комментариев: 3

  1. 2009-08-19 в 15:38:27 | kamat0z

    А что делать если /usr/src/sys такой директории не существует?

    вывожу uname -a

    вижу что файл GENERIC храниться по /usr/src/sys/i386/conf/GENERIC пути

  2. 2009-08-19 в 15:49:41 | dre@mer

    Значит исходники у вас не установлены. Если делать всё по статье, то такая директория будет после выполнения cvsup.

  3. 2010-09-03 в 13:35:41 | sadotmd

    Спасибо! Сборка прошла успешно

Без регистрации
ваш комментарий будет опубликован после проверки
Регистрация на сайте

На указанный адрес будет отправлено письмо с кодом активации. Вы можете настроить собственный профиль и стать активным участником или автором.