Перейти к основному содержимому
Вернуться в категорию

Обновление ядра и управление GRUB: безопасное руководство

Обновление ядра с apt/yum, проверка текущей версии ядра, настройка GRUB, откат к предыдущему ядру и безопасное управление ядром на Linux-серверах.

Время чтения: 12 мин Управление сервером
ядроgrublinux kernelобновлениеaptyumоткат
Автор
REXE Teknoloji Network & Security Team
Редактор
REXE Teknoloji Technical Editorial
Первая публикация
Последнее обновление

Обновление ядра и управление GRUB: безопасное руководство

Ядро Linux — это основа операционной системы, связывающая аппаратное и программное обеспечение. Обновления ядра закрывают уязвимости безопасности, добавляют поддержку нового оборудования и улучшают производительность. В этом руководстве рассматривается процесс обновления ядра, настройка GRUB и откат к предыдущей версии ядра при возникновении проблем.

Проверка текущей версии ядра

hljs bash
# Просмотр запущенной версии ядра
uname -r

# Подробная информация о ядре
uname -a

# Список всех установленных версий ядра (Ubuntu/Debian)
dpkg --list | grep linux-image

# RHEL/CentOS/AlmaLinux
rpm -qa | grep kernel

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

Обновление ядра на Ubuntu/Debian

hljs bash
# Обновить список пакетов
sudo apt update

# Список доступных обновлений
apt list --upgradable | grep linux

# Обновить всю систему (включая ядро)
sudo apt upgrade -y

# Обновить только ядро
sudo apt install linux-image-generic linux-headers-generic

# Установить конкретную версию ядра
sudo apt install linux-image-5.15.0-91-generic

# Перезагрузить после обновления
sudo reboot

Обновление ядра на RHEL/CentOS/AlmaLinux

hljs bash
# Обновить список пакетов
sudo dnf update

# Обновить только ядро
sudo dnf update kernel

# Список установленных версий ядра
sudo dnf list installed kernel

# Перезагрузить после обновления
sudo reboot

После обновления ядра требуется перезагрузка. Сохраните все важные данные и запишите запущенные службы перед перезагрузкой.

Проверка после обновления

hljs bash
# Проверить новую версию ядра
uname -r

# Проверить системные журналы
sudo journalctl -b | head -50

# Проверить критические службы
sudo systemctl status nginx
sudo systemctl status mysql

Настройка GRUB

GRUB (Grand Unified Bootloader) — загрузчик в Linux-системах. Управляет тем, какое ядро загружается при наличии нескольких установленных версий.

Просмотр меню GRUB

hljs bash
# Список записей меню GRUB
grep -E "^menuentry|^submenu" /boot/grub/grub.cfg

# Читаемый формат
grep -E "menuentry '" /boot/grub/grub.cfg | head -20

# Текущее ядро по умолчанию
grub-editenv list

Файл конфигурации GRUB

hljs bash
# Редактировать основной файл конфигурации GRUB
sudo nano /etc/default/grub
hljs bash
# Важные параметры GRUB:

# Выбор ядра по умолчанию (0 = первое, 1 = второе и т.д.)
GRUB_DEFAULT=0

# Время ожидания меню (секунды)
GRUB_TIMEOUT=5

# Всегда показывать меню
GRUB_TIMEOUT_STYLE=menu

# Параметры ядра
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
hljs bash
# Обновить конфигурацию GRUB
sudo update-grub  # Ubuntu/Debian
sudo grub2-mkconfig -o /boot/grub2/grub.cfg  # RHEL/CentOS

Изменение ядра по умолчанию

hljs bash
# Список записей меню GRUB с номерами
awk -F\' '/menuentry / {print i++" : "$2}' /boot/grub/grub.cfg

# Изменить ядро по умолчанию (индекс с 0)
sudo grub-set-default 1

# Проверить изменение
grub-editenv list

# Обновить GRUB
sudo update-grub

Откат к предыдущей версии ядра

Метод 1: Ручной выбор из меню GRUB

При перезагрузке сервера в меню GRUB:

  1. Выберите Дополнительные параметры для Ubuntu
  2. Выберите старую версию ядра из списка
  3. Нажмите Enter для загрузки

Для удалённых серверов используйте функцию KVM/VNC-консоли в панели управления REXE для доступа к меню GRUB.

Метод 2: Установка старой версии ядра по умолчанию

hljs bash
# Список установленных версий ядра
dpkg --list | grep linux-image | grep -v meta

# Найти полное имя записи меню
grep "menuentry '" /boot/grub/grub.cfg | grep "5.15.0-88"

# Установить по умолчанию
sudo grub-set-default "Advanced options for Ubuntu>Ubuntu, with Linux 5.15.0-88-generic"

# Обновить GRUB
sudo update-grub

# Перезагрузить
sudo reboot

Метод 3: Удаление проблемного ядра

hljs bash
# Удалить проблемную версию ядра (Ubuntu/Debian)
sudo apt remove linux-image-5.15.0-91-generic
sudo apt autoremove

# Обновить GRUB
sudo update-grub

Параметры ядра

hljs bash
# Просмотр текущих параметров ядра
cat /proc/cmdline

# Изменить параметр во время выполнения (временно)
sudo sysctl -w net.ipv4.ip_forward=1

# Постоянное изменение параметра
sudo nano /etc/sysctl.d/99-custom.conf

# Применить изменения
sudo sysctl -p

Распространённые параметры ядра

hljs bash
# Производительность сети
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535

# Управление памятью
vm.swappiness = 10
vm.dirty_ratio = 15

# Файловая система
fs.file-max = 2097152

Безопасная стратегия обновления для производственных серверов

hljs bash
# 1. Создать резервную копию
rsync -avz /var/www/ backup-server:/backup/

# 2. Сначала протестировать в тестовой среде

# 3. Запланировать окно обслуживания
# Обновлять в часы низкого трафика

# 4. Обновить и перезагрузить
sudo apt update && sudo apt upgrade -y
sudo reboot

# 5. Проверить службы
sudo systemctl status nginx mysql

Не применяйте обновления ядра на производственных серверах немедленно — сначала протестируйте их в тестовой среде. Для критических систем планируйте окно обслуживания.

Устранение неполадок

Система не загружается после обновления ядра

hljs bash
# Доступ к меню GRUB через KVM-консоль REXE
# Выбрать старое ядро в дополнительных параметрах

# После загрузки со старым ядром удалить проблемное
sudo apt remove linux-image-[проблемная-версия]
sudo update-grub

Модуль ядра не загружается

hljs bash
# Список загруженных модулей
lsmod

# Загрузить модуль
sudo modprobe имя-модуля

# Проверить журналы ядра
sudo dmesg | tail -50

Заключение

Обновления ядра критически важны для безопасности и производительности Linux-серверов. Регулярные обновления ядра закрывают уязвимости и позволяют использовать новые функции. Понимание конфигурации GRUB позволяет быстро откатиться к предыдущей версии ядра при возникновении проблем.

Часто задаваемые вопросы

Как часто нужно обновлять ядро?

Обновления безопасности следует применять как можно скорее после выпуска. Для Ubuntu LTS обновления безопасности можно применять автоматически с 'unattended-upgrades'. Крупные обновления версии ядра следует сначала тестировать в тестовой среде.

Система не загружается после обновления ядра, что делать?

Используйте функцию KVM/VNC-консоли в панели управления REXE для доступа к меню GRUB. Выберите старую версию ядра в 'Дополнительных параметрах' для загрузки системы. Затем удалите проблемное ядро и обновите GRUB.

Сколько версий ядра нужно хранить?

Обычно достаточно хранить 2-3 версии ядра: текущую и предыдущую. Слишком много старых версий ядра занимают место на диске. На Ubuntu 'sudo apt autoremove' автоматически очищает старые версии ядра.

Меню GRUB не отображается, как получить к нему доступ?

Для удалённых серверов используйте функцию KVM/VNC-консоли в панели управления REXE. Альтернативно увеличьте значение GRUB_TIMEOUT в /etc/default/grub и установите GRUB_TIMEOUT_STYLE=menu, затем выполните 'sudo update-grub'.

Влияет ли обновление ядра на пользовательские модули (DKMS)?

Да, модули DKMS (Dynamic Kernel Module Support) автоматически перекомпилируются при обновлении ядра. Однако иногда могут возникать проблемы. Проверьте статус модулей DKMS с 'dkms status'. При проблемах перекомпилируйте с 'dkms install имя-модуля/версия'.

Связанные статьи

Сетевой трафикВходящий GbpsИсходящий Gbps