Установка ядра по умолчанию в GRUB

Как я могу выбрать, какое ядро ​​GRUB2 должно загружать по умолчанию? Недавно я установил linux-ядро реального времени, и теперь он загружается по умолчанию. Я бы хотел загрузить обычный по умолчанию.

Пока мне удалось выбрать ОС по умолчанию .. и по какой-то причине /boot/grub.cfg уже предполагает, что я хочу загрузить rt-kernel и поместить его в общую запись меню Linux (в моем случае Arch Linux).

25 голосов | спросил TomTom 23 AMpThu, 23 Apr 2015 00:04:28 +030004Thursday 2015, 00:04:28

5 ответов


2

jkt123's будет работать для большинства дистрибутивов, я думаю. Однако для Arch Linux это не сработало, по крайней мере, не с пакетами, которые у меня есть.

Индексы, которые вы можете установить с помощью grub-set-default, соответствуют только записям главного меню. Параметры ядра, однако, находятся в подменю. Поэтому либо вы перемещаете запись ядра из подменю в главное меню, либо помещаете запись поверх списка подменю и выбираете подменю.

Меню Grub

  • Arch Linux
  • Дополнительные параметры для Arch Linux
    • Ядро 1
    • Ядро 2
  • для Windows

Чтобы иметь возможность загружать Kernel 2, вам нужно либо поменять его на Kernel 1, либо вы поместите его вне подменю на том же уровне, что и Arch Linux или Windows. А затем установите номер по умолчанию для одного из показателей основного меню. Например, в меню выше «0» загружается «Arch Linux» и «1» boots Kernel 1.

Чтобы изменить иерархию и свопинг, откройте /boot/grub/grub.cfg и переместите запись, которую вы хотите переместить. Запись может выглядеть так:

menuentry 'ENTRY NAME'
   ... some code ...
}

Затем вам необходимо применить свои изменения. В моем случае с grub-mkconfig. Но это может отличаться от системы к системе.

ответил TomTom 23 AMpThu, 23 Apr 2015 11:30:44 +030030Thursday 2015, 11:30:44
19

Как указано в комментариях, вы можете установить загрузку ядра по умолчанию с помощью команды grub-set-default X, где X - количество ядро, в которое вы хотите загрузиться. В некоторых дистрибутивах вы также можете установить это число, отредактировав файл /etc/default/grub и установив GRUB_DEFAULT=X, а затем запустите update-grub.

Число - это индекс массива параметров ядра /ядра, показанный в меню GRUB во время загрузки, причем 0 является первой (самой верхней) записью. Обычно вы можете найти правильный номер, ища строки menuentry в /boot/grub/grub.cfg, например:

grep menuentry /boot/grub/grub.cfg

Вы увидите каждое ядро ​​с именем, которое отображается в меню загрузки GRUB. Первый - 0, второй - 1 и т. Д.

ответил jkt123 23 AMpThu, 23 Apr 2015 02:37:18 +030037Thursday 2015, 02:37:18
9

После битвы в течение 2 часов я нашел намного более простой способ добиться этого. Я просто RTFM. ;)

Добавьте две строки в /etc /default /grub

GRUB_SAVEDEFAULT=true
GRUB_DEFAULT=saved

Сделайте sudo update-grub, перезагрузитесь, зайдите в меню grub и выберите любое меню или пункт подменю, который вам нужен. Выбор будет сохранен, и в следующий раз ваш компьютер автоматически загрузится в него.

ответил Jimmy Falcon 3 FebruaryEurope/MoscowbSat, 03 Feb 2018 17:48:46 +0300000000pmSat, 03 Feb 2018 17:48:46 +030018 2018, 17:48:46
7

Простое выполнение grep 'menuentry' /boot/grub/grub.cfg содержит дополнительные записи, не относящиеся к фактическим версиям ядра или ОС. Например, он перечисляет

if [ x"${feature_menuentry_id}" = xy ]; then
  menuentry_id_option="--id"
  menuentry_id_option=""
export menuentry_id_option

Я хотел бы предложить небольшое усовершенствование методу поиска этого файла: use awk

$ awk '/menuentry/ && /class/ {count++; print count-1"****"$0 }' /boot/grub/grub.cfg                                            
0****menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-86df21bf-d95f-435c-9292-273bdbcba056' {
1****   menuentry 'Ubuntu, with Linux 3.19.0-26-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.19.0-26-generic-advanced-86df21bf-d95f-435c-9292-273bdbcba056' {
2****   menuentry 'Ubuntu, with Linux 3.19.0-26-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.19.0-26-generic-recovery-86df21bf-d95f-435c-9292-273bdbcba056' {
3****   menuentry 'Ubuntu, with Linux 3.13.0-62-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-62-generic-advanced-86df21bf-d95f-435c-9292-273bdbcba056' {
4****   menuentry 'Ubuntu, with Linux 3.13.0-62-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-62-generic-recovery-86df21bf-d95f-435c-9292-273bdbcba056' {

С помощью приведенной ниже команды и ее вывода вы можете увидеть код awk, соответствующий реальной версии ОС, и дать вам номер, который вы то он может использоваться в файле /etc/default/grub.

В дополнение к редактированию файла /etc/default/grub, я предлагаю использовать sed. В приведенной ниже команде замените X соответствующим номером, который вы получили от команды awk выше:

sudo sed -i 's/GRUB_DEFAULT=0/GRUB_DEFAULT=X/g' /etc/default/grub; sudo update-grub

ответил Sergiy Kolodyazhnyy 21 PM00000090000005031 2015, 21:55:50
0

Совсем недавно, как CentOS-6.6 grub.conf, это можно было бы отредактировать вручную, чтобы изменить выбор по умолчанию:

default=1
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
ответил Mike 19 Maypm17 2017, 23:14:14

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132