LinuxКритическая

Kernel Panic в Linux: причины и способы восстановления

Kernel panic — фатальная ошибка ядра Linux, приводящая к полной остановке системы. Эта статья поможет вам определить причину по логам, проверить оборудование и восстановить работоспособность системы.

Обновлено 17 февраля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04+CentOS 7+Debian 10+Fedora 35+Linux ядро 4.15+

Что означает ошибка Kernel Panic

Kernel panic (паника ядра) — это критическое состояние в Linux, при котором ядро обнаруживает невосстановимую ошибку и останавливает все процессы системы для предотвращения повреждения данных. Вместо привычного синего экрана Windows вы увидите монохромный текст на консоли (или через serial-консоль), содержащий:

  • Сообщение Kernel panic - not syncing: ...
  • Адрес паники (например, CPU: 0 PID: 1 Comm: systemd Not tainted ...)
  • Стек вызовов (трасса) ядра
  • Информацию о модулях, которые были загружены

После этого система полностью зависает, требуя перезагрузки. В отличие от пользовательских сбоев, kernel panic не может быть обработан приложением — это последний рубеж защиты ядра.

Причины возникновения

Kernel panic возникает, когда ядро пытается выполнить действие, которое нарушает его внутреннюю целостность. Основные причины:

  1. Неисправное оборудование:
    • Дефекты оперативной памяти (битые биты, тайминги)
    • Проблемы с процессором (перегрев,factory defects)
    • Поврежденные сектора на диске (особенно с /boot или корневой ФС)
    • Сбои материнской платы или контроллеров
  2. Поврежденные/несовместимые драйверы:
    • Устаревшие проприетарные драйверы (NVIDIA, Broadcom Wi-Fi)
    • Драйверы, собранные для другой версии ядра
    • Конфликт модулей (например, два драйвера для одного устройства)
  3. Ошибки в самом ядре:
    • Баги в нестабильных версиях ядра (например, 5.15-rc)
    • Проблемы с патчами (особенно в self-compiled ядрах)
  4. Повреждение системных файлов:
    • Некорректное обновление ядра (/boot/vmlinuz-*, модули в /lib/modules/)
    • Атаки или ручные вмешательства, изменившие бинарные файлы ядра
  5. Ресурсные ограничения:
    • Исчерпание памяти ядра (например, утечки в модулях)
    • Переполнение стека ядра (out-of-bounds доступы)
  6. Некорректные параметры загрузки:
    • Неправильные опции в GRUB (например, mem=, acpi=)
    • Устаревшие параметры для нового железа

Способы решения

Способ 1: Анализ логов ядра

Первым делом нужно получить информацию о панике. Если система не загружается, используйте recovery mode или загрузитесь с live-системы, чтобы смонтировать корневую раздел и скопировать логи.

Команды для анализа:

# Просмотр последних ошибок ядра (требует загрузки в recovery или chroot)
journalctl -k -p err --no-pager

# Альтернативно, через dmesg (может быть очищен при перезагрузке)
dmesg -T | grep -i "panic\|error\|bug\|tainted"

# Если panic произошел при загрузке, логи могут быть в /var/crash/
ls /var/crash/

Что искать:

  • Фразу Kernel panic - not syncing: ... — краткое описание.
  • Строки с Call Trace — стек вызовов, указывает на функцию ядра.
  • Упоминания модулей: module xyz is tainted или xyz.ko.
  • Адреса в скобках, например [<ffffffff81234567>] — можно декодировать через /proc/kallsyms.

💡 Совет: Если panic повторяется, добавьте параметр panic=10 в GRUB (раздел GRUB_CMDLINE_LINUX), чтобы система автоматически перезагружалась через 10 секунд. Это упростит сбор логов через serial-консоль или netconsole.

Способ 2: Проверка оперативной памяти

Ошибки RAM — одна из частых причин kernel panic. memtest86+ — стандартный инструмент для тестирования.

Как запустить:

  1. Перезагрузите систему.
  2. В меню GRUB выберите пункт Memory test (memtest86+).
  3. Дождитесь завершения хотя бы одного полного цикла (Pass 1/4).
  4. Любые ошибки (Address, Status) требуют замены модулей памяти.

⚠️ Важно: Для серверов используйте ECC-память и регулярный мониторинг через edac-util (apt install edac-utils).

Способ 3: Проверка дисков и файловой системы

Поврежденные сектора могут вызывать панику при доступе ядра к /boot или системным файлам.

Проверка диска (SMART):

# Установите smartmontools, если нет
sudo apt install smartmontools  # Debian/Ubuntu
sudo yum install smartmontools  # CentOS/RHEL

# Просмотр статуса диска (замените /dev/sda на ваш)
sudo smartctl -a /dev/sda

# Обратите внимание на:
# - SMART overall-health self-assessment test result
# - Attributes: Reallocated_Sector_Ct, Current_Pending_Sector
# - Результаты Self-Test (должны быть PASSED)

Проверка файловой системы:

# Только для unmounted разделов! Для корневого раздела — с live-системы.
sudo fsck -f /dev/sda1  # Замените на ваш корневой раздел

# Для journal-файловых систем (ext4, btrfs) также можно:
sudo btrfs check /dev/sda1  # если используется btrfs

Если SMART показывает много реallocated или pending секторов, замените диск.

Способ 4: Обновление или откат ядра

Если panic появился после обновления ядра или драйверов, попробуйте загрузиться с предыдущей версией.

Загрузка с предыдущим ядром:

  1. В меню GRUB выберите Advanced options for Ubuntu.
  2. Выберите запись с ядром, помеченным (recovery mode) или без -generic (если обновлялись).
  3. Если система загружается, удалите проблемное ядро:
    # Debian/Ubuntu
    sudo apt remove linux-image-5.19.0-32-generic  # пример
    sudo update-grub
    
    # CentOS/RHEL
    sudo yum remove kernel-5.14.0-362.8.1.el8_5.x86_64
    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

Обновление ядра до стабильной версии:

# Ubuntu/Debian
sudo apt update
sudo apt install linux-image-generic-hwe-22.04  # например, для LTS
sudo reboot

# CentOS/RHEL (используйте AppStream для новейших ядер)
sudo yum install kernel
sudo reboot

Способ 5: Проверка драйверов и модулей

Проблемные модули часто вызывают панику. Особенно внимательно смотрите на проприетарные драйверы (NVIDIA, VirtualBox, Wi-Fi).

Просмотр загруженных модулей:

lsmod | grep -E "nvidia|vmw|b43|wl"  # пример проблемных модулей

Удаление модуля (в recovery mode):

# Удалить модуль из текущей загрузки (временно)
sudo rmmod nvidia_drm

# Чтобы запретить загрузку, удалите пакет или закомментируйте в /etc/modules-load.d/
sudo apt purge nvidia-driver-525  # Debian/Ubuntu

Если panic исчез, обновите драйвер через официальные репозитории или используйте open-source альтернативы (например, nouveau вместо NVIDIA).

Способ 6: Восстановление системы через rescue mode

Если система не загружается даже с предыдущим ядром, используйте rescue-режим.

Загрузка в rescue mode:

  1. В меню GRUB выберите запись с (recovery mode).
  2. В меню recovery выберите root (получение root-shell).
  3. Размонтируйте и проверьте целостность:
    # Перемонтируйте корневой раздел в режиме read-write
    mount -o remount,rw /
    
    # Проверьте наличие битых симлинков или поврежденных бинарников
    find /boot -type f -exec file {} \; | grep -v "ELF.*64-bit"
    
    # Восстановите пакеты ядра (если файлы повреждены)
    sudo apt install --reinstall linux-image-$(uname -r)  # Debian/Ubuntu
    sudo yum reinstall kernel  # CentOS/RHEL
    
    # Проверьте конфигурацию GRUB
    cat /etc/default/grub | grep -i "quiet splash"
    # Удалите "quiet splash" для отладки, затем update-grub
    

Профилактика

Чтобы минимизировать риск kernel panic:

  1. Используйте стабильные версии ядра в production-средах. Избегайте -rc и -git сборок на рабочих машинах.
  2. Тестируйте обновления на тестовом стенде перед развертыванием. Особенно обновления ядра и драйверов.
  3. Мониторинг логов:
    # Автоматический мониторинг panic-сообщений
    sudo journalctl -f -k | grep -i "panic"
    
  4. Аппаратная надежность:
    • ECC-память для серверов.
    • Регулярные SMART-тесты дисков (smartctl -t long).
    • Контроль температуры (например, sensors).
  5. Резервное копирование /boot и конфигураций GRUB перед обновлениями.
  6. Избегайте смешивания драйверов из разных источников (например, драйверы NVIDIA из .run-файла и из репозитория).

Если panic происходит на конкретном железе (например, после установки новой видеокарты), проверьте совместимость в документации дистрибутива.

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

Что такое kernel panic и почему он возникает?
Как узнать причину kernel panic?
Можно ли предотвратить kernel panic?
Что делать, если система не загружается после kernel panic?

Полезное

Анализ логов ядра
Проверка оперативной памяти
Проверка дисков и файловой системы
Обновление или откат ядра
Проверка драйверов и модулей
Восстановление системы через rescue mode

Эта статья помогла вам решить проблему?