В последнее время новые версии ядер выходят достаточно часто. Раз в несколько месяцев выходит стабильный релиз. Ну а нестабильные кандидаты в релизы выходят и того чаще. Линус Торвальдс и множество разработчиков по всему миру постоянно работают над улучшением новых ядер и добавлением в них все больше и больше функциональности.
С каждой новой версией в ядре Linux появляется поддержка нескольких новых устройств, например, новых процессоров, видеокарт или даже сенсорных экранов. За последнее время, поддержка нового оборудования очень сильно улучшилась. Также в ядро включаются новые файловые системы, улучшается работа сетевого стека, исправляются ошибки и баги.
Если вам нужна более подробная информация об изменениях в какой-то определенной версии ядра смотрите ее Changelog на kernel.org, а в этой статье мы рассмотрим обновление ядра Linux до самой новой версии. Я попытаюсь не привязывать инструкцию к определенной версии ядра, новые ядра выходят достаточно часто и она будет актуальна для каждого из них. Рассмотрим обновление ядра Ubuntu и CentOS. Сначала давайте рассмотрим как обновить ядро в Ubuntu.
Обновление ядра Ubuntu вручную
Давайте сначала посмотрим какое ядро у вас установлено. Для этого откройте терминал и выполните:
uname -r
Например, у меня сейчас используется версия 5.4, и я могу обновиться к самой новой версии. Разработчики Ubuntu уже позаботились о том чтобы их пользователи не собирали ядро вручную и сделали deb пакеты новой версии ядра. Их можно скачать с официального сайта Canonical.
Я мог бы привести здесь команды wget для загрузки, если была бы известна версия ядра, но в нашем случае лучше будет использовать браузер. Откройте сайт http://kernel.ubuntu.com/~kernel-ppa/mainline/. Здесь находятся все, собираемые командой Ubuntu ядра.
Пролистайте вниз, именно там находятся более новые версии ядер:
Кроме того, в самом верху есть папка daily/current, в которой находятся самые свежие, ночные сборки ядер. Выберите нужную версию ядра, затем выберите архитектуру. Для 64-битных систем вам понадобится архитектура amd64:
Далее надо скачать четыре файла: два linux-headers, linux-image и linux-modules. Как видите, там есть несколько типов ядер: lowlatency и generic. Ядро lowlatency судя из названия имеет более низкие задержки при работе с прерываниями. Зато ядро generic имеет большую пропускную способность. В большинстве случаев достаточно ядра generic. Скачайте linux-headers для all и generic, а также linux-image-generic и linux-modules-generic:
После завершения загрузки можно переходить к установке. Перейдите в папку с установочными пакетами, например, ~/Downloads:
cd ~/Downloads
Запустите установку:
dpkg -i linux-headers* linux-image* linux-modules*
Если эта команда не сработала, можно пойти другим путем. Установите утилиту gdebi:
sudo apt install gdebi
Затем с помощью нее установите ядро:
sudo gdebi linux-headers*.deb linux-image-*.deb linux-modules-*.deb
Ядро установлено, осталось обновить загрузчик:
sudo update-grub
Теперь можно перезагружать компьютер и смотреть что получилось. После перезагрузки убедимся, что обновление ядра Linux до самой новой версии прошло успешно:
uname -r
Как видите ядро успешно установлено и работает. Но не спешите удалять старую версию ядра, рекомендуется иметь несколько версий ядра в системе, чтобы в случае неполадок иметь возможность загрузиться со старой рабочей версии. Если вы хотите настроить автоматическое обновление ядра в Ubuntu - используйте утилиту UKKU.
Если во время установки произошли какие-либо ошибки или ядро обновилось неправильно, и теперь система не загружается с новым ядром, вы можете использовать старое ядро. Также система может не запускаться, если вы используете проприетарный драйвер для видеокарты NVIDIA в таком случае не спешите качать самую новую версию ядра, используйте только стабильные ядра, в них, как правило, уже добавлена поддержка этого модуля.
А чтобы восстановить работу системы выберите пункт Advanced options for Ubuntu в меню Grub:
И запустите предыдущее работающее ядро:
После загрузки останется удалить неверно установленное ядро и еще раз обновить Grub. Найдите точное имя пакета ядра с помощью apt search. Например:
sudo apt search linux-headers-5.8
Затем удалите этот пакет:
Аналогично надо поступить с ядром. После этого обновите конфигурацию Grub:
Теперь ваша система вернулась к прежнему состоянию. Вы можете попробовать устанавливать более старую версию ядра или попробовать еще раз.
Обновление ядра Linux до в CentOS
А теперь давайте рассмотрим как обновить ядро Linux самой новой версии в CentOS. Инструкция проверена на CentOS 8, но скорее всего, будет работать и на RHEL 8, Fedora и других подобных дистрибутивах.
Как правило, новые ядра не включены в официальные репозитории CentOS, поэтому чтобы получить последнюю стабильную версию нам необходимо будет добавить репозиторий ELRepo. Это репозиторий коммерческих пакетов (Enterprise Linux Packages) он также поддерживается в RHEL и Fedora.
Для добавления репозитория сначала необходимо импортировать ключ:
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
Для того чтобы добавить репозиторий и необходимые компоненты в RHEL 7 и CentOS 7 выполните:
sudo yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
В CentOS 8 выполните:
sudo dnf install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
В CentOS 6:
sudo yum install https://www.elrepo.org/elrepo-release-6.el6.elrepo.noarch.rpm
Готово, теперь посмотрим текущую версию ядра:
uname -r
Можем устанавливать самую новую версию ядра Linux командой:
sudo yum --enablerepo=elrepo-kernel install kernel-ml
Пакет kernel-ml, это текущий стабильный mainline релиз, на данный момент, это 5.8. После того как установка нового ядра Linux завершена, обновите конфигурационный файл загрузчика:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Затем можете перезагружать систему. Обновление ядра в CentOS завершено.
Если после перезагрузки у вас возникли какие-либо проблемы с новым ядром, просто удалите его с помощью команды:
yum remove kernel-ml -y
Или:
dnf remove kernel-ml -y
И перезагрузите компьютер, чтобы вернуть систему к прежнему состоянию.
Выводы
В этой инструкции мы рассмотрели как обновить ядро Linux до 4.4 в Ubuntu и CentOS, но мы говорили только об обновлении ядра из бинарников. Также можно собрать ядро из исходных кодов, которые доступны для загрузки на официальном сайте ядра. О сборке ядра Linux я писал в отдельной статье. Вроде все разобрали, если остались вопросы - пишите в комментариях.