Как обновить ядро Ubuntu до mainline-версии
Введение
Ядро Linux — это ядро операционной системы Ubuntu. Оно монолитное и было разработано Линусом Торвальдсом. Все дистрибутивы Linux (Ubuntu, CentOS, openSUSE, Red Hat, Debian и др.) используют ядро Linux, но сборки и настройка могут отличаться.
В этом руководстве показано, как обновить ядро Ubuntu до последней mainline-сборки, предоставляемой Ubuntu Kernel Team. В качестве примера используется Ubuntu 16.04.2 Xenial Xerus с ядром 4.4, которое обновляется до 4.11.2.
Важно: mainline-ядро — это «ванильное» ядро с kernel.org, упакованное в .deb. Canonical выпускает свои стабильные production-ядра с дополнительной интеграцией и исправлениями; mainline полезен для тестов и для доступа к новым возможностям, но может быть менее стабилен.
Основная цель
Цель этой инструкции — показать безопасный, воспроизводимый путь обновления kernel до mainline, с проверками, откатом и удалением старых версий.
Что понадобится
- Доступ по SSH к серверу Ubuntu (root или пользователь с sudo).
- Интернет-доступ на сервере для скачивания пакетов.
- Простая резервная политика (снапшот или бэкап конфигураций/данных) — всегда делайте бэкап перед обновлением ядра.
Список задач
- Обновить репозитории и пакеты.
- Проверить текущую активную версию ядра.
- Скачивание и установка mainline-ядра.
- Обновление GRUB и перезагрузка.
- Опциональное удаление старых ядер.
Шаг 1 — Обновление репозиториев и установленных пакетов
Перед обновлением ядра обновите репозитории и все пакеты, чтобы свести к минимуму несовместимости.
Подключитесь к серверу через SSH. Если вы не используете прямой root, выполните sudo -s или sudo -i.
ssh [email protected]Обновите список пакетов:
sudo apt update
Затем обновите пакеты:
sudo apt upgrade -yПерезагрузите сервер (если ядро уже обновлялось или были критические обновления):
sudo rebootПосле перезагрузки проверьте, остались ли обновления:
sudo apt list --upgradeableУбедитесь, что нет ожидающих критических обновлений перед установкой нового ядра.
Важно: на продакшн-системах планируйте окна обслуживания и уведомляйте пользователей.
Шаг 2 — Проверка текущей активной версии ядра
Определим текущую архитектуру и версию ядра:
uname -msrПример вывода:
Linux 4.4.0-78-generic x86_64Это означает, что используется generic-ядро версии 4.4 на 64-битной архитектуре x86_64. Generic — это общее ядро. Для задач с низкой задержкой (аудио/видео, запись) существуют варианты lowlatency.
Шаг 3 — Установка новой версии ядра (mainline)
Mainline-сборки доступны на: http://kernel.ubuntu.com/~kernel-ppa/mainline/ . В примере мы обновляем до v4.11.2.
Создаём директорию для загрузки пакетов:
sudo mkdir -p ~/4.11.2
cd ~/4.11.2Скачиваем соответствующие пакеты для generic-ядра (amd64 в примере):
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.11.2/linux-headers-4.11.2-041102_4.11.2-041102.201705201036_all.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.11.2/linux-headers-4.11.2-041102-generic_4.11.2-041102.201705201036_amd64.deb
wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.11.2/linux-image-4.11.2-041102-generic_4.11.2-041102.201705201036_amd64.deb
Устанавливаем скачанные пакеты:
sudo dpkg -i *.debПосле установки обновляем конфигурацию загрузчика GRUB и перезагружаем систему:
sudo update-grub
sudo reboot
После перезагрузки снова проверяем версию ядра:
uname -msrОжидаемый вывод:
Linux 4.11.2-041102-generic x86_64Если система загрузилась с новым ядром — переходите к очистке старых версий при необходимости.
Шаг 4 — Удаление старых ядер
Чтобы освободить место и убрать неиспользуемые ядра, используем утилиту byobu, которая содержит удобную команду purge-old-kernels.
Установка byobu:
sudo apt install byobu
Проверяем установленные пакеты ядра:
dpkg -l | grep linux-imageПример: на сервере установлены версии 4.4.62, 4.4.78 и 4.11.2, при этом активно 4.11.2. По умолчанию purge-old-kernels сохраняет как минимум 2 версии (для отката).
Удаляем старые:
sudo purge-old-kernelsЕсли система сообщает “No kernels are eligible for removal”, значит установлено всего две версии и по умолчанию ничего не удаляется. Чтобы оставить только одну (последнюю), выполните:
sudo purge-old-kernels --keep 1 -qПосле очистки обновите GRUB:
sudo update-grub
Теперь на системе останется только выбранное вами ядро.
Важно: не удаляйте текущее активное ядро. byobu/purge-old-kernels предотвращают удаление запущенного ядра.
Критерии приёмки
- Сервер успешно загружается с новым ядром в течение нормального окна рестарта.
- Ключевые сервисы (веб, БД, мониторинг) проходят smoke-тесты в течение проверочного окна (обычно 15–60 минут).
- Нет критических ошибок в dmesg/syslog, связанных с драйверами или сетевыми интерфейсами.
- Доступна опция отката (предыдущий kernel в GRUB или резервная копия).
План отката (инцидентный runbook)
- Если после обновления сервер не загружается, перезагрузите и в меню GRUB выберите предыдущую версию ядра.
- Если предыдущая версия отсутствует — загрузитесь с live-USB/режима восстановления, смонтируйте корневой раздел и переустановите нужное пакетом linux-image-<версия>.deb или через apt (если доступ к Интернету).
- Если сеть не работает из-за драйверов, загрузитесь в rescue mode и верните пакет модуля/драйвера.
Команды для выбора в GRUB при загрузке (вручную) или для переустановки:
sudo update-grub
# для восстановления конкретной версии (если она доступна в репозитории или локально)
sudo dpkg -i /path/to/linux-image-*.deb
sudo update-grub
sudo reboot Совет: сохраняйте .deb-файлы старых ядер до тех пор, пока не подтвердите стабильность новой версии.
Риски и меры смягчения
| Риск | Вероятность | Последствия | Меры смягчения |
|---|---|---|---|
| Система не загружается с новым ядром | Средняя | Высокие (недоступность) | Оставить резервное ядро, иметь консоль доступа или KVM/IPMI, тестировать в staging |
| Ошибки драйверов (NIC, RAID, GPU) | Средняя | Средние/Высокие | Тестировать критичные драйверы в staging, иметь доступ к локальным репозиториям старых модулей |
| Несовместимость с ПО | Низкая/Средняя | Средние | Smoke-тесты, мониторинг метрик после обновления |
Альтернативные подходы
- Использовать официальные ядра Ubuntu (рекомендуется для продакшна) и получать обновления через APT.
- Инструменты вроде ukuu (уже не поддерживается) или его форка mainline/kernel-install helper (проверяйте совместимость с вашей версией Ubuntu).
- Сборка ядра из исходников — даёт максимальную гибкость, но требует навыков и тестирования.
Когда mainline не подходит: для критичных production-серверов с высокой доступностью лучше использовать стандартные, поддерживаемые Canonical ядра и протестированные PPA.
Чек-листы по ролям
Администратор системы
- Сделан бэкап конфигураций и важных данных.
- Проверены зависимости и доступность репозиториев.
- Скачаны .deb-файлы выбранной версии ядра.
- Обновлён GRUB и протестирован выбор ядра в GRUB.
DevOps/Инженер тестирования
- Запущены smoke-тесты приложений.
- Проверены сетевые интерфейсы, драйверы диска и модулей.
- Мониторинг настроен на алерты по ключевым метрикам после обновления.
Короткая методология обновления (SOP)
- Подготовка: уведомления и резервные копии.
- Обновление пакетов системы.
- Скачивание mainline-пакетов в отдельную директорию.
- Установка dpkg -i *.deb.
- Обновление GRUB и перезагрузка в контрольное окно.
- Выполнение smoke-тестов и мониторинг.
- Удаление старых ядер при успехе.
Совместимость и заметки по версиям
- Mainline-ядра могут не включать дополнительные патчи и улучшения Canonical (например, специфические патчи безопасности для Ubuntu).
- На старых версиях Ubuntu (например, 14.04) возможно отсутствие совместимости с новыми модулями — тестируйте в staging.
- Архитектура имеет значение: скачивайте пакеты, соответствующие вашей архитектуре (amd64, i386, arm64 и т.д.).
Полезные команды сводной проверки
- Показать активное ядро:
uname -r- Список установленных ядер:
dpkg -l | grep linux-image- Проверить логи ядра:
dmesg | less
journalctl -k | tail -n 200Глоссарий (одна строка)
- mainline: «ванильная» сборка ядра с kernel.org, без добавочных патчей дистрибутива.
- generic: стандартная конфигурация ядра для общего назначения.
- lowlatency: ядро с настройками для низкой задержки, полезно для ауди/видео задач.
Частые вопросы (FAQ)
Q: Когда стоит использовать mainline-ядро?
A: Когда вам нужны новые функции или исправления, которых нет в текущей стабильной сборке, и вы готовы тестировать и при необходимости откатиться.
Q: Можно ли автоматизировать обновления mainline-ядра?
A: Обычно нет — mainline-ядра лучше устанавливать вручную и тестировать. Для автоматизации используйте проверенные репозитории и CI в контролируемой среде.
Q: Что делать, если сеть не поднимается после обновления?
A: Перезагрузитесь в предыдущую версию ядра через GRUB, проанализируйте dmesg/journalctl, проверьте модуль драйвера сетевой карты.
Итог
Обновление ядра до mainline даёт доступ к новым возможностям, но требует осторожности: предварительное тестирование, резервирование и план отката — обязательны. На продакшне чаще безопаснее оставаться на поддерживаемых Canonical ядрах и использовать mainline в тестовой среде.
Кратко: обновили пакеты, скачали .deb mainline, установили dpkg -i *.deb, обновили grub, перезагрузили, проверили uname, удалили старые ядра через purge-old-kernels.
Ресурсы
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента