Представьте: вы спокойно работаете за компьютером — устанавливаете обновления, собираете пакет или просто листаете браузер. И вдруг экран замирает, появляется пугающий текст: «Kernel panic – not syncing: Attempted to kill init!» Только без паники! Давайте разберёмся, что это такое, как вызвать такой сбой намеренно (безопасно!) и — главное — как его исправить.
Проще говоря, kernel panic — это экстренная остановка системы. Так ядро Linux реагирует на серьёзную ошибку, из которой нельзя безопасно выбраться.
Ядро — это сердце Linux. Оно управляет памятью, железом, процессами. Если в глубинах системы происходит что-то непоправимое — например, драйвер лезет в чужую память или ломается важный компонент — ядро решает: лучше остановиться, чем усугубить ситуацию.
Представьте, что вы мчитесь на машине, и вдруг ломаются тормоза. Включается аварийный тормоз — и всё останавливается. Вот это и есть kernel panic.
Вот основные причины, из-за которых система может «упасть»:
— Проблемы с железом — битая оперативка, перегрев процессора или умирающий диск. Такие вещи могут привести к повреждению памяти или файловой системы.
— Некачественные драйверы — особенно если вы вручную ставили модули, несовместимые с текущим ядром.
— Повреждённые системные файлы — вроде /etc/fstab, /sbin/init или initramfs. Без них система просто не загрузится.
— Ошибки в загрузчике GRUB — неправильные UUID, метки разделов или отсутствие нужных записей.
— Удаление критичных файлов — если случайно удалить /sbin/init или завершить процесс с PID 1, ядро не переживёт.
Важно: никогда не делайте это на рабочем сервере. Только в виртуальной машине — 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
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
Полностью застраховаться нельзя, но вот что поможет свести риски к минимуму:
— Не трогайте важные системные файлы без нужды.
— Не обновляйте ядро «вживую» на боевом сервере.
— Используйте стабильные LTS-ядра.
— Держите как минимум два ядра в системе.
— Делайте резервные копии — особенно /boot, /etc и configs.
— Настройте kdump — он помогает сохранять дампы при панике.
Если сервер завис, а вы далеко, лучше настроить авто-перезагрузку:
В файл /etc/sysctl.conf добавьте строку:
kernel.panic = 10
Примените:
sudo sysctl -p
Теперь система будет автоматически перезагружаться через 10 секунд после паники.
Kernel Panic может напугать, особенно новичка. Но если разобраться — это просто механизм защиты, а не катастрофа. Главное — сохранять спокойствие, загрузиться с Live-системы, собрать информацию и по шагам устранить причину: обновление ядра, поломка, ошибка в конфиге.