Установить «старое» ядро ​​в качестве записи grub по умолчанию


94

Я установил основное ядро ​​для тестирования. Я хотел бы установить grub для загрузки со старого ядра по умолчанию.

Я знаю, что могу установить GRUB_DEFAULT=0настройки для первой страницы grub, но как мне установить его загрузку по умолчанию из одного ядра на второй странице (страница Advanced)?

Я бы предпочел сделать это без установки другого программного обеспечения (например, grub-customizer).

Смежные вопросы:
Как настроить Windows для загрузки по умолчанию в загрузчике?
Как изменить порядок загрузки grub?


3
@belacqua: это не дубликат. Этот вопрос касается установки более старого ядра, которого нет на первой странице настроек grub по умолчанию.
Делать

Кажется, что этот случай должен быть рассмотрен в предыдущих вопросах, даже если метод должен быть обновлен до 12.10, более старых ядер и т. Д.
belacqua

3
Вариант использования вопроса другой, и ответ очень конкретен, и не относится к другим заявленным дубликатам. Я пришел сюда, чтобы решить эту конкретную проблему; не менять порядок загрузки; ни для загрузки Windows. +1 за "не дубликат".
Роби Басак

Ответы:


128

Сначала сделайте резервную копию /etc/default/grub. Если что-то пойдет не так, вы можете легко вернуться к хорошо известной копии.

sudo cp /etc/default/grub /etc/default/grub.bak

Затем отредактируйте файл, используя выбранный текстовый редактор (например, gedit и т. Д.).

sudo -H gedit /etc/default/grub

Найдите строку, которая содержит GRUB_DEFAULT- это то, что вы хотите отредактировать, чтобы установить значение по умолчанию. Вы должны знать полное имя нужного вам ядра - например, Ubuntu, with Linux 3.13.0-53-genericвместе с полным названием «расширенного меню» - например Advanced options for Ubuntu.

Затем вы объединяете эти две строки с >и устанавливаете GRUB_DEFAULTих как: GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic"(включая кавычки).

Сохраните его, затем создайте обновленное меню grub.

sudo update-grub

См. Также: GNU GRUB Руководство 2.02 или, более конкретно, раздел 15.1.0 о настройке по умолчанию .


Примечание. Существует метод, использующий числа для доступа к ядрам и меню, но это не рекомендуется, так как ненадежно, когда происходят обновления ядра.


24
Использование числового значения может быть проблематичным, когда происходят обновления. Лучше использовать текстовое значение по умолчанию, например: GRUB_DEFAULT = "Предыдущие версии Linux> Ubuntu, с Linux 3.2.0-18-generic"
Bealer

27
Можно использовать, sudo grub-mkconfig | lessчтобы увидеть все возможные варианты
Nitz

9
Это хорошее решение, но еще лучше открыть, /boot/grub/grub.cfgи там вы увидите все manuentryи все submenus. Если вы отредактируете их, вы можете легко установить значения по умолчанию, даже изменить заголовки опций в списке grub при перезагрузке компьютера.
Алекс

7
Это определенно полезно для /boot/grub/grub.cfgопределения точных имен для использования. Но не изменяйте этот файл, так как он будет автоматически сгенерирован update-grub, в том числе при обновлении пакетов.
Роби Басак

18
Форматирование для GRUB_DEFAULT немного устарело (по крайней мере, с Ubuntu 14.04.2). При запуске update-grubя столкнулся с предупреждением: пожалуйста, не используйте старый заголовок Previous Linux versions>Ubuntu, with Linux 3.13.0-53-genericдля GRUB_DEFAULT, используйте Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic(для версий до 2.00) или gnulinux-advanced-b0ce60c3-184c-453b-af59-419b56a2584f>gnulinux-3.13.0-53-generic-advanced-b0ce60c3-184c-453b-af59-419b56a2584f(для 2.00 или более поздней)
Wumms

22

Лучшее решение для меня было установить (в /etc/default/grub):

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true

С этими настройками последнее выбранное значение сохраняется для следующей загрузки. Если у вас новое ядро, вам не нужно редактировать конфигурацию.

Не забудьте перезапустить sudo update-grub

Решение от чтения: info grub-mkconfig


4
Это потрясающе
Мефисто

Вы уверены в ;точке с запятой ( ) в конце строки?!?
DJCrashdummy

Я не могу заглянуть в свой компьютер, где я использовал его в данный момент, но вы правы ";" кажется неправильным или ненужным!
Мартин Т.

21

Теперь, когда Advancedв Ubuntu меню по умолчанию, вам нужно выбрать его перед тем, как ядро ​​будет использовать этот >символ.

Установите, например:

GRUB_DEFAULT="1>7"

в /etc/default/grubи повторно запустить sudo update-grub.

Важно отметить, что нумерация пунктов меню GRUB начинается с 0. Поэтому 1вышеизложенное указывает на Advancedменю. В качестве меры предосторожности, вы можете сначала установить GRUB_TIMEOUT=5. Некоторые могут не получить доступ к GRUB, нажав клавишу во время загрузки. Это защитная сетка на случай, если вы случайно укажете на что-то подобное Memory test. Также необходимо включить вышеуказанные цифры в кавычки. Это не будет работать иначе.

Я тестировал 16.04 LTS.


Работает и в Debian.
Лоуренс Д'Оливейро

Я считаю этот ответ очень полезным, так как после обновления ядра он все еще указывает на новейшее ядро. в моей настройке, например, это 1> 0, что означает: расширенный список первым (всегда новейшее ядро). моя система когда-то перестала автоматически обновлять запись grub 0 с самым новым ядром, поэтому я использую этот метод.
Питер Флейкс

9

Чтобы иметь возможность установить, какой вариант загрузки использовать по умолчанию, вам нужно знать, что там есть ... так:

Чтобы отобразить пункты меню без фактической загрузки , попробуйте что-то вроде:

$ lsb_release -s -rdc
Ubuntu 16.04.4 LTS
16,04
дружественный

$ update-grub --version
grub-mkconfig (GRUB) 2.02 ~ beta2-36ubuntu3.17

$ grep -Ei 'подменю | menuentry' /boot/grub/grub.cfg | sed -re "s / (.?) '([^'] +) '. * / \ 1 \ 2 /"
menuentry Ubuntu
Подменю Дополнительные параметры для Ubuntu
    Ubuntu, с Linux 4.4.0-34-generic
    Ubuntu для меню, с Linux 4.4.0-34-generic (upstart)
    Ubuntu menuentry, с Linux 4.4.0-34-generic (режим восстановления)
настройка системы меню

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.