Способы оплаты Abuse

Как вызвать и устранить Kernel Panic в Linux

17.06.2025, 18:51

Представьте: вы спокойно работаете за компьютером — устанавливаете обновления, собираете пакет или просто листаете браузер. И вдруг экран замирает, появляется пугающий текст: «Kernel panic – not syncing: Attempted to kill init!» Только без паники! Давайте разберёмся, что это такое, как вызвать такой сбой намеренно (безопасно!) и — главное — как его исправить.

Что такое Kernel Panic?

Проще говоря, kernel panic — это экстренная остановка системы. Так ядро Linux реагирует на серьёзную ошибку, из которой нельзя безопасно выбраться.

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

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

Частые причины Kernel Panic

Вот основные причины, из-за которых система может «упасть»:
— Проблемы с железом — битая оперативка, перегрев процессора или умирающий диск. Такие вещи могут привести к повреждению памяти или файловой системы.
— Некачественные драйверы — особенно если вы вручную ставили модули, несовместимые с текущим ядром.
— Повреждённые системные файлы — вроде /etc/fstab, /sbin/init или initramfs. Без них система просто не загрузится.
— Ошибки в загрузчике GRUB — неправильные UUID, метки разделов или отсутствие нужных записей.
— Удаление критичных файлов — если случайно удалить /sbin/init или завершить процесс с PID 1, ядро не переживёт.

Как безопасно вызвать Kernel Panic (для тренировки)

Важно: никогда не делайте это на рабочем сервере. Только в виртуальной машине — VirtualBox, KVM, QEMU или контейнере.

Способ 1. Через /proc/sysrq-trigger

Самый простой и безопасный способ — использовать интерфейс SysRq. Он нужен для отладки и тестов.

1. Включите SysRq:

echo 1 | sudo tee /proc/sys/kernel/sysrq

2. Запустите панику:

echo c | sudo tee /proc/sysrq-trigger

Система тут же «замрёт» с сообщением о панике.

Способ 2. С помощью модуля crash

Если в вашем ядре есть модуль crash, его можно использовать:

Загрузите модуль:

sudo modprobe crash

Если получите ошибку — значит, модуль недоступен. Проверьте:

modinfo crash

Как восстановить систему после Kernel Panic

1. Перезагрузка и просмотр логов

После паники компьютер скорее всего зависнет. Перезагрузите его вручную и посмотрите логи:

journalctl -xb

Или:

dmesg | less
cat /var/log/kern.log | less

Ищите слова вроде panic, segfault, BUG, а также названия драйверов и ошибки по железу.

2. Загрузка в старую версию ядра

Если после обновления ядра система перестала загружаться, попробуйте загрузиться в более старую версию:

1. При включении откройте меню GRUB (обычно клавиша Esc).

2. Выберите Advanced options и нужное ядро — например, 5.15.0-92-generic.

Если оно стабильно — можно сделать его загрузкой по умолчанию:

sudo apt install linux-image-<version>
sudo grub-set-default 1

Список доступных ядер:

grep menuentry /boot/grub/grub.cfg

3. Пересоздание initramfs

initramfs — это временная мини-система, которая загружается до основной. Если она повреждена, всё может «упасть» сразу после GRUB.

Пересоздать её можно так:

sudo update-initramfs -u -k all

Или только для текущего ядра:

sudo update-initramfs -c -k $(uname -r)

Перезагрузка:

sudo reboot

4. Проверка и восстановление файловой системы

Если в ошибке говорится о невозможности смонтировать корень (unable to mount root fs), скорее всего сломалась файловая система.

Найдите нужный раздел:

lsblk

Проверьте его:

sudo fsck /dev/sda1

Замените sda1 на свой раздел.

5. Проверка «железа»

Бывает, что ядро тут ни при чём. Просто диск или память начинают сбоить.

Для проверки диска:

sudo smartctl -a /dev/sda

Обратите внимание на параметры:
— Reallocated_Sector_Ct
— Pending_Sector_Ct
— Current_Pending_Sector

Если они растут — диск умирает. Срочно делайте резервную копию и меняйте накопитель.

6. Починка GRUB

Если GRUB не может найти ядро или initrd, система может не загрузиться. Восстановить его можно через LiveCD:

sudo mount /dev/sda1 /mnt
sudo grub-install --root-directory=/mnt /dev/sda
sudo update-grub

Также проверьте файл /etc/fstab — UUID должны совпадать:

blkid

Как не допустить Kernel Panic

Полностью застраховаться нельзя, но вот что поможет свести риски к минимуму:
— Не трогайте важные системные файлы без нужды.
— Не обновляйте ядро «вживую» на боевом сервере.
— Используйте стабильные LTS-ядра.
— Держите как минимум два ядра в системе.
— Делайте резервные копии — особенно /boot, /etc и configs.
— Настройте kdump — он помогает сохранять дампы при панике.

Бонус: как перезагружаться после Kernel Panic

Если сервер завис, а вы далеко, лучше настроить авто-перезагрузку:

В файл /etc/sysctl.conf добавьте строку:

kernel.panic = 10

Примените:

sudo sysctl -p

Теперь система будет автоматически перезагружаться через 10 секунд после паники.

Итог

Kernel Panic может напугать, особенно новичка. Но если разобраться — это просто механизм защиты, а не катастрофа. Главное — сохранять спокойствие, загрузиться с Live-системы, собрать информацию и по шагам устранить причину: обновление ядра, поломка, ошибка в конфиге.