I think most distributions have moved additional kernels into the advanced options sub menu at this point, as TomTom found was the case with his
Arch.
I didn't want to alter my top level menu structure in order to select a previous kernel as the default. I found the answer here:
http://www.humans-enabled.com/2014/08/how-to-set-default-grub-kernel-boot.html
To summarize:
1) Find the $menuentry_id_option for the submenu:
grep submenu /boot/grub/grub.cfg
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-65c9af03-3d9b-411c-99b2-a9ada0961a40' {
2) Find the $menuentry_id_option for the menu entry for the kernel you want to use:
grep gnulinux /boot/grub/grub.cfg
excerpt:
... menuentry 'Debian GNU/Linux, with Linux 4.7.0-1-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.7.0-1-amd64-advanced-65c9af03-3d9b-411c-99b2-a9ada0961a40' {
...
3) Comment out your current default grub in /etc/default/grub and replace it with the sub-menu's $menuentry_id_option from step one, and the selected kernel's $menuentry_id_option from step two separated by ">".
In my case the modified GRUB_DEFAULT is:
#GRUB_DEFAULT=0
GRUB_DEFAULT="gnulinux-advanced-65c9af03-3d9b-411c-99b2-a9ada0961a40>gnulinux-4.7.0-1-amd64-advanced-65c9af03-3d9b-411c-99b2-a9ada0961a40"
4) Update grub to make the changes. For Debian this is done like so:
sudo update-grub
Done. Now when you boot, the advanced menu should have an asterisk and you should boot into the selected kernel. You can confirm this with uname.
uname -a
Linux NAME 4.7.0-1-amd64 #1 SMP Debian 4.7.8-1 (2016-10-19) x86_64 GNU/Linux
Changing this to the most recent kernel is as simple as commenting out the new line and uncommenting #GRUB_DEFAULT=0, then rerunning update-grub.
grub.cfgonly correspond to the OSs and not the kernels. – TomTom Apr 22 '15 at 21:17