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

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

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

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

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

8 ответов

Решение

Сначала сделайте резервную копию /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


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

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

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true

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

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

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

Теперь, когда 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.

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

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

$ 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 (режим восстановления)
настройка системы меню

Чтобы сделать это с графическим интерфейсом, я использую Grub Customizer (я в Mint, но здесь это не считается).

Самый простой и прямой способ (спасибо @eMKi за предложение в комментарии) — лучше всего подходит для постоянной настройки, в General Settings > default entry > predifined просто выберите нужное ядро ​​в выпадающем списке.


Или, если нужно, чтобы «предыдущая загруженная запись» была выбрана (может быть полезно при двойной загрузке с Windows, например, при выполнении обновления Windows, требующего перезагрузки) — сохранение дополнительных параметров в списке grub на случай, если список по умолчанию изменен в Grub Customizer:

в разделе « Общие настройки» выберите запись по умолчанию: предыдущая загруженная запись .

Затем перезагрузитесь и во время загрузки выберите запись «Дополнительные параметры» в списке grub:

и выберите старое ядро

При следующей перезагрузке пункт "Дополнительные параметры" будет выбранным по умолчанию в списке grub и будет загружено последнее выбранное ядро ​​из-под него (без открытия полного списка ядер).

Если используется Windows или другой вариант в списке grub, не забудьте повторить предыдущую процедуру.

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

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

Во время загрузки, если вы вообще не видите загрузчик Grub, вы должны сделать его видимым, для этого измените эти 2 строки в Grub как

      GRUB_TIMEOUT_STYLE=menu
GRUB_TIMEOUT=10

Теперь во время загрузки вы должны увидеть меню grub.

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

      GRUB_DEFAULT=0

проверьте серийный номер ядра, которое вы хотите установить по умолчанию, нумерация имеет индекс 0, соответственно измените индекс. например, если вы хотите загрузить 6-ю запись сверху, вы должны установить индекс равным 5.

      GRUB_DEFAULT=5

Теперь обновите grub, используя sudo update-grubи перезапустите.

Посмотрите это видео на YouTube, чтобы сделать grub видимым.

Посетите эту страницу справки Ubuntu, чтобы узнать о GRUB_DEFAULT.

Чтобы загрузить определенное ядро, выполните следующие действия:

  1. Проверьте доступное ядро ​​с помощью приведенной ниже команды;
      sudo grep menuentry /boot/grub/grub.cfg

В списке первый номер ядра начинается с 0 и так далее.

  1. Редактировать файл конфигурации GRUB
      sudo vi /etc/default/grub

Если вы хотите использовать 5-е ядро, укажите GRUB_DEFAULT ниже.

      GRUB_DEFAULT='1>4'

сохраните файл и выйдите из текстового редактора

  1. обновить GRUB
      sudo update-grub
  1. Перезагрузите сервер и проверьте версию ядра, используйте команду ниже:
      uname -r

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

Чтобы включить это, отредактируйте и добавьте следующие строки:

      GRUB_SAVEDEFAULT=true
GRUB_DEFAULT=saved

Затем запустите регенерацию загрузочных файлов, а затем перезагрузитесь.

Теперь при выборе ядра, например, в подменю «Дополнительные параметры Ubuntu», автоматически запоминается выбор для следующего раза, а затем загружается выбранное ядро.

Этот выбор сохраняется в/boot/grub/grubenv, и его не следует редактировать напрямую. Если вам нужно изменить его из загруженной системы, вы можете использоватьsudo grub-editenv:

      $ sudo grub-editenv list
saved_entry=gnulinux-advanced-20795ce5-2ede-4ea5-994d-c665c5037760>gnulinux-5.15.0-76-generic-advanced-20795ce5-2ede-4ea5-994d-c665c5037760

$ sudo grub-editenv set 'saved_entry=...'

Имена записей можно скопировать/вставить из/boot/grub/grub.cfgи обратите особое внимание на подменюmenuentry_od_option, за которым следует , за которым следуетmenuentry_id_optionстоимость выбранного товара. Используйте кавычки вокруг заданной строки, чтобы оболочка не видела>как перенаправление.

Например, это:

      submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-20795ce5-2ede-4ea5-994d-c665c5037760' {
    menuentry 'Ubuntu, with Linux 5.19.0-46-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.19.0-46-generic-advanced-20795ce5-2ede-4ea5-994d-c665c5037760' {
        ...

Результатом будет команда:

      $ sudo grub-editenv set 'saved_entry=gnulinux-advanced-20795ce5-2ede-4ea5-994d-c665c5037760>gnulinux-5.19.0-46-generic-advanced-20795ce5-2ede-4ea5-994d-c665c5037760'

Конечный эффект этой функции заключается в том, чтоgrub, если оставить загрузку автоматически, всегда будет выбирать последний выбранный вариант загрузки, что является своего рода поведением по умолчанию. Просто имейте в виду, что временный выбор другого ядра изменит значение по умолчанию, но вы можете отключить это, удаливGRUB_SAVEDEFAULTот/etc/default/grubи восстановить файлы grub с помощьюsudo update-grub, как только вы сохраните ядро ​​по умолчанию.

Другие вопросы по тегам