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?
25 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=trueThen 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=savedand make grub-mkconfig to substitute your copy of grub.cfg
grub-mkconfig -o /boot/grub.cfgsavedefault from Grub 2.02 don't require any additional arguments
You could see source of savedefault in grub.cfg
1Thanks 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 :(
1You are forgetting the number (ie. the "ENTRY is a number or a menu item title." in your text).
sudo grub-set-default 1for option 1 to be the default.
Always run sudo update-grub after modifying the /etc/default/grub file to apply the changes.