Как заставить grub2 запомнить последний выбор?

Grub2 - Документация сообщества Ubuntu говорит следующее:

Сохранение ОС может быть достигнуто путем запуска sudo grub-set-default, если в /etc/default/grub установлено значение DEFAULT=saved. Он также может быть сохранен, если GRUB_SAVEDEFAULT=true также установлен в /etc/default/grub. В этом случае ОС по умолчанию остается до тех пор, пока новая ОС не будет выбрана вручную из меню GRUB 2 или не будет выполнена команда grub-set-default.

Я положил строки DEFAULT=saved и GRUB_SAVEDEFAULT=true в /etc/default/grub, и побежал sudo grub-set-default. Вот результат:

$ sudo grub-set-defaultentry not specified.Usage: grub-set-default [OPTION] entrySet 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 directoryENTRY is a number or a menu item title.Report bugs to <bug-grub@gnu.org>.

Я неправильно следую документации? Как правильно это сделать?

Документация в этом случае неверна. Все переменные в /etc/default/grub начните с GRUB_, так что это GRUB_DEFAULT=saved, нет DEFAULT=saved. Я исправил вики-страницу Ubuntu, чтобы отразить это.

Официальное руководство grub описывает это правильно: http://www.gnu.org/software/grub/manual/grub.html#Simple-configuration

Поместите следующее в /etc/default/grub (командная строка: gedit admin:///etc/default/grub):

GRUB_DEFAULT=savedGRUB_SAVEDEFAULT=true

Затем беги:

sudo update-grub

В моем случае это не работало для записей, определенных с помощью /etc/grub.d/40_custom в которых отсутствовали savedefault линия.

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

savedefault не будет работать, если в автоматически сгенерированном файле grub.cfg нет правильного заголовка

Чтобы сгенерировать правильный заголовок, вам нужно установить его в /etc/default/grub

GRUB_DEFAULT=saved

и сделайте grub-mkconfig, чтобы заменить вашу копию grub.cfg

grub-mkconfig -o /boot/grub.cfg

savedefault из Grub 2.02 не требует никаких дополнительных аргументов

Вы можете увидеть источник savedefault в grub.cfg

Вы забываете номер (т.е. "ЗАПИСЬ - это номер или заголовок пункта меню". в вашем тексте).

sudo grub-set-default 1

чтобы параметр 1 был выбран по умолчанию.

Всегда бежать sudo update-grub после изменения /etc/default/grub файл, чтобы применить изменения.

Благодаря ccpizza Я понял, что мои окна-menuentry в /etc/grub.d/40_custom не хватало того savedefault Атрибут:

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}

В моем случае (Arch Linux, а не Ubuntu ;) ) Я нашел pacman -S grub-customizer (из этот пост на StackOverflow от мэтт-у), который является хорошим графическим интерфейсом для настройки GRUB-меню!

PS: Я не мог ни поддержать, ни прокомментировать ccpizzaответ из-за отсутствия кредитов на этом форуме, поэтому я решил дать другой ответ :(

После изменения файла grub вам лучше всего всегда запускать “sudo update-grub” .

Просто запустите: sudo grub-set-default saved Это так просто.