Celeb Glow
news | March 21, 2026

How to get grub2 to remember last choice?

Grub2 - Community Ubuntu Documentation says the following:

Saving an OS can be achieved by running sudo grub-set-default if DEFAULT=saved is set in /etc/default/grub. It may also be saved if GRUB_SAVEDEFAULT=true is also set in /etc/default/grub. In this case, the default OS remains until a new OS is manually selected from the GRUB 2 menu or the grub-set-default command is executed.

I put the lines DEFAULT=saved AND GRUB_SAVEDEFAULT=true in /etc/default/grub, and ran sudo grub-set-default. Here is the output:

$ sudo grub-set-default
entry not specified.
Usage: grub-set-default [OPTION] entry
Set the default boot entry for GRUB. -h, --help print this message and exit -v, --version print the version information and exit --boot-directory=DIR expect GRUB images under the directory DIR/grub instead of the /boot/grub directory
ENTRY is a number or a menu item title.
Report bugs to <>.

Am I not following the documentation correctly? What's the correct way to do this?

2

5 Answers

The documentation in this case is wrong. All variables in /etc/default/grub start with GRUB_, so it's GRUB_DEFAULT=saved, not DEFAULT=saved. I've corrected the Ubuntu wiki to reflect that.

The official grub manual describes this correctly:

Put the following in /etc/default/grub (command line: gedit admin:///etc/default/grub):

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

Then run:

sudo update-grub
7

In my case it was not working for entries defined via /etc/grub.d/40_custom which were missing the savedefault line.

menuentry "Chameleon" { savedefault ### <<<< this must be added set root="(hd1)" chainloader +1
}

savedefault will not work, if there is no proper header in auto generated grub.cfg

To generate proper header you need set in /etc/default/grub

GRUB_DEFAULT=saved

and make grub-mkconfig to substitute your copy of grub.cfg

grub-mkconfig -o /boot/grub.cfg

savedefault from Grub 2.02 don't require any additional arguments

You could see source of savedefault in grub.cfg

1

Thanks to ccpizza I figured out, that my Windows-menuentry in /etc/grub.d/40_custom was missing the savedefault Attribute:

menuentry 'Windows 10' { savedefault # <<<<<<<<<<<< THIS Attribute was missing! insmod ntfs insmod ntldr insmod part_msdos insmod search_fs_uuid search --fs-uuid --no-floppy --set=root <WINDOWS_SSD_UUID> ntldr /bootmgr
}

In my case (Arch Linux, not Ubuntu ;) ) I found pacman -S grub-customizer (from this Post on StackOverflow of matt-u) which is a nice GUI Tool for customizing GRUB-Menu!

PS: I could neither upvote nor comment on ccpizza's answer because of missing credits in this forum, so I decided to give another answer :(

1

You are forgetting the number (ie. the "ENTRY is a number or a menu item title." in your text).

sudo grub-set-default 1

for option 1 to be the default.

Always run sudo update-grub after modifying the /etc/default/grub file to apply the changes.

2

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy