Что такое «паника ядра»?

19

Что это значит, когда ваш компьютер имеет "панику ядра" ?

Это приравнивает к окнам BsoD ?

Кроме того, какие методы, советы, хитрости доступны пользователю при панике ядра ?

Стефан
источник
3
Паника ядра лучше, чем BSOD, потому что ее имя подразумевает, что пользователь должен делать, когда это происходит.
амфетахин
Синие окна также дают некоторую информацию, хотя в большинстве случаев они не так полезны.
ot--

Ответы:

16

Ядро паники такое же, как BSOD и не подлежит восстановлению IIRC. Однако меньшая ошибка - OOPS, которая обозначает некоторую ошибку в ядре.

  1. Вы можете использовать kexec, который переключается на новое ядро ​​при панике (вы можете угрожать ему как быстрая перезагрузка) - возможно, получить значимый дамп системы для устранения проблемы
  2. Вы можете использовать panicпараметр, который перезагружает ядро ​​через n секунд. В таком случае вы можете указать GRUB переключиться на резервное ядро.
  3. Используйте клавиши Magic SysRQ для печати следов стека и т. Д.
Мацей Печотка
источник
6
Вернее, BSOD - это KP с действительно плохим экраном сообщений об ошибках.
ксенотеррацид
Самым заметным волшебством SysRq было emergency syncочищение буферов (когда это еще возможно).
ot--
6

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

Ядро может вызвать панику, когда:

  1. Обнаруживает программную ошибку в коде ядра или в стеке
  2. Когда есть условие во время выполнения, такое как нехватка памяти без процессов, которые можно уничтожить
  3. Исключение ЦП во время выполнения привилегированного режима приводит к условию упс

Существует около 950 различных состояний, когда в ядрах 3.X вызывается паника. Подпрограмма паники сначала печатает дамп стека ядра и регистры ЦП на консоль. Затем, если настроено аварийное ядро ​​kexec, оно загружает ядро ​​kexec. В противном случае процедура паники отключает все спин-блокировки и выполняет аварийный перезапуск.

Oops - это подпрограмма, вызываемая из обработчика исключений ЦП для исключения ЦП, которое возникает при выполнении в привилегированном (то есть ядре) режиме. Исключение может возникнуть в результате ошибки в коде ядра, аппаратного сбоя или внешнего условия, вызывающего конкретное исключение. Обработчик для исключения печатает журнал ядра с регистрами процессора и списком модулей. В отличие от вызовов паники, сама логика ядра никогда не вызывает ой вне контекста обработчиков исключений ЦП.

Если ядро ​​сконфигурировано для kexec, то при выполнении oops будет загружено ядро ​​kexec. В противном случае, если исключение возникает во время выполнения обработчика прерывания, то oops приводит к вызову паники ядра. В противном случае, если ядро ​​настроено на «panic on oops», то oops приведет к вызову panic. В противном случае ядро ​​выходит из обработчика исключений и возобновляет выполнение. Когда ядро ​​выходит из обработчика исключений и возобновляет выполнение, целостность ядра вызывает подозрение.

Обработчики исключений процессора зависят от архитектуры. Они обычно реализуются в arch / * / kernel / traps.c и устанавливаются в специфичном для архитектуры коде входа ядра, который устанавливает таблицу прерываний. Смотрите например arch/powerpc/kernel/traps.cи arch/powerpc/kernel/head_fsl_booke.S.

И условия паники ядра, и условия oops можно настроить так, чтобы они вызывали kmsg_dumpподпрограмму, которую можно использовать для сохранения отладочной информации о сбоях в ОЗУ или во флэш-память, за исключением случаев, когда упы произошли в контексте прерывания, и в этом случае подпрограмма «kmsg_dump» может использоваться только для сохранить в оперативную память, а не в MTD. При сохранении в ОЗУ вы обязаны: а) следить за тем, чтобы используемая область ОЗУ не перезаписывалась во время загрузки kexec или аварийного перезапуска, и б) извлекать область памяти из ядра kexec или из логики загрузчика.

Джонатан Бен-Авраам
источник
5

Это непредвиденное поведение потока программы (в данном случае ядро ​​- это программа). В случае паники программа перестает работать. Это равно окнам BsoD. KP означает что-то не так с ядром или модулями. Если это стабильное ядро ​​- посмотрите драйверы. Если ничего особенного и все драйверы общие, это может быть аппаратная проблема.

Дмитрий Леоненко
источник
или ядро ​​идет на пикник ..
Ура
Даже в стабильном ядре всегда есть некоторые ошибки.
ot--