Установить "старое" ядро в качестве записи 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
.
Чтобы загрузить определенное ядро, выполните следующие действия:
- Проверьте доступное ядро с помощью приведенной ниже команды;
sudo grep menuentry /boot/grub/grub.cfg
В списке первый номер ядра начинается с 0 и так далее.
- Редактировать файл конфигурации GRUB
sudo vi /etc/default/grub
Если вы хотите использовать 5-е ядро, укажите GRUB_DEFAULT ниже.
GRUB_DEFAULT='1>4'
сохраните файл и выйдите из текстового редактора
- обновить GRUB
sudo update-grub
- Перезагрузите сервер и проверьте версию ядра, используйте команду ниже:
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
, как только вы сохраните ядро по умолчанию.