====== Boot previous kernel (Mint) ======
grep "menuentry " /boot/grub/grub.cfg
count the entries with tab in front, start at 0
sudo vi /etc/default/grub
change
GRUB_DEFAULT=0 #boots the latest kernel
to the desired kernel name
Increase timeout to 2 seconds to display boot menu if necessary:
GRUB_TIMEOUT=0
apply changes:
sudo update-grub
===== Bash Script =====
#!/bin/bash
if [ "$LOGNAME" != "root" ]
then
echo "kernelchoice.sh needs to be run as root!"
exit
fi
kernellist=()
while IFS= read -r -d $'\n'; do
kernellist+=("$REPLY")
done < <(grep 'gnulinux.*generic-advanced' /boot/grub/grub.cfg | grep -v " set default" | cut -d "'" -f 4)
PS3="Enter default kernel number, q to quit: "
if [[ ${#kernellist[@]} -gt 0 ]]; then
IFS=$'\n'
select kernelname in "${kernellist[@]}" __QUIT__
do
if [[ "$REPLY" == "q" ]]; then
break;
fi
[[ -n "$kernelname" ]] || { echo "Invalid selection. Please try again.\n" >&2; continue; }
if [[ "$kernelname" == "__QUIT__" ]]; then
break;
else
advancedmenu=$(grep submenu /boot/grub/grub.cfg | cut -d "'" -f 4)
sed -i s'/^GRUB_DEFAULT.*/GRUB_DEFAULT="'"$advancedmenu"'>'"$kernelname"'"/' /etc/default/grub
echo "Set default kernel to $kernelname"
echo "Updating grub"
update-grub2
break;
fi
done
unset IFS
else
echo "Could not find kernels"
fi