Обновление ядра CentOS до последней версии
В этом руководстве объясняется, как установить более новое ядро Linux в CentOS 7 с помощью репозитория ELRepo.
ELRepo прекратил поддержку el7 в июле 2024 года. Описанная в этом руководстве процедура больше не работает. Это руководство сохраняется в качестве архивного материала.
Если вы всё ещё используете CentOS 7, рассмотрите возможность перехода на AlmaLinux 8 с помощью инструмента Elevate.
Выбор варианта ядра
ELRepo предоставляет два варианта ядра:
kernel-ml устанавливает основное ядро (mainline), которое соответствует последним версиям Linux upstream. Оно быстро получает новые функции и улучшения, но может привести к проблемам совместимости с драйверами или рабочими нагрузками в производственной среде.
kernel-lt устанавливает ядро с долгосрочной поддержкой, в котором стабильность имеет приоритет над новыми функциями. Это рекомендуемый вариант для производственных серверов.
Обновление системы и установка ELRepo
Обновите установленные пакеты:
yum -y update
Импортируйте ключ GPG ELRepo и установите репозиторий:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
Проверьте, что репозиторий был успешно добавлен:
yum repolist | grep elrepo
Очистите кэш yum:
yum clean all
Установка нового ядра
Чтобы установить ядро с долгосрочной поддержкой (рекомендуется для производственных систем):
yum --enablerepo=elrepo-kernel install kernel-lt kernel-lt-headers kernel-lt-tools kernel-lt-tools-libs
Чтобы вместо этого установить основное ядро (mainline):
yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-headers kernel-ml-tools kernel-ml-tools-libs
Проверьте, что пакеты ядра были установлены:
rpm -qa | grep '^kernel-'
Установка нового ядра в качестве используемого по умолчанию
Выведите список всех установленных ядер вместе с порядком их загрузки:
grubby --info=ALL | grep -E 'title|kernel'
Новейшему ядру обычно присваивается индекс 0, но перед установкой его в качестве используемого по умолчанию проверьте порядок. Установите ядро по умолчанию по индексу:
grubby --set-default=0
Или, для большей надёжности, укажите полный путь к ядру:
grubby --set-default /boot/vmlinuz-<version>
Замените <version> фактической строкой версии из вывода команды grubby --info=ALL.
Проверьте ядро, используемое по умолчанию:
grubby --default-kernel grub2-editenv list
Если функция Secure Boot включена в BIOS/UEFI, сторонние ядра из ELRepo могут не загрузиться. Отключите Secure Boot перед перезагрузкой.
Перезагрузка и проверка
Перезагрузите сервер:
reboot
После загрузки системы проверьте версию используемого ядра:
uname -r
Удаление старых ядер
После того как вы убедились, что новое ядро работает корректно, удалите старые версии, чтобы освободить место на диске. Параметр --count=2 сохраняет два последних ядра в качестве резервного варианта:
yum install -y yum-utils package-cleanup --oldkernels --count=2
Аварийный откат
Если новое ядро не загружается, выберите предыдущее ядро в меню GRUB во время запуска системы. После загрузки со старым ядром снова установите его в качестве используемого по умолчанию:
grubby --set-default=1 reboot
Замените 1 индексом рабочего ядра из вывода команды grubby --info=ALL.