Ядро Linux (kernel) — ключевой компонент ОС. Регулярное обновление ядра закрывает критические уязвимости (Spectre, Meltdown, Dirty Cow), добавляет поддержку нового железа и улучшает производительность.
Проверка текущей версии ядра
# Версия ядра
uname -r
# Полная информация
uname -a
# Все установленные ядра
dpkg --list | grep linux-image
# Пример вывода:
# 6.5.0-26-generic — текущее
# 6.5.0-21-generic — старое (будет удалено)
Обновление ядра через apt (Ubuntu/Debian)
# Стандартное обновление включает ядро
sudo apt update
sudo apt full-upgrade -y
# Проверить доступные версии ядра
apt-cache search linux-image | grep generic
# Установить конкретную версию
sudo apt install linux-image-6.8.0-31-generic -y
# ОБЯЗАТЕЛЬНО перезагрузить для применения
sudo reboot
Проверка после перезагрузки
# Убедиться что загрузилось новое ядро
uname -r
# Проверить, нет ли проблем с модулями
dmesg | grep -i error | head -20
Откат к предыдущему ядру через GRUB
Если новое ядро вызвало проблемы:
- При перезагрузке зажмите
Shift(Legacy BIOS) илиEsc(UEFI) для входа в GRUB - Выберите Advanced options for Ubuntu
- Выберите предыдущую версию ядра
- После успешной загрузки — удалите проблемное ядро:
sudo apt remove linux-image-6.8.0-31-generic
sudo update-grub
Установка mainline-ядра (для опытных)
# Ubuntu Mainline Kernel PPA (Canonical)
# Позволяет устанавливать новейшие ядра
sudo add-apt-repository ppa:cappelikan/ppa
sudo apt update
sudo apt install mainline
# Через GUI утилиту выбрать и установить нужную версию
Разбор типичных ошибок обновления ядра
После обновления ядра сервер не грузится, останавливается в GRUB rescue — чаще всего это признак того, что новое ядро не смогло собрать initramfs с нужными модулями (например, драйвером виртуального диска virtio на VPS).
error: no such device: /dev/sda1
Entering rescue mode...
grub rescue>
Через консоль хостинга (VNC/KVM) загрузитесь со старым ядром через меню GRUB, затем пересоберите initramfs для нового: sudo update-initramfs -u -k 6.8.0-31-generic, и только после успешной пересборки пробуйте грузиться с новым ядром снова.
"Warning: Kernel is too old" или модуль не грузится после обновления — сторонние модули ядра (VirtualBox, NVIDIA, ZFS через DKMS) собираются под конкретную версию заголовков и не пересобираются автоматически при обновлении через apt, если пакет заголовков не совпадает.
modprobe: ERROR: could not insert 'zfs': Invalid argument
dmesg | tail
ZFS: module license 'CDDL' taints kernel
Установите заголовки для новой версии (sudo apt install linux-headers-$(uname -r)) и пересоберите модуль: sudo dkms autoinstall. Без этого шага DKMS-модули остаются привязанными к старому ядру.
Способы обновления ядра: сравнение
| Способ | Источник ядра | Стабильность | Downtime |
|---|---|---|---|
| apt full-upgrade | Официальный репозиторий дистрибутива | Высокая, протестировано вендором | Требуется перезагрузка |
| Ubuntu Livepatch | Патчи безопасности без замены ядра | Высокая для критичных CVE | Без перезагрузки |
| Mainline PPA | Сборки с kernel.org, не тестированы Canonical | Ниже, возможны регрессии | Требуется перезагрузка |
| Сборка из исходников | Исходный код с произвольными патчами | Зависит от квалификации | Требуется перезагрузка |
Когда обновление ядра стоит отложить
- Сервер использует специфичные модули ядра (проприетарные драйверы, ZFS, кастомные сетевые модули) без готовой сборки под новую версию — сначала проверьте совместимость модулей на тестовом окружении.
- Ближайшее время — пиковая нагрузка (распродажа, релиз) — перезагрузка для применения нового ядра создаёт риск простоя именно в критичный момент.
- Нет доступа к консоли хостинга (VNC/KVM) на случай, если сервер не поднимется после перезагрузки — без такого доступа восстановление после неудачного апдейта ядра может потребовать обращения в поддержку хостинга и долгого ожидания.
Проверка результата
- Проверьте активную версию:
uname -rдолжен совпадать с версией, которую вы устанавливали. - Убедитесь, что старое ядро осталось в GRUB как запасной вариант:
awk -F"'" '/menuentry / {print $2}' /boot/grub/grub.cfgдолжен содержать обе версии. - Проверьте отсутствие ошибок модулей:
dmesg | grep -iE "error|fail" | head -20— критичных сообщений о драйверах быть не должно. - Проверьте ключевые сервисы после перезагрузки:
systemctl --failedдолжен вернуть пустой список.
Обновление ядра часто идёт вместе с обновлением всей системы — см. статью про переход между версиями Debian и общее руководство по обновлению ОС на VDS.