HOWTO Update Centos guest Kernel on Hyper-V host

This script is specific to my setup which has two NICs one using the Microsoft Hyper-V Synthetic Ethernet Driver and one using the normal driver.

I haven't tested this script out yet so there may be typos

#!/bin/bash

if [ -e /root/tools/upgrade-kernel.state ]; then
  eval `cat /root/tools/upgrade-kernel.state`
fi


if [ ! -e /root/tools/upgrade-kernel.state -o "$state" = "phase2 of kernel update complete" ]; then
    echo "Updating kernel"
    echo "state=\"about to update kernel\"" >/root/tools/upgrade-kernel.state
    if yum update -y kernel kernel-devel kernel-headers; then
      echo "state=\"kernel updated\"" >/root/tools/upgrade-kernel.state
    else
      echo "kernel update failed"
      echo "state=\"kernel failed update\"" >/root/tools/upgrade-kernel.state
      exit 1
    fi

    echo "Removing 'hda=noprobe hdb=noprobe' from all kernel entries in the boot menu"
    echo "state=\"about to remove 'hda=noprobe hdb=noprobe' from the boot menu\"" >/root/tools/upgrade-kernel.state
    if sed -i -e 's/LogVol00 hda=noprobe hdb=noprobe/LogVol00/g' /boot/grub/menu.lst; then
      echo "state=\"removed 'hda=noprobe hdb=noprobe' from the boot menu\"" >/root/tools/upgrade-kernel.state
    else
      echo "failed to modify boot menu"
      echo "state=\"failed to modify boot menu\"" >/root/tools/upgrade-kernel.state
      exit 1
    fi

    echo "Enabling eth0 onboot and disabling seth0 onboot"
    echo "state=\"about to enable eth0 and disable seth0\"" >/root/tools/upgrade-kernel.state
    if sed -i -e 's/#ONBOOT=yes/ONBOOT=yes/gi' -e 's/ONBOOT=no/#ONBOOT=no/gi' /etc/sysconfig/network-scripts/ifcfg-eth0 &&
          sed -i -e 's/#ONBOOT=no/ONBOOT=no/gi' -e 's/ONBOOT=yes/#ONBOOT=yes/gi' /etc/sysconfig/network-scripts/ifcfg-seth0; then
       echo "state=\"enabled eth0 and disabled seth0\"" >/root/tools/upgrade-kernel.state
    else
      echo "failed to enable eth0 and disable seth0 onboot"
      echo "state=\"failed to enable eth0 and disable seth0 onboot\"" >/root/tools/upgrade-kernel.state
      exit 1
    fi

    echo "Press ENTER to reboot"
    read a
    echo "state=\"phase1 of kernel update complete\"" >/root/tools/upgrade-kernel.state
    reboot
elif [ "$state" == "phase1 of kernel update complete" ]; then
    echo "Buildind vm tools"
    echo "state=\"about to build vm tools\"" >/root/tools/upgrade-kernel.state
    if cd /opt/linux_ic && make && make install; then
      echo "state=\"vm tools built\"" >/root/tools/upgrade-kernel.state
    else
      echo "failed to build vm tools"
      echo "state=\"failed to build vm tools\"" >/root/tools/upgrade-kernel.state
      exit 1
    fi

    echo "Enabling seth0 onboot and disabling eth0 onboot"
    echo "state=\"about to enable seth0 and disable eth0\"" >/root/tools/upgrade-kernel.state
    if sed -i -e 's/#ONBOOT=yes/ONBOOT=yes/gi' -e 's/ONBOOT=no/#ONBOOT=no/gi' /etc/sysconfig/network-scripts/ifcfg-seth0 &&
          sed -i -e 's/#ONBOOT=no/ONBOOT=no/gi' -e 's/ONBOOT=yes/#ONBOOT=yes/gi' /etc/sysconfig/network-scripts/ifcfg-eth0; then
       echo "state=\"enabled seth0 and disabled eth0\"" >/root/tools/upgrade-kernel.state
    else
      echo "failed to enable seth0 and disable eth0 onboot"
      echo "state=\"failed to enable seth0 and disable eth0 onboot\"" >/root/tools/upgrade-kernel.state
      exit 1
    fi

    echo "Press ENTER to reboot"
    read a
    echo "state=\"phase2 of kernel update complete\"" >/root/tools/upgrade-kernel.state
    reboot
else
    "Error : Stopping because state is \"$state\""
    exit 1
fi
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.