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
В целом все правильно только при такой схеме не работает поддержка NAT и еще кое чего
ReplyDeleteNetworking 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"
Благодарю за дополнение, сам с подобным не сталкивался.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteabask спасибо, а то у меня после сборки iptables отказывался стартовать, потому как модули для натирования и пакетного фильтра просто не включил в конфигурацию ядра. Хотя по идее, если мы берем конфиг от работающего ядра, почему оно не собирается с поддержкой модулей iptables... не понятно
ReplyDeletehttp://fedoraproject.org/wiki/Building_a_custom_kernel/ru
ReplyDelete