четверг, 22 апреля 2010 г.

Сборка ядер с kernel.org в CentOS 5

Ставим зависимости:

yum install -y ncurses-devel gcc make rpm-build redhat-rpm-config


cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.2.tar.bz2
tar -xf linux-2.6.33.2.tar.bz2
cd linux-2.6.33.2


Копируем конфиг от активного ядра и если нужно вносим коррективы:

cp /boot/config-`uname -r` .config


Запускаем конфигуратор:
make menuconfig


Выбираем там следующую опцию (иначе не загрузится он на CentOS):
General setup ---> enable deprecated sysfs features which may confuse old userspace


Создаем папки для сохранения результирующего rpm файла:

mkdir -p /usr/src/redhat/SRPMS
mkdir -p /usr/src/redhat/RPMS/{i386,x86_64}


Стандартный make rpm не собирает initrd автоматически и не добавляет ядро в grub.conf, поэтому надо наложить патчик

vi scripts/package/mkspec


И в самый низ добавляем следующее:
echo "%post"
echo "/sbin/new-kernel-pkg --package kernel --mkinitrd --depmod --install "$KERNELRELEASE" || exit \$?"
echo ""

echo "%preun"
echo "/sbin/new-kernel-pkg --rminitrd --rmmoddep --remove "$KERNELRELEASE" || exit \$?"
echo ""


Собираем ядро (заодно контролируем время сборки):
time make rpm


И ставим:

rpm -ihv /usr/src/redhat/RPMS/i386/kernel-2.6.33.2.i386.rpm



Частично основано на: http://highloaded.blogspot.com/2010/04/centos-kernel-2633-build-rpm.html

5 комментариев :

  1. В целом все правильно только при такой схеме не работает поддержка NAT и еще кое чего

    Networking support --->
    Networking options --->
    Network packet filtering framework (Netfilter) --->
    Core Netfilter Configuration --->
    Netfilter connection tracking support ВКЛЮЧАЕМ

    после этого в менюшке уровнем выше

    IP: Netfilter Configuration --->

    появляется пункт Full NAT
    включаем и радуемся

    должно все заработать, хотя я для теста включил все, что было в разделах "Core Netfilter Configuration" и "IP: Netfilter Configuration"

    ОтветитьУдалить
  2. Благодарю за дополнение, сам с подобным не сталкивался.

    ОтветитьУдалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить
  4. abask спасибо, а то у меня после сборки iptables отказывался стартовать, потому как модули для натирования и пакетного фильтра просто не включил в конфигурацию ядра. Хотя по идее, если мы берем конфиг от работающего ядра, почему оно не собирается с поддержкой модулей iptables... не понятно

    ОтветитьУдалить