After a recent kernel update I found that the stock CentOS kernel was less than optimal for the CPU I am using, and so I decided to create a kernel optimised for my VIA C7 CPU.
As root:
• Set up build environment
Make sure kernel packages are not excluded in yum config
nano /etc/yum.conf
# exclude = kernel*
Install development packages (possibly not all of them are required, feel free to experiment)
yum groupinstall "Development Tools" yum install ncurses-devel yum install qt-devel qt3-devel yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel yum install rpm-build redhat-rpm-config asciidoc hmaccalc perl-ExtUtils-Embed xmlto yum install binutils-devel elfutils-libelf-devel newt-devel python-devel zlib-devel yum install elfutils-devel audit-libs-devel yum install gtk2-devel gtk+-devel gtk+extra-devel wget http://dl.fedoraproject.org/pub/epel/6/i386/libunwind-1.1-2.el6.i686.rpm wget http://dl.fedoraproject.org/pub/epel/6/i386/libunwind-devel-1.1-2.el6.i686.rpm rpm -Uvh libunwind*.rpm
As standard user:
• Prepare sources
Install sources (modify download URL for version required)# wget http://vault.centos.org/6.5/updates/Source/SPackages/kernel-2.6.32-431.17.1.el6.src.rpm wget http://vault.centos.org/6.5/updates/Source/SPackages/kernel-2.6.32-431.20.3.el6.src.rpm mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros # rpm -i kernel-2.6.32-431.17.1.el6.src.rpm 2>&1 rpm -i kernel-2.6.32-431.20.3.el6.src.rpm 2>&1Update spec file
cd ~/rpmbuild/SPECS cp kernel.spec kernel.spec.ori nano kernel.specmodify buildid (line 18)
%define buildid .zjl_viac7
Update config files
cd ~/rpmbuild/SOURCES/ nano config-i686-nodebug-rheland add the following lines
# CONFIG_M686 is not set
CONFIG_MVIAC7=y
CONFIG_X86_L1_CACHE_SHIFT=6
The config file hierarchy is
and I simply picked the last (by default empty) config file in the sequence.config-nodebug config-nodebug-rhel config-generic config-generic-rhel config-x86-generic config-x86-generic-rhel config-i686 config-i686-rhel config-i686-nodebug config-i686-nodebug-rhel to produce kernel-2.6.32-i686.config
• Prepare sources in build directory
cd ~/rpmbuild/ rpmbuild -bp --target=$(uname -m) SPECS/kernel.specIf rpmbuild gets stuck after line
gpg: keyring `./pubring.gpg' createdprobably there is not enough entropy available. Perform some background tasks, e.g. wiggle the mouse or open a new terminal and run
sudo find /or
sudo rngd -r /dev/hwrandomor
sudo rngd -r /dev/urandom
• Build
cd ~/rpmbuild/ rpmbuild -v -bb --with baseonly --without debug --without debuginfo --without doc --without kabichk --without perf --target=`uname -m` SPECS/kernel.spec 2> build-err.log | tee build-out.log rpmbuild -v -bb --target noarch --without doc SPECS/kernel.spec 2> fw-build-err.log | tee fw-build-out.log
As root:
• Install
rpm -ivh kernel-*.rpmIf kernel packages were excluded initially, restore yum config
nano /etc/yum.conf
exclude = kernel*
See also
blog.laczik.org/centos-6-4-kernel-compile/
Hi,
what was the background to recompile the kernel?
i use C7 too via 3100+ board, on high load the cpu crashes
sometimes and mdadm degraded my raid 1
Thanks for Infos
T.
CentOS crashes with VIA EPIA EN15000 board; has been solid since I started using C7 specific kernels.
cool! thanks for the infos… hope my VIA EPIA EN15000 will now clean reboot and work also so solid like yours 😉
i think to install the new kernel you need this:
rpm -ivh kernel-*.rpm –force