While creating the new web-server for my employers, to replace a Fedora 10 box which gets no security updates, I needed to compile some software from source, meaning I needed the kernel sources.
Since I couldn’t easily obtain these I needed to install the Kernel provided by the distribution rather than the more recent kernel provided by Linode themselves.
The Linode Library provided a way of doing this for CentOS 5 but not for CentOS 6, thus I adapted the provided script for v5 into one that works with CentOS 6 et voila, distro provided kernel.
Here’s the full source available as a gist on github:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
### Starting from a fresh CentOS 6 or newer Linode | |
### Enable the native kernel to boot from pvgrub | |
### It will autoconfigure itself with each yum update. | |
### This is adapted from a previous script for CentOS 5.5 found here: | |
### http://www.linode.com/docs/assets/542-centos5-native-kernel-selinux-enforcing.sh | |
### Provided via the linode wiki | |
### https://www.linode.com/docs/tools-reference/custom-kernels-distros/run-a-distributionsupplied-kernel-with-pvgrub#centos-5 | |
### Provided without warranty, although since it should only be run | |
### on first box build if your box gets broken simply rebuild it | |
mkdir /boot/grub/ | |
DISTRO_PLATFORM=`uname -p` | |
AWK_VERSION_MATCH="{if(\$1==\"kernel.$DISTRO_PLATFORM\") print \$2}" | |
KERNEL_VERSION=`yum -q list kernel | awk "$AWK_VERSION_MATCH"` | |
### Write template grub.conf | |
cat > /boot/grub/grub.conf << EOF | |
# grub.conf generated by anaconda | |
# | |
# Note that you do not have to rerun grub after making changes to this file | |
# NOTICE: You have a /boot partition. This means that | |
# all kernel and initramfs paths are relative to /boot/, eg. | |
# root (hd0) | |
# kernel /boot/vmlinuz-version ro root=/dev/xvda | |
# initrd /boot/initramfs-version.img | |
#boot=/dev/xvda | |
default=0 | |
timeout=3 | |
title CentOS ($KERNEL_VERSION.$DISTRO_PLATFORM) | |
root (hd0) | |
kernel /boot/vmlinuz-$KERNEL_VERSION.$DISTRO_PLATFORM root=/dev/xvda | |
initrd /boot/initramfs-$KERNEL_VERSION.$DISTRO_PLATFORM.img | |
EOF | |
ln -s /boot/grub/grub.conf /boot/grub/menu.lst | |
yum -y install kernel | |
if [ $? -ne 0 ]; then | |
echo "ERROR aborting..." | |
exit 1 | |
fi |