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

102

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

Сохранение ОС можно выполнить, запустив sudo grub-set-default, если в файле / etc / default / grub задано DEFAULT = сохранено. Это также может быть сохранено, если 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-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 <bug-grub@gnu.org>.

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

Джей Салливан
источник
2
После изменения файла grub лучше всего всегда запускать " sudo update-grub".
Жюльен Чау
Просто запустите: sudo grub-set-default сохранено Это так просто.
Т. Коулз

Ответы:

153

Документация в этом случае неверна. Все переменные в /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:

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

Затем запустите:

sudo update-grub
Джордан Уггла
источник
4
+1 за ссылку, я отредактировал ваш ответ с помощью подходящего мне решения (которое я получил по предоставленной вами ссылке)
Джей Салливан
Ссылка в этом ответе не работает. «Страница 404».
sdlins
я должен удалить существующую линию GRUB_DEFAULT=0?
user25
@ user25 да удалить GRUB_DEFAULT=0, строка должна читатьсяGRUB_DEFAULT=saved
ctrl-alt-delor
4

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

menuentry "Chameleon" {
    savedefault ### <<<< this must be added
    set root="(hd1)"
    chainloader +1
}
ccpizza
источник
3

Вы забываете номер (т. Е. «ВВОД - это номер или заголовок пункта меню» в вашем тексте).

sudo grub-set-default 1

для варианта 1, чтобы быть по умолчанию.

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

Rinzwind
источник
7
Это не сработало для меня, оно просто устанавливает меню GRUB, чтобы указывать на запись # 1, а не на последний выбор
Джей Салливан
Если ваш пункт меню будет скрыт в подменю, например, в разделе «Дополнительные параметры для ubuntu», формат будет «submenu-index> submenu-item-index». Так что вам нужно указать 1> 'index-of-your-choice'. Вы также должны быть в состоянии указать по имени строки для каждого выбора.
Epu
2

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

DblMok
источник
Посмотрите на ответ @ccpizza, может быть, это поможет: askubuntu.com/a/674148/97838
Hibou57