Выбор ядра Linux по умолчанию

Обновлено: 04.07.2024

В этом руководстве описывается, как установить ядро ​​системы Oracle Linux по умолчанию из командной строки. Это руководство предназначено для пользователей Oracle Linux 8, но команда grubby также доступна в Oracle Linux 6 и Oracle Linux 7.

Фон

По умолчанию системы Oracle Linux настроены на загрузку самой последней версии ядра в первую очередь. В большинстве случаев изменение ядра по умолчанию не требуется.

Однако ядро ​​по умолчанию может быть неправильной версией для использования в определенных сценариях, например в следующих:

  • Текущая версия ядра может быть несовместима с используемым вами оборудованием.
  • Случаи, связанные с выпуском Unbreakable Enterprise Kernel (UEK) в системе
  • Выпуски UEK обычно основаны на более новых версиях ядра, чем версия Red Hat Compatible Kernel (RHCK), на которой основан выпуск Oracle Linux. Таким образом, новая версия UEK становится ядром по умолчанию, которое отличается от ядра Oracle Linux.
  • Если в системе установлена ​​бета-версия UEK или предварительная техническая версия, ядро ​​UEK необходимо понизить, чтобы гарантировать, что ядро ​​будет использоваться только в том случае, если оно намеренно и вручную выбрано администратором в качестве загрузочного ядра.
  • Возможно, потребуется повысить уровень ядра UEK, поскольку от него зависит определенное программное обеспечение.

Эти примеры и другие подобные случаи потребуют переключения между типами ядра.

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

Цели

В этом лабораторном занятии вы узнаете, как:

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

Что вам нужно?

  • Любая система Oracle Linux с установленным пакетом grubby

Проверить доступные ядра

Примечание. При использовании бесплатной тестовой среды см. Oracle Linux Lab Basics для подключения и других инструкций по использованию.

Для проверки того, какие ядра доступны в системе, доступно несколько методов.

Использование команды rpm

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

Список ядер в каталоге /boot

Команда создает точный список ядер, доступных в системе. Однако из-за того, как называются ядра, версию ядра, которую в настоящее время использует система, нелегко определить.

Использование команды grubby для определенных ядер или использование параметра ВСЕ:

Эта команда предоставляет более полную информацию о конфигурации загрузки, связанной с каждым ядром в системном каталоге /boot. Детали основаны на конфигурации заголовка GRUB.

Как правило, имена ядер включают номер исходной версии и номер сборки дистрибутива. Имена ядер в Oracle Linux также включают указания на то, являются ли они стандартными RHCK или основаны на UEK. Кроме того, имена также определяют архитектуру их системы. Например, суффикс el8 будет обозначать RHCK, а el8uek — UEK.

Проверьте текущее ядро ​​по умолчанию

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

Чтобы проверить, какое ядро ​​в настоящее время работает в системе, запустите:

Если ядро ​​по умолчанию и работающее в данный момент ядро ​​не идентичны, причиной может быть одна из следующих:

  • Установлено более новое ядро, но система не была перезагружена.
  • Во время перезагрузки системы альтернативное ядро ​​было выбрано вручную в качестве рабочего ядра.
  • Ядро по умолчанию было обновлено вручную, но после обновления система не была перезагружена.

Изменить ядро ​​по умолчанию

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

Изменение вступает в силу немедленно и сохраняется после перезагрузки системы.

У команды grubby есть дополнительные аргументы загрузки для настройки ядра и операций загрузки. Дополнительные сведения см. в документации.

Изменить параметры загрузки командной строки ядра

Используйте параметр --update-kernel для обновления записи kenel в сочетании с --args для добавления новых аргументов или --remove-arguments для удаления существующих аргументов. Для каждой опции можно указать несколько аргументов в списке, разделенном пробелами в кавычках.Вы можете добавлять и удалять аргументы в одной и той же операции.

Чтобы обновить конкретное ядро, укажите в параметре --update-kernel полный путь к ядру, которое вы хотите обновить. Чтобы обновить все записи ядра для использования определенного аргумента загрузки ядра, вы можете установить --update-kernel=ALL .

Для целей этого руководства вы можете обновить все записи ядра, чтобы изменить аргументы уровня ведения журнала и LANG:

Используйте команду grubby info=ALL, чтобы убедиться, что изменение реализовано во всех ядрах:

Видеодемонстрации

Обратите внимание, что в этом руководстве не описывается использование команды grubby, а объясняются базовые компоненты, с которыми взаимодействует grubby. Для большинства требований по управлению ядром в Oracle Linux достаточно грязного инструмента.

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

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

Но откуда мне знать номер? Числа в grub.cfg соответствуют только ОС, а не ядрам.

9 ответов 9

После 2 часов борьбы я нашел гораздо более простой способ добиться этого. Я просто РТФМ. ;)

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

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


По состоянию на 2020 год sudo update-grub возвращает команду, не найденную в Arch. Вместо этого следует использовать команду sudo grub-mkconfig -o /boot/grub/grub.cfg.

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

@RichieHH Я сделал этот комментарий до того, как отредактировал ответ. Раньше было не так ясно, будет ли сохраняться значение по умолчанию только при первой перезагрузке или каждый раз, когда я выбираю вариант. Вот почему я перефразировал его, чтобы лучше прояснить, что значение по умолчанию меняется каждый раз, когда вы вручную выбираете другую запись. Кстати, это сохраненное значение по умолчанию не обязательно является первым выбором (например, «Ubuntu»), оно может быть подзаголовком (например, «Ubuntu с linux XYZ generic»). Первый вариант не будет автоматически отражать значение по умолчанию, что может вас немного запутать, если у вас два ядра, такие как linux и linux-libre.

Я думаю, что на этом этапе большинство дистрибутивов переместили дополнительные ядра в подменю дополнительных параметров, как это обнаружил TomTom в случае с его Arch.

1) Найдите $menuentry_id_option для подменю:

2) Найдите $menuentry_id_option для входа в меню ядра, которое вы хотите использовать:

3) Закомментируйте ваш текущий grub по умолчанию в /etc/default/grub и замените его $menuentry_id_option подменю из первого шага и $menuentry_id_option выбранного ядра из второго шага, разделенных > .

В моем случае измененный GRUB_DEFAULT:

4) Обновите grub, чтобы внести изменения. Для Debian это делается так:

Готово. Теперь, когда вы загружаетесь, в расширенном меню должна быть звездочка, и вы должны загрузиться в выбранное ядро. Вы можете подтвердить это с помощью uname .

затем перезапустите update-grub .

Этот метод довольно авантюрен без использования консоли с графическим интерфейсом или последовательной консоли. Попытка изменить ядро ​​​​aws на универсальное ядро ​​​​и после перезагрузки экземпляра AWS EC2 (который был развернут в регионе, не поддерживающем функцию последовательной консоли), он недоступен. Кажется, это застряло в самом меню grub. , но системные проверки панели управления aws отображаются зеленым цветом.

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

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

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

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

Это не работает для меня.Последнее ядро ​​в моей установке — 4.4.0-64-generic (пункт меню 0), но я хочу, чтобы 4.4.0-59-generic (пункт меню 9) было загрузочным ядром по умолчанию. Я запустил grub-set-default 9, а затем grub-update и перезагрузился. Я позволяю grub загружаться с ядром по умолчанию, и он по-прежнему загружается с 4.4.0-64-generic. Я также попытался отредактировать /etc/default/grub, установить GRUB_DEFAULT=9 и запустить grub-update. При перезагрузке ничего не меняется, система по-прежнему загружается с версией 4.4.0-64-generic. Может я что-то пропустил, может кто подскажет?

@Dronacharya Спустя 5 лет я могу сказать вам, что вам, вероятно, нужно было написать как номер подменю (0 для верхнего, 1 для «Дополнительных параметров»), так и номер пункта меню (9), все в кавычках, как GRUB_DEFAULT .

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

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

С помощью приведенной ниже команды и ее вывода вы можете увидеть, что код 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


Это не ответ. Читается как комментарий. В ответе должно быть сказано: «Вот как установить запись по умолчанию в GRUB», а не «позвольте мне сделать дополнение к другому ответу». Вы можете легко отредактировать это в правильный ответ, но может быть разумнее просто оставить комментарий к ответу jkt123 об использовании awk вместо grep.

Я думаю, что этот ответ значительно улучшает ответ, предлагающий grep, если вы сравните вывод двух, вывод awk намного проще в использовании (включает число, легче читать). Но введение, вероятно, следует переписать, чтобы этот ответ стоял отдельно и не читался как комментарий к ответу grep.

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

Идея состоит в том, чтобы сохранить дополнительные параметры в списке grub на случай, если список по умолчанию будет изменен в настройщике Grub.

введите здесь описание изображения

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

введите здесь описание изображения

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

введите здесь описание изображения

и выберите нужное ядро

введите здесь описание изображения

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

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

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

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

Мое меню Grub

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

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

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

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

    Как установить загрузочное ядро ​​по умолчанию в Linux? Как изменить загрузочную запись по умолчанию для ядра? Как загрузиться со старой версией ядра? Как вернуться к предыдущей версии ядра?

    Как установить загрузочное ядро ​​по умолчанию в Linux ( CentOS / RHEL 7 )

    В моей последней статье я поделился командами для проверки, является ли сервер физическим или виртуальным в Linux или Unix. GRUB2 — это используемая в настоящее время версия GRUB. Программное обеспечение было переписано, чтобы разрешить плагины и расширить функции, доступные в системе меню. В остальном GRUB legacy и GRUB2 довольно похожи.

    По умолчанию для параметра save_entry установлено имя последнего установленного ядра типа пакета kernel. Это определяется в /etc/sysconfig/kernel директивами UPDATEDEFAULT и DEFAULTKERNEL. Файл может быть просмотрен пользователем root следующим образом:

    Когда устанавливаются новые ядра, они должны включать новую строфу в файл конфигурации загрузчика, /boot/grub2/grub.conf . Раздел по умолчанию основан на директиве save_entry в файле /boot/grub2/grubenv.

    Например, в настоящее время моя система настроена на загрузку с 3.10.0-957.1.3.el7.x86_64

    Теперь в моей системе загружено другое ядро

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

    Поэтому после перезагрузки будет загружена версия ядра, указанная в «сохраненной_записи». Теперь после перезагрузки, как и ожидалось, мое загруженное ядро ​​изменилось

    Как установить загрузочное ядро ​​по умолчанию?

    Конфигурация загрузки при использовании GRUB 2 находится в файле /boot/grub2/grub.cfg. Вы также можете обратиться к нему по файлу /etc/grub2.cfg, который является символической ссылкой. Чтобы заставить систему всегда использовать определенный пункт меню и установить загрузочное ядро ​​по умолчанию, используйте имя пункта меню в качестве ключа к директиве GRUB_DEFAULT в файле /etc/default/grub.

    Чтобы получить список доступных элементов меню, выполните следующую команду от имени пользователя root:

    GRUB 2 поддерживает использование числового значения в качестве ключа для директивы save_entry для изменения порядка загрузки ядра или операционных систем по умолчанию. Чтобы указать, какое ядро ​​или операционная система должны быть загружены первыми, т. е. установить загрузочное ядро ​​по умолчанию, передайте его номер команде grub2-set-default, которая устанавливает запись меню загрузки по умолчанию для всех последующих загрузок.

    ПРИМЕЧАНИЕ:
    команда grub2-set-default работает только с файлами конфигурации GRUB, созданными с параметром GRUB_DEFAULT=сохраненным в /etc/default/grub .

    Например, чтобы установить загрузочное ядро ​​по умолчанию, используйте числовое значение. Теперь согласно нашему файлу /etc/grub2.cfg у нас есть два пункта меню для ядра

    где в данный момент загружена "запись 0" (3.10.0-957.1.3.el7.x86_64).

    Давайте изменим его на старую или предыдущую версию ядра (3.10.0-693.el7.x86_64)

    Подтвердить изменения

    Далее перестройте конфигурацию GRUB2

    Теперь после перезагрузки узла мы видим, что старое ядро ​​успешно загружено

    Наконец, я надеюсь, что шаги из статьи по установке ядра загрузки по умолчанию в Linux были полезны. Итак, дайте мне знать ваши предложения и отзывы, используя раздел комментариев.

    Похожие записи

    Не нашли то, что искали? Выполните быстрый поиск в GoLinuxCloud

    Если мои статьи о GoLinuxCloud помогли вам, пожалуйста, купите мне кофе в знак признательности.

    Купить кофе GoLinuxCloud

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

    В этом руководстве мы изучим шаги по изменению версии ядра по умолчанию, т. е. переключению между различными установленными версиями ядра в RHEL/CentOS 8. Шаги, связанные с RHEL/CentOS 8, полностью отличаются от более старых выпусков, поскольку GRUB2 был дополнительно обновлен. к тому, что у нас было с RHEL/CentOS 7. Следовательно, теперь у нас есть специальный инструмент, называемый grubby, для изменения версий ядра по умолчанию

    Обзор грязного

    • grubby — это инструмент командной строки, используемый для настройки пунктов меню загрузчика в различных архитектурах.
    • Он используется для обновления и отображения информации о файлах конфигурации для различных загрузчиков архитектуры.
    • В первую очередь он предназначен для использования в сценариях, устанавливающих новые ядра и нуждающихся в поиске информации о текущей среде загрузки.
    • Если файл конфигурации загрузчика не найден, grubby будет использовать значение по умолчанию для этой архитектуры, например grub2 для компьютеров x86_64, elilo для ia64 и т. д.

    Список установленных версий ядра

    Для этого руководства я установил несколько ядер на свой сервер Red Hat 8. Поэтому в нашем примере мы будем переключаться между этими версиями ядра.

    В RHEL/CentOS 8 теперь rpm ядра распределяется между ядром ядра и модулями ядра. Вы можете узнать больше об этих rpm-пакетах ядра в разделе Что такое rpm-пакеты ядра и модуля ядра и как обновить эти rpm-пакеты

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

    Это напечатает версию initramfs всех установленных ядер.

    Текущее активное (загруженное) ядро

    Чтобы проверить текущую активную версию ядра, мы будем использовать uname с параметром -r, что даст нам информацию о выпуске ядра:

    Получить дополнительную информацию о загрузочных записях

    Теперь с grubby мы перечислили доступные загрузочные записи, чтобы получить больше информации об отдельных загрузочных записях, которые мы можем использовать:

    Проверьте версию ядра, которая будет активирована после перезагрузки

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

    Таким образом, наше текущее активное ядро ​​было 4.18.0-193.el8.x86_64, но после перезагрузки будет активно 4.18.0-193.14.3.el8_2.x86_64.

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

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

    Поэтому загрузочная запись со значением индекса 0 будет активирована после перезагрузки моего сервера Linux.

    Изменить ядро ​​по умолчанию (сменить версию ядра)

    Теперь предположим, что мы хотим изменить ядро ​​по умолчанию, которое будет активным после перезагрузки, с 4.18.0-193.14.3.el8_2.x86_64 на 4.18.0-193.1.2.el8_2.x86_64

    Мы можем использовать

    • название ядра
    • загрузочная запись ядра
    • значение индекса ядра

    изменить версию ядра по умолчанию и переключить ядро ​​для активации после перезагрузки. В этом примере я использую загрузочную запись ядра для изменения версии ядра по умолчанию

    Таким образом, версия ядра по умолчанию успешно обновлена.

    Проверьте новое ядро ​​по умолчанию

    Далее используйте ту же команду, что и ранее с grubby, чтобы проверить новое ядро ​​по умолчанию:

    Чтобы получить дополнительную информацию об этой загрузочной записи:

    Таким образом, мы также можем проверить индекс по умолчанию, он должен быть " 1 " на основе приведенной выше информации:

    Теперь перезагрузите сервер и проверьте активное ядро ​​с помощью uname :

    Итак, наше активное ядро ​​такое же, какое мы установили в качестве ядра по умолчанию. Используя этот метод, вы можете легко переключаться между различными версиями ядра в RHEL/CentOS 8 Linux.

    Что дальше

    Теперь, когда вы знаете об этом замечательном грязном инструменте, пришло время изучить эту команду и узнать больше о ее возможностях:

    Заключение

    В этом руководстве мы вкратце узнали об инструменте grubby и о том, как его можно использовать для изменения версии ядра по умолчанию в RHEL/CentOS 8 Linux. grubby — очень универсальный инструмент, который может делать гораздо больше, чем просто переключение версий ядра, например, обновлять записи ядра, конфигурацию grub и т. д.

    Наконец, я надеюсь, что шаги из статьи по переключению между различными версиями ядра в Red Hat и CentOS 8 Linux были полезны. Итак, дайте мне знать ваши предложения и отзывы, используя раздел комментариев.

    Похожие записи

    Не нашли то, что искали? Выполните быстрый поиск в GoLinuxCloud

    Если мои статьи о GoLinuxCloud помогли вам, пожалуйста, купите мне кофе в знак признательности.

    Купить кофе GoLinuxCloud

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

    Читайте также: