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

1
2
3
4
5
6
7
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

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

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

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

1
make menuconfig

Выбираем там следующую опцию (иначе не загрузится он на CentOS):

1
General setup ---> enable deprecated sysfs features which may confuse old userspace

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

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

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

1
vi scripts/package/mkspec

И в самый низ добавляем следующее:

1
2
3
4
5
6
7
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 ""

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

1
time make rpm

И ставим:

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

слизано с http://phpsuxx.blogspot.com/2010/02/kernelorg-centos-5.html