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 |
Your script needs to be changed from
mkdir /mnt/dev/pts
to
mkdir -p /mnt/dev/pts
or else it may complain that directory is not there.
Sorry, did not know how to contact you otherwise. You don’t have to publish my comment.
The script doesn’t require the -p flag as on a base linux install disk the /dev directory exists, thus when mounting /dev/xda to /mnt the directory /mnt/dev will already exist, but thanks for looking it over, whomever you may be