From Fedora Project Wiki

Improved GRUB menu

Summary

Improve the GRUB menu by only having the default boot option for each installed operating system in the main menu, and the other options into a sub-menu. This would better organize the boot options and lead to an easier and seamless boot experience.

Owner

Current status

Detailed Description

The current GRUB menu is confusing, specially when multiple operating systems are installed. The Fedora boot entries are added first and then the ones for the other installed operating systems.

The main menu contains all the boot entries for Fedora but only the default boot entry for the other operating systems, the non-default boot entries for the other installed operating systems are placed into a per operating system sub-menu.

An example of how the GRUB menu currently looks can be found at https://javierm.fedorapeople.org/grub2/menu/fedora_menu.png

This can be improved by adding a sub-menu for the Fedora non-default boot entries, as is already the case for the other installed operating systems. This will make the boot entries for all the operating systems consistent.

Another improvement would be to group all the default options for the operating systems as one section, followed by another section that groups all the sub-menus for the non-default options.

A tentative design made by Allan Day for the improved GRUB menu can be found at https://wiki.gnome.org/Design/OS/BootOptions#Tentative_Design

For Fedora, the boot option in the main menu will either be the selected default boot entry or if no default was chosen, the latest installed kernel. For the other installed operating systems, the boot option in the main menu will be the latest kernel as found by GRUB's os-prober script.

Benefit to Fedora

Making the menu less confusing and with better organized boot options will lead to a better user experience and make easier for users to choose the operating systems to boot.

Scope

  • Proposal owners:
  1. Change GRUB to implement the changes as described in the "Detailed Description" section.
  2. Make sure this is all properly documented in release-notes, etc.
  • Other developers:
  1. Test and watch for regressions.
  • Release engineering:

RelEng review ticket:

  • Policies and guidelines: The policies and guidelines do not need to be updated.
  • Trademark approval: No changes needed.

Upgrade/compatibility impact

There will be a GRUB_ENABLE_SIMPLE_MENU option in /etc/default/grub that will control how the /etc/grub.d/* snippets will generate the grub menu. So users can opt-in by setting it to true and re-run grub2-mkconfig.

For Fedora Workstation installs, Anaconda will set GRUB_ENABLE_SIMPLE_MENU=true on installation so it will be the default. But users may opt-out by removing the GRUB_ENABLE_SIMPLE_MENU from /etc/default/grub (or not setting it to true) and run grub2-mkconfig again.

How To Test

  1. Single OS test
    1. Install Fedora in a VM.
    2. On boot the default boot option is in the main menu and the other options (e.g: rescue boot option) are in a sub-menu.
  2. Multi boot test
    1. Install Fedora on a machine which other operating system installed.
    2. On boot the default boot options for the operating systems are in the main menu and the other options in sub-menus.

User Experience

A simpler and easier to understand GRUB boot menu. Choosing which operating system to boot should be simpler and involve less steps.

Dependencies

None

Contingency Plan

  • Contingency mechanism: Revert the GRUB changes.
  • Contingency deadline: Beta Freeze
  • Blocks release? No
  • Blocks product? None

Documentation

Release Notes

  • Release Notes tracking: