How to correctly set up the right GRUB 2 default menu entry

grub2

I'm running GRUB 2.00 on a Gentoo Linux system.

I compile my own kernels manually, and then I install them in /boot with make install. I have the following kernels in /boot at the moment:

# ls -1 /boot/vmlinuz*
/boot/vmlinuz-3.7.4-gentoo-5
/boot/vmlinuz-3.7.4-gentoo-first
/boot/vmlinuz-3.7.4-gentoo-fourth
/boot/vmlinuz-3.7.4-gentoo-third

Running grub2-mkconfig results in the following output:

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.7.4-gentoo-third
Found linux image: /boot/vmlinuz-3.7.4-gentoo-fourth
Found linux image: /boot/vmlinuz-3.7.4-gentoo-first
Found linux image: /boot/vmlinuz-3.7.4-gentoo-5
done

If I now read the resulting /boot/grub2/grub.cfg file, I notice that the following entries have been created:

  • A main default entry which starts vmlinuz-3.7.4-gentoo-third
  • A submenu with the all the other entries (including recovery ones), in the same order as the grub2-mkconfig command

The problem is that at boot time I'd like to load by default the fifth revision of my kernel (vmlinuz-3.7.4-gentoo-5), not the third one (vmlinuz-3.7.4-gentoo-third). I also prefer not to access the submenu for choosing the right kernel to load.

How can I change this behaviour? How can I tell GRUB that I want to run the fifth revision of my kernel by default and not the older third revision? In general, how can I change the default entry line to match the kernel I want and not a seemingly random one picked by GRUB?

I also tried putting the following lines in /etc/default/grub:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

This doesn't fix the problem the way I desire. But at least GRUB seems to remembers the latest kernel I booted from and automatically selects it from the submenu. It's just that I don't like to access the submenu.

Best Answer

To select a menu entry under the sub-menu "Advanced options" set GRUB_DEFAULT="1>3". You can now run grub2-mkconfig to generate the grub config file. On the next reboot vmlinuz-3.7.4-gentoo-5 should boot.

Note: This won't change the default entry in the grub menu, i.e., the default entry will still indicate the same entry as you have right now. But the image which will be booted by default will be the 4th image under the "Advanced options". To make the vmlinuz-3.7.4-gentoo-5 as the default entry in the grub menu, the ordering of images should be such that the vmlinuz-3.7.4-gentoo-5 should be the first image when you run grub2-mkconfig.

Related Question