30 ноября 2010 г.

Kernel panic

Kernel panic  — сообщение о критической ошибке ядра операционной системы, после которой операционная система не может продолжать дальнейшую работу.
Обычно этот термин применяется в среде операционных систем типа UNIX. Её имя связано с текстом ошибки вида «Kernel panic: …» и именем функции ядра panic() из оригинальной ОС UNIX.

В Linux возникновению паники ядра зачастую предшествует состояние под названием oops. В ряде случаев oops может приводить к такому же неработоспобному состоянию системы, как и паника ядра.

Oops — отклонение от нормальной работы Linux. При oops’е ядро создает запись в логе с описанием ошибки. Наиболее частым результатом oops’a является kernel panic (паника ядра), но это не обязательно.
Когда ядро замечает проблему, на экран выводится сообщение об ошибке. Это сообщение используется разработчиками для исправления программного кода ядра.
После oops’а некоторые ресурсы системы могут быть недоступны. Kernel panic чаще всего возникает, когда система пытается использовать несуществующие ресурсы.
При выяснении причин возникновения oops может помочь изучение содержимого файла System.map.

Причины для Kernel panic

В большинстве случаев причиной для Kernel panic является критическая аппаратная ошибка (отказ оперативной памяти, ошибка процессора или другого критически важного устройства) или ошибка в самом ядре операционной системы, например попытка обращения к ошибочному или запрещённому адресу в памяти. Также причиной для Kernel panic могут быть ошибки в драйверах периферийных устройств или ошибки в файловой системе.
Теоретически, ошибки в прикладных программах в современных операционных системах не должны приводить к Kernel panic, поскольку любая подобная ошибка должна корректно обрабатываться ядром.

Обработка Kernel panic

В нормальном случае при возникновении Kernel panic происходит остановка работы операционной системы с выдачей сообщений об ошибках на экран, после чего система ожидает выключения компьютера или перезагрузки. Однако, такая обработка этого события неприемлема тогда, когда простой компьютера крайне нежелателен или человека нет рядом (например на удалённых серверах или в нерабочее время).
В современных операционных системах, таких как GNU/Linux, FreeBSD или Solaris, существует возможность изменить стандартное поведение функции panic() и производить перезагрузку компьютера автоматически. В GNU/Linux данная настройка осуществляется при помощи procfs:
echo 5 > /proc/sys/kernel/panic
Чтобы изменения действовали в GNU/Linux и после перезагрузки, необходимо добавить в файл /etc/sysctl.conf строку:
kernel.panic=5
А в FreeBSD в том же файле /etc/sysctl.conf:
ddb.panic=5
В обоих примерах «5» — количество секунд, после которых произойдёт перезагрузка. При установке отрицательного или равного 0 значения этого параметра, автоматической перезагрузки не произойдёт.
GNU/Linux и большинство других UNIX-совместимых операционных систем создаёт лог с описанием ошибки и выводят на экран сообщение об ошибке, содержащее информацию, необходимую для отладки и поиска причин этой ошибки. Этот механизм носит название Linux oops. В современных дистрибутивах Linux используется графический сервер X Window, и Kernel panic не приводит к переключению на физическую консоль, на которую выводятся диагностические сообщения. Распознать Kernel panic можно по мигающим светодиодам Caps Lock и Scroll Lock на клавиатуре.

Комментариев нет:

Отправить комментарий