В последнее время новые версии ядер выходят достаточно часто. Раз в несколько месяцев выходит стабильный релиз. Ну а нестабильные кандидаты в релизы выходят и того чаще. Линус Торвальдс и множество разработчиков по всему миру постоянно работают над улучшением новых ядер и добавлением в них все больше и больше функциональности.
С каждой новой версией в ядре 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 я писал в отдельной статье. Вроде все разобрали, если остались вопросы - пишите в комментариях.
Спасибо за статью.
Подписан на вашу рассылку, так что в качестве обратной связи с читателями передаю вам привет!
Система Минт 17.3 Роза, ядро 3.16. Делаю все как описано в статье - после рестарта ядро 3.16. Иду в диспетчер обновлений, вижу предлагаемые ядра для обновления, 4-ки нет ни одной, рекомендуемое ядро 3.19, устанавливаю - работает, 3.16 убиваю. Ошибок нигде не выдавало. Остался пока без 4.4.
Выполните в место: sudo dpkg -i linux*.deb - sudo dpkg -i *.deb И выполнять команду обязательно в папке, в которую были загружены установочные пакеты.
Установил ядро 4.4, но слетел Вайфай, запустить не смог, пока откатился на старое ядро.
Да у меня такая же беда, обновился на 4.2 правда, было 3.19. Теперь вай фай с блютузом, не запускаются, пока остался на 3.19.
Подожду уже выхода Ubuntu 16.04 посмотрим, что будет в релизе, должны пофиксить по идее...
Ребзя а чего у меня не хочет обновлять? Сейчас стоит на VPS Ubuntu Xenial (16.04 LTS) (GNU/Linux 4.5.7-std-3 x86_64). Пробую обновить до 4.7.3 и ошибку пишет:
Selecting previously unselected package linux-headers-4.7.3-040703-generic.
(Reading database ... 20139 files and directories currently installed.)
Preparing to unpack linux-headers-4.7.3-040703-generic_4.7.3-040703.201609070334_amd64.deb ...
Unpacking linux-headers-4.7.3-040703-generic (4.7.3-040703.201609070334) ...
Selecting previously unselected package linux-image-4.7.3-040703-generic.
Preparing to unpack linux-image-4.7.3-040703-generic_4.7.3-040703.201609070334_amd64.deb ...
Done.
Unpacking linux-image-4.7.3-040703-generic (4.7.3-040703.201609070334) ...
dpkg: dependency problems prevent configuration of linux-headers-4.7.3-040703-generic:
linux-headers-4.7.3-040703-generic depends on linux-headers-4.7.3-040703; however:
Package linux-headers-4.7.3-040703 is not installed.
dpkg: error processing package linux-headers-4.7.3-040703-generic (--install):
dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of linux-image-4.7.3-040703-generic:
linux-image-4.7.3-040703-generic depends on initramfs-tools | linux-initramfs-tool; however:
Package initramfs-tools is not installed.
Package linux-initramfs-tool is not installed.
dpkg: error processing package linux-image-4.7.3-040703-generic (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
linux-headers-4.7.3-040703-generic
linux-image-4.7.3-040703-generic
На 16.10 вывод следующий:
KernelUpdateChecker
Traceback (most recent call last):
File "/usr/bin/lsb_release", line 95, in
main()
File "/usr/bin/lsb_release", line 59, in main
distinfo = lsb_release.get_distro_information()
File "/usr/lib/python3/dist-packages/lsb_release.py", line 383, in get_distro_information
distinfo = guess_debian_release()
File "/usr/lib/python3/dist-packages/lsb_release.py", line 281, in guess_debian_release
get_distro_info(distinfo['ID'])
File "/usr/lib/python3/dist-packages/lsb_release.py", line 41, in get_distro_info
RELEASES_ORDER.sort(key=lambda n: float(n[0]))
File "/usr/lib/python3/dist-packages/lsb_release.py", line 41, in
RELEASES_ORDER.sort(key=lambda n: float(n[0]))
ValueError: could not convert string to float: '8.04 LTS'
А что выдает lsb_release?
А на сколько они стабильные, вот например отсюда: http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9/
Сейчас 4.4.0-57-generic x86_64
Спасибо!
вот тут наверное так?
sudo apt remove linux-headerS-4.7* linux-image-4.7*
без S не сработало.
А какое ядро посоветуете, если система установлена после wubi? 14.4.0-143-generic ubuntu 14 TT
А как обновить ядро в openSUSE 15?
E: Невозможно получить блокировку внешнего интерфейса dpkg (/var/lib/dpkg/lock-frontend); у вас есть права суперпользователя?
что это значит .
При запуске закачанных двух файлов вышла ошибка: dpkg: пакет обработки ошибок linux-image-4.18.16-041816-generic (--install):
проблемы зависимостей - оставляем"не задано"
При обработке были обнаружены ошибки:
linux-заголовки-4.18.16-041816-дженерик
linux-образ-4.18.16-041816-дженерик
Ден, тут надо качать три файла. хедерс, модулес, кернел. Причём хедерс на версии 5.7 сработал только тот что с приставкой "all". Админ! Поправь статью! Она слегка устарела, но полезна многим!
а как в FEDORA (RED HAT) Обновить ядро ?
D ukuu последнее ядро 5.7.1 больше не обновляется. Бесплатная версия. Платная стоит 15 вечно зелёных.
Здравствуйте.
Поставил Ubuntu 20.04. Была проблема с черным экраном при выключении.
Обновил ядро с 5.4.0-58 на 5.10.0-051000. Проблема исчезла. Но сейчас при выключении/перезагрузке сразу после логотипа ноутбука подгружает или настраивает что-то(загружает это ядро мб. Пишет с самого чала Loading 5.10..... , дальше много строк, а слева [OK] зеленым). Фотки не прикрепляются.
Пробовал ядро вернуть. Но тогда комп не выключается, а такое включение остается.
7.7равсвсвуйте, подскажите пожалуйста как обновить версию ядра на Centos 7.7 3.10.0-1062.4.3 до версии CentOS 7.7 версия ядра 3.10.0-1062.9.1.el7.x86_64
Подскажите, пробую обновить по Вашей инструкции ядро Ubuntu Server 20.04 с 5.4.0-97-generic до последнего 5.17-rc7 и в момент установки, возникает ошибка.
Не подскажите что это значит?
sudo dpkg -i linux-headers* linux-image* linux-modules*
Выбор ранее не выбранного пакета linux-headers-5.17.0-051700rc7.
(Чтение базы данных … на данный момент установлено 257589 файлов и каталогов.)
Подготовка к распаковке linux-headers-5.17.0-051700rc7_5.17.0-051700rc7.202203062330_all.deb …
Распаковывается linux-headers-5.17.0-051700rc7 (5.17.0-051700rc7.202203062330) …
Выбор ранее не выбранного пакета linux-headers-5.17.0-051700rc7-generic.
Подготовка к распаковке linux-headers-5.17.0-051700rc7-generic_5.17.0-051700rc7.202203062330_amd64.deb …
Распаковывается linux-headers-5.17.0-051700rc7-generic (5.17.0-051700rc7.202203062330) …
Выбор ранее не выбранного пакета linux-image-unsigned-5.17.0-051700rc7-generic.
Подготовка к распаковке linux-image-unsigned-5.17.0-051700rc7-generic_5.17.0-051700rc7.202203062330_amd64.deb …
Распаковывается linux-image-unsigned-5.17.0-051700rc7-generic (5.17.0-051700rc7.202203062330) …
Выбор ранее не выбранного пакета linux-modules-5.17.0-051700rc7-generic.
Подготовка к распаковке linux-modules-5.17.0-051700rc7-generic_5.17.0-051700rc7.202203062330_amd64.deb …
Распаковывается linux-modules-5.17.0-051700rc7-generic (5.17.0-051700rc7.202203062330) …
Настраивается пакет linux-headers-5.17.0-051700rc7 (5.17.0-051700rc7.202203062330) …
dpkg: зависимости пакетов не позволяют настроить пакет linux-headers-5.17.0-051700rc7-generic:
linux-headers-5.17.0-051700rc7-generic зависит от libc6 (>= 2.34), однако:
Версия libc6:amd64 в системе — 2.31-0ubuntu9.7.
linux-headers-5.17.0-051700rc7-generic зависит от libssl3 (>= 3.0.0~~alpha1), однако:
Пакет libssl3 не установлен.
dpkg: ошибка при обработке пакета linux-headers-5.17.0-051700rc7-generic (--install):
проблемы зависимостей — оставляем не настроенным
Настраивается пакет linux-image-unsigned-5.17.0-051700rc7-generic (5.17.0-051700rc7.202203062330) …
I: /boot/vmlinuz.old is now a symlink to vmlinuz-5.4.0-104-generic
I: /boot/initrd.img.old is now a symlink to initrd.img-5.4.0-104-generic
I: /boot/vmlinuz is now a symlink to vmlinuz-5.17.0-051700rc7-generic
I: /boot/initrd.img is now a symlink to initrd.img-5.17.0-051700rc7-generic
Настраивается пакет linux-modules-5.17.0-051700rc7-generic (5.17.0-051700rc7.202203062330) …
Обрабатываются триггеры для linux-image-unsigned-5.17.0-051700rc7-generic (5.17.0-051700rc7.202203062330) …
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-5.17.0-051700rc7-generic
/etc/kernel/postinst.d/zz-update-grub:
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.17.0-051700rc7-generic
Found initrd image: /boot/initrd.img-5.17.0-051700rc7-generic
Found linux image: /boot/vmlinuz-5.4.0-104-generic
Found initrd image: /boot/initrd.img-5.4.0-104-generic
Found linux image: /boot/vmlinuz-5.4.0-100-generic
Found initrd image: /boot/initrd.img-5.4.0-100-generic
Found linux image: /boot/vmlinuz-5.4.0-99-generic
Found initrd image: /boot/initrd.img-5.4.0-99-generic
Found linux image: /boot/vmlinuz-5.4.0-97-generic
Found initrd image: /boot/initrd.img-5.4.0-97-generic
done
При обработке следующих пакетов произошли ошибки:
linux-headers-5.17.0-051700rc7-generic
Мб запоздал с ответом, но все же. Если image и modules установились, но не ставится headers generic - попробуйте headers all. Сам с этим столкнулся, headers all стал без проблем. Проверял на разных ядрах.