Главная >> Ядро >> Обновление ядра Linux до новой версии

Обновление ядра Linux до новой версии

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

С каждой новой версией в ядре 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:

kernel12

И запустите предыдущее работающее ядро:

kernel13

После загрузки останется удалить неверно установленное ядро и еще раз обновить Grub. Найдите точное имя пакета ядра с помощью apt search. Например:

sudo apt search linux-headers-5.8

Затем удалите этот пакет:

sudo apt remove linux-headers-5.8-000055-generic

Аналогично надо поступить с ядром. После этого обновите конфигурацию Grub:

sudo update-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 я писал в отдельной статье. Вроде все разобрали, если остались вопросы - пишите в комментариях.

Оставьте свой Email для того чтобы получать анонсы новых статей и полезную информацию о Linux по электронной почте
Pеклама
Посмотреть детали

Anubis – это максимально легкое open-source решение, созданное специально для защиты небольших веб-ресурсов от бесконечного потока запросов от ботов и AI парсеров. Этот инструмент можно считать "ядерным вариантом", потому что он заставляет ботов выполнять вычисления похожие на майнинг криптовалюты. Но это неплохая альтернатива для тех, кто не может или не хочет использовать Cloudflare. Посмотреть детали

23 комментария к “Обновление ядра Linux до новой версии”

  1. Спасибо за статью.
    Подписан на вашу рассылку, так что в качестве обратной связи с читателями передаю вам привет!

    Ответить
  2. Система Минт 17.3 Роза, ядро 3.16. Делаю все как описано в статье - после рестарта ядро 3.16. Иду в диспетчер обновлений, вижу предлагаемые ядра для обновления, 4-ки нет ни одной, рекомендуемое ядро 3.19, устанавливаю - работает, 3.16 убиваю. Ошибок нигде не выдавало. Остался пока без 4.4.

    Ответить
    • Выполните в место: sudo dpkg -i linux*.deb - sudo dpkg -i *.deb И выполнять команду обязательно в папке, в которую были загружены установочные пакеты.

      Ответить
    • Да у меня такая же беда, обновился на 4.2 правда, было 3.19. Теперь вай фай с блютузом, не запускаются, пока остался на 3.19.

      Подожду уже выхода Ubuntu 16.04 посмотрим, что будет в релизе, должны пофиксить по идее...

      Ответить
  3. Ребзя а чего у меня не хочет обновлять? Сейчас стоит на 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

    Ответить
  4. На 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'

    Ответить
  5. E: Невозможно получить блокировку внешнего интерфейса dpkg (/var/lib/dpkg/lock-frontend); у вас есть права суперпользователя?

    Ответить
  6. При запуске закачанных двух файлов вышла ошибка: dpkg: пакет обработки ошибок linux-image-4.18.16-041816-generic (--install):
    проблемы зависимостей - оставляем"не задано"
    При обработке были обнаружены ошибки:
    linux-заголовки-4.18.16-041816-дженерик
    linux-образ-4.18.16-041816-дженерик

    Ответить
    • Ден, тут надо качать три файла. хедерс, модулес, кернел. Причём хедерс на версии 5.7 сработал только тот что с приставкой "all". Админ! Поправь статью! Она слегка устарела, но полезна многим!

      Ответить
  7. Здравствуйте.
    Поставил Ubuntu 20.04. Была проблема с черным экраном при выключении.
    Обновил ядро с 5.4.0-58 на 5.10.0-051000. Проблема исчезла. Но сейчас при выключении/перезагрузке сразу после логотипа ноутбука подгружает или настраивает что-то(загружает это ядро мб. Пишет с самого чала Loading 5.10..... , дальше много строк, а слева [OK] зеленым). Фотки не прикрепляются.
    Пробовал ядро вернуть. Но тогда комп не выключается, а такое включение остается.

    Ответить
  8. 7.7равсвсвуйте, подскажите пожалуйста как обновить версию ядра на Centos 7.7 3.10.0-1062.4.3 до версии CentOS 7.7 версия ядра 3.10.0-1062.9.1.el7.x86_64

    Ответить
  9. Подскажите, пробую обновить по Вашей инструкции ядро 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

    Ответить
  10. Мб запоздал с ответом, но все же. Если image и modules установились, но не ставится headers generic - попробуйте headers all. Сам с этим столкнулся, headers all стал без проблем. Проверял на разных ядрах.

    Ответить

Оставьте комментарий