Що таке "паніка ядра"?


19

Що це означає, коли на вашому комп’ютері є "паніка ядра" ?

Чи прирівнюється він до вікон BsoD ?

Крім того, які методи, поради, підказки доступні користувачеві, коли нападає паніка ядра ?


3
Паніка ядра краще, ніж BSOD, оскільки її назва означає, що користувач повинен робити, коли це відбувається.
амфетамахін

Вікно синього кольору також дає деяку інформацію, тому це не так вже й корисно.
ott--

Відповіді:


16

Паніка з ядрами така ж, як і BSOD, і не підлягає вживанню IIRC. Однак менший збій - OOPS, який позначає деяку помилку в ядрі.

  1. Ви можете використовувати kexec, який переходить на нове ядро ​​на паніку (ви можете загрожувати це як швидке перезавантаження) - можливо, отримуючи зміст дамп системи для налагодження проблеми
  2. Ви можете використовувати panicпараметр, який перезавантажує ядро ​​через n секунд. Ви можете доручити GRUB перейти на резервне ядро ​​в такому випадку
  3. Використовуйте магічні клавіші SysRQ для друку слідів стека тощо.

6
Більш правильне значення BSOD - це КП із екраном повідомлення про помилку.
ксенотерацид

Найпомітнішою магією SysRq було emergency syncпромивання буферів (коли це ще можливо).
ott--

6

Паніка ядра Linux - це виклик підпрограми, який ядро ​​виконує, коли логіка ядра визначає, що існує умова, яка робить подальше виконання нормальної логіки неможливим або безвідповідальним.

Ядро може викликати паніку, коли:

  1. Він виявляє програмну помилку в коді ядра або стеку
  2. Коли є час виконання, наприклад, поза пам'яттю без процесів, які можна захистити
  3. Виняток з процесора під час виконання привілейованого режиму призводить до стану oops

Існує близько 950 різних умов, коли в ядрах 3.X викликається паніка. Підпрограма паніки спочатку друкує дамп стека ядра і реєструє процесор на консоль. Потім, якщо ядро ​​kexec аварії було налаштовано, воно завантажує ядро ​​kexec. В іншому випадку панічний режим руйнує всі відмовки і виконує екстрений перезапуск.

Oops - це підпрограма, яка викликається від обробника винятків процесора для виключення CPU, що виникає під час виконання у привілейованому (тобто ядрі) режимі. Виняток може статися внаслідок помилки в коді ядра, або через помилку обладнання, або як результат зовнішнього стану, який спричиняє конкретний виняток. Обробник винятку друкує журнал ядра зі списком регістрів процесорів та модулів. На відміну від панічних викликів, сама логіка ядра ніколи не викликає ой за межами контексту обробників виключень процесора.

Якщо ядро ​​налаштоване для kexec, то упс призведе до завантаження ядра kexec. В іншому випадку, якщо виняток трапляється під час виконання оброблювача переривання, то ооп призводить до виклику паніки ядра. В іншому випадку, якщо ядро ​​налаштоване на "паніка на оопс", то увімкнення призведе до панічного виклику. В іншому випадку ядро ​​закриває обробник винятків і продовжує виконання. Коли ядро ​​виходить з обробника винятків і продовжує виконання, цілісність ядра підозрюється.

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

Як паніку, так і умови oops можна налаштувати для виклику kmsg_dumpрозпорядку, який ви можете використовувати для збереження інформації про налагодження аварії в оперативній пам’яті або для флеш-пам’яті, якщо уп не відбувся в контексті переривання, і в цьому випадку порядок «kmsg_dump» може використовуватися лише зберегти в ОЗУ, а не в MTD. Зберігаючи оперативну пам'ять, ви несете відповідальність за: a) переконайтесь, що використовувана область оперативної пам’яті не буде перезаписана під час завантаження kexec або аварійного перезавантаження, і b) збирати область пам’яті з ядра kexec або з логіки завантажувача.


5

Це несподівана поведінка потоку програми (ядро - програма в даному випадку). У разі паніки програма перестає працювати. Він рівний вікнам BsoD. KP означає щось не так з ядром або модулями. Якщо це стабільне ядро ​​- подивіться драйвери. Якщо нічого особливого та всі драйвери не є загальними, це може бути проблемою з обладнанням.


або ядро ​​йде пікнік ..
uray

Навіть у стабільному ядрі завжди залишаються помилки.
ott--
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.