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

kernelchoice.sh
#!/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