Как обновить grub в centos

Обновлено: 30.06.2024

Ядру Linux можно передавать различные параметры для изменения стандартного поведения или информирования о нестандартной конфигурации оборудования. Делать это можно непосредственно перед загрузкой ядра или уже во время выполнения. Во время выполнения параметры ядра можно установить отредактировав файлы в подсистеме /proc или /sys. Перед загрузкой параметры передаются с помощью загрузчика Grub.

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

Настройка параметров ядра Grub в системе

Файл шаблона конфигурации Grub в Debian подобных системах находится по адресу /etc/default/grub. Добавьте параметр ядра в виде имя = значение в переменную GRUB_CMDLINE_LINUX_DEFAULT:

sudo vi /etc/default/grub

Здесь же вы можете удалить нежелательные параметры ядра Grub установленные по умолчанию, например, заменить quiet на verbose для подробного вывода информации о процессе загрузки. Затем выполните следующее чтобы обновить конфигурацию загрузчика:

Если такой команды не существует нужно установить пакет grub2-common:

sudo apt install grub2-common

В Fedora и CentOS скрипта update-grub для обновления конфигурации загрузчика нет, поэтому надо вручную сгенерировать новый конфигурационный файл:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Лучше всего добавлять параметры загрузки ядра linux именно этим способом, но давайте рассмотрим ещё несколько альтернативных вариантов

Параметры загрузки ядра в grub.cfg

Если вы не можете воспользоваться способом, описанным выше можно отредактировать непосредственно конфигурационный файл загрузчика который находится по пути /boot/grub/grub.conf. В этом файле нужно найти секцию отвечающую за стандартную загрузку Linux. Обычно, это первая секция menuentry:


Найдите её, а затем в этой секции найдите строчку linux /boot/vmlinuz. в конец этой строки вы и можете дописать свои параметры, в таком же формате. Затем сохраните изменения в файле и перезагрузите компьютер. Ядро загрузится с новыми параметрами. Если вас интересовал вопрос какой командой загружается ядро linux в grub, то это именно команда linux. Синтаксис её такой:

linux параметры_ядра

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

Параметры ядра Grub при загрузке

Загрузчик Grub позволяет также редактировать пункты меню перед запуском системы. Для этого в меню Grub выберите нужный пункт и нажмите клавишу E. Откроется редактор текущей секции меню. Здесь надо, аналогично предыдущему способу найти строчку linux /boot/vmlinuz. и дописать в конец ваши параметры ядра Linux, например, init=/bin/bash:


Затем нажмите кнопку F10 или Ctrl+X чтобы продолжить загрузку с новыми параметрами. Эти параметры будут актуальны до следующей перезагрузки. На этом всё. Надеюсь информация из статьи была для вас полезной.

Ядро операционной системы - это один из самых важных компонентов Linux, поскольку именно там выполняются все самые важные операции, такие как, управление памятью, управление процессами, работа с сетью на самом низком уровне и управление аппаратным обеспечением. Если в ядре есть какая-либо уязвимость, то это открывает злоумышленникам полный доступ к системе.

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

Проверка версии ядра

Вместе с дистрибутивом устанавливается и определенная версия ядра. Перед тем как перейти к обновлению нужно сначала узнать какая версия установлена сейчас и нужно ли ее обновлять. Для этого есть команда uname:


Утилита покажет текущую версию вашего ядра, включая архитектуру, для которой оно было собрано. Чтобы посмотреть всю информацию можно использовать опцию -a:


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

Обновление ядра CentOS

В CentOS можно использовать репозиторий ELRepo, с помощью него можно выполнить обновление ядра CentOS 7 до самой новой версии. Сначала нужно подключить репозиторий к системе:


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

sudo yum --disablerepo="*" --enablerepo="elrepo-kernel" list available


sudo yum --enablerepo=elrepo-kernel install kernel-ml

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

Настройка загрузчика Grub

Для того чтобы новое ядро загружалось автоматически, необходимо поменять несколько параметров запуска дистрибутива в загрузчике Grub. Откройте конфигурационный файл /etc/defaul/grub и измените значение переменной GRUB_DEFAULT на 0:

Это означает, что по умолчанию будет использоваться первое ядро , которое находится в списке Grub. А первым обычно размещается именно самое новое. Чтобы обновить конфигурацию выполните команду:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

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

Выводы

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

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

Проверка версии ядра

Вместе с дистрибутивом устанавливается и определенная версия ядра. Перед тем как перейти к обновлению нужно сначала узнать какая версия установлена сейчас и нужно ли ее обновлять. Для этого есть команда uname:


Утилита покажет текущую версию вашего ядра, включая архитектуру, для которой оно было собрано. Чтобы посмотреть всю информацию можно использовать опцию -a:


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

Обновление ядра CentOS

В CentOS можно использовать репозиторий ELRepo, с помощью него можно выполнить обновление ядра CentOS 7 до самой новой версии. Сначала нужно подключить репозиторий к системе:


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


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

Настройка загрузчика Grub

Для того чтобы новое ядро загружалось автоматически, необходимо поменять несколько параметров запуска дистрибутива в загрузчике Grub. Откройте конфигурационный файл /etc/defaul/grub и измените значение переменной GRUB_DEFAULT на 0:

Это означает, что по умолчанию будет использоваться первое ядро , которое находится в списке Grub. А первым обычно размещается именно самое новое. Чтобы обновить конфигурацию выполните команду:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

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

Выводы

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

В Ubuntu (и я думаю, в Debian тоже) есть системный скрипт с именем update-grub , который автоматически выполняет grub-mkconfig -o с правильным путем для файла конфигурации grub.

Есть ли подобная команда для распределений на основе Red Hat?

Если нет, то как система знает, где будет обновляться файл конфигурации grub при установке новой версии ядра?

Конкретные действия, которые должны выполняться при установке или удалении пакета RPM, включаются в пакете RPM непосредственно в разделах предварительной установки, после установки, предварительного деинсталляции и после удаления.

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

Запуск этой команды в пакете ядра для CentOS 6 возвращается среди других:

После анализа скриптов в Fedora я понимаю, что путь к файлу конфигурации читается из символической ссылки /etc/grub2.conf . Правильная строка grub2-mkconfig :

В Fedora я использую:

Я использую параметр -e , так что если символическая ссылка не разрешает существующий файл, вывод выводится на stdout, поэтому я что-то пошло не так.

На странице man для readlink:

Символьная ссылка /etc/grub2.cfg указывает на версию BIOS. В системе UEFI используйте:

Вы также можете использовать:

отредактируйте файл grub с помощью vi или vim , сохранить изменения и закрыть редактор с помощью: wq!

Это то, что вам нужно запустить для обновления grub в RedHat или CentOS:

Скрипт update-grub в Ubuntu на самом деле просто заглушка для grub-mkconfig , и это могут быть адаптированы к другим дистрибутивам без большой боли. Здесь он полностью:

In Ubuntu (and I guess in Debian too) there is a system script named update-grub which automatically executes grub-mkconfig -o with the correct path for the grub configuration file.

Is there any similar command for Red Hat based distributions?

If not, how do the system knows where is the grub configuration file to update when a new kernel version is installed?

6 Answers 6

Specific actions that need to happen when a RPM package is installed or removed are included within the RPM package itself in pre-install, post-install, pre-uninstall and post-uninstall sections.

For every installed RPM package you can query the RPM database for the exact scripts that are included with the rpm command:

Running that command on a kernel package for CentOS 6 returns among others:

From the manual:


After analyzing the scripts in Fedora, I realize that the configuration file path is read from the symlink /etc/grub2.conf . The correct grub2-mkconfig line is thus:

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

Файлы, используемые grub2 для загрузки системы, находятся в директории /boot/ .

Настроить меню загрузки можно с помощью специальных конфигурационных файлов: /etc/default/grub и /etc/grub.d/40_custom .

Параметры меню

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

По умолчанию файл /etc/default/grub содержит следующие настройки:

Рассмотрим назначение каждой строки:

Устанавливает задержку до начала автоматической загрузки. Если никакая клавиша на клавиатуре не будет нажата, то будет выполнена загрузка с параметрами, выбранными по умолчанию.

Как правило, в каждой ОС настраивается индивидуально и содержит дополнительную информацию о системе, отображаемую в меню загрузки.

GRUB_DEFAULT=saved

Устанавливает пункт меню по умолчанию. В данном случае указано, что пункт меню по умолчанию должен быть получен из файла-хранилища переменных /boot/grub2/grubenv из переменной saved_entry.

GRUB_DISABLE_SUBMENU=true

Формировать одноуровневое меню grub2.

GRUB_TERMINAL_OUTPUT="console"

Устройство, для отображения информации. Может быть указано несколько устройств.

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=openvz_ukapp1/root quiet"

Добавляет указанные параметры в строку инициализации ядра Linux. Работает как для стандартного режима загрузки, так и для режима восстановления.

Отключает меню режима восстановления (recovery mode) в меню загрузки grub2.

В фале /etc/grub.d/40_custom можно указать собственные пункты меня для grub2.

В случае внесения изменений в файлы /etc/default/grub или /etc/grub.d/40_custom необходимо сформировать новое меню с помощью команды:

Как установить меню по умолчанию

Вывести полный список доступных в системе пунктов меню grub2 можно следующими командами:

Для указания пункта меню по умолчанию, можно указать его номер по порядку (отсчет начинается с нуля) или полное имя.

Например, оба варианта будут идентичны. Данные взяты из приведенного выше списка:

Проверить правильность установки элемента меню grub2 по умолчанию:

Автоматическое изменение меню по умолчанию

Еще один интересный способ изменения пункта меню по умолчанию для grub2 – автоматическое сохранение последнего выбранного пункта меню.

Это можно достигнуть, добавив новый параметр

в файле /etc/default/grub и перестроив меню:

Теперь, в файле /boot/grub2/grubenv будет автоматически сохраняться меню, выбранное при последней загрузке системы.

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