Як заставити grub2 запам'ятати останній вибір?


102

Grub2 - Документація спільноти Ubuntu говорить наступне:

Збереження ОС можна досягти, запустивши sudo grub-set-default, якщо DEFAULT = збережено встановлено в / etc / default / grub. Він також може бути збережений, якщо 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, щоб це відобразити.

В офіційному посібнику з грубу це правильно описано: 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 за посиланням, я відредагував вашу відповідь за рішенням, яке працювало на мене (яке я отримав із наданого вами посилання)
Jay Sullivan

Посилання в цій відповіді порушено. 'Сторінка 404'.
sdlins

я повинен видалити існуючий рядок GRUB_DEFAULT=0?
користувач25

@ 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
}

3

Ви забуваєте число (тобто "ВПІТТЯ - це номер або назва пункту меню" у вашому тексті).

sudo grub-set-default 1

щоб варіант 1 був типовим.

Завжди запустіть sudo update-grubпісля зміни /etc/default/grubфайлу, щоб застосувати зміни.


7
Для мене це не спрацювало, воно просто встановлює меню GRUB, щоб вказувати на запис №1, а не на останній вибір
Jay Sullivan

Якщо параметр меню буде похований у підменю, наприклад у розділі "Додаткові параметри для ubuntu", формат - "підменю-індекс> підменю-пункт-індекс". Тому вам потрібно буде вказати 1> "індекс за вашим вибором". Ви також повинні мати можливість вказати ім'я рядка для кожного вибору.
Епу

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


Подивіться на відповідь від @ccpizza, можливо, це допоможе: askubuntu.com/a/674148/97838
Hibou57
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.