In a previous article (Fixing XenServer error “Unable to find partition containing kernel”) I described how to fix a recurring problem after patching XenServer 6.2 installations. While the fix is known from years it’s never been adopted, and different distros (such as Ubuntu LTS 14.04) fail to boot properly when the GrubConf.py (on dom0) gets reset to its default state.
Being the lazy person that I am I decided to set up a script to do the work for me, after all we’re admins, not monkeys.
#!/bin/bash
GRUBCONF="/usr/lib/python2.4/site-packages/grub/GrubConf.py"
PATCHED=$(grep "_entry" $GRUBCONF | wc -l)
if [ $PATCHED -eq 2 ]; then
echo "GrubConf.py is already patched"
else
echo "Patching GrubConf.py to fix boot..."
sed -i 's/_entry}":/_entry}":\n arg = "0"\n elif arg.strip() == "${next_entry}":/' $GRUBCONF
PATCHED=$(grep "_entry" $GRUBCONF | wc -l)
if [ $PATCHED -eq 2 ]; then
echo "- Patch was applied successfully."
else
echo "- There was a problem while applying the patch."
fi;
fi;
echo
This does just what I/we used to do manually: detects if GrubConf.py has been reverted and, if not, patches it up. Supplementary tests added for paranoia 🙂