#!/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