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 <[email protected]>.
    

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

    After changing the grub file you best always run " `sudo update-grub`" .

    Just run: sudo grub-set-default saved It's that simple.

  • 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: http://www.gnu.org/software/grub/manual/grub.html#Simple-configuration

    Put the following in /etc/default/grub:

    GRUB_DEFAULT=saved
    GRUB_SAVEDEFAULT=true
    

    Then run:

    sudo update-grub
    

    +1 for the link, I've edited your answer with the solution that worked for me (which I derived from the link you provided)

    The link in this answer is broken. 'Page 404'.

    should I remove existing line `GRUB_DEFAULT=0` ?

    @user25 yes remove `GRUB_DEFAULT=0`, the line should read `GRUB_DEFAULT=saved`

    I reboot into windows from linux using the above command. But now when i reboot from Windows, it defaults to windows and I cannot reboot from Windows into Linux

  • 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
    }
    
  • 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.

    This did not work for me, it just sets the GRUB menu to point to entry #1, not the last choice

    If your menu option would be buried in a submenu, like within 'Advanced options for ubuntu', the format is 'submenu-index>submenu-item-index'. So you'd need to specify 1>'index-of-your-choice'. You are also supposed to be able to specify by string name for each selection.

  • 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

    Look at the answer from @ccpizza, may be this will help: https://askubuntu.com/a/674148/97838

  • 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 :(

License under CC-BY-SA with attribution


Content dated before 6/26/2020 9:53 AM