¿Qué es un "kernel panic"?

19

¿Qué significa cuando su computadora tiene un "kernel panic" ?

¿ Equivale a las ventanas BsoD ?

Además, ¿qué métodos, consejos, trucos están disponibles para el usuario cuando se produce un pánico en el núcleo ?

Stefan
fuente
3
Un kernel panic es mejor que un BSOD porque su nombre implica lo que el usuario debe hacer cuando sucede.
amphetamachine
Una ventana azul también proporciona información, aunque no es tan útil la mayor parte del tiempo.
ott--

Respuestas:

16

Kernel panic es lo mismo que BSOD y no es rescatable IIRC. Sin embargo, la falla más pequeña es OOPS, que denota algún error en el núcleo.

  1. Puede usar kexec que cambia al nuevo kernel en pánico (puede amenazarlo con un reinicio rápido), posiblemente obteniendo un volcado significativo del sistema para depurar el problema
  2. Puede usar el panicparámetro que reinicia el núcleo después de n segundos. Puede indicar a GRUB que cambie al kernel alternativo en tal caso
  3. Use las teclas Magic SysRQ para imprimir trazas de pila, etc.
Maciej Piechotka
fuente
66
Más correcto, un BSOD es un KP con una pantalla de mensaje de error realmente mala.
xenoterracide
La magia SysRq más notable fue la emergency syncde limpiar los búferes (cuando aún era posible).
ott--
6

Un kernel panic de Linux es una llamada de subrutina que el kernel ejecuta cuando la lógica del kernel determina que existe una condición que hace que la ejecución continua de la lógica normal sea imposible o irresponsable.

El núcleo puede provocar pánico cuando:

  1. Detecta un error de software en el código del kernel o en la pila.
  2. Cuando hay una condición de tiempo de ejecución como falta de memoria sin procesos eliminables
  3. Una excepción de CPU durante la ejecución del modo privilegiado da como resultado una condición de Uy

Hay alrededor de 950 condiciones distintas donde se llama un pánico en los núcleos 3.X. La subrutina de pánico primero imprime el volcado de la pila del núcleo y los registros de la CPU en la consola. Luego, si se ha configurado un kernel de bloqueo kexec, arranca el kernel kexec. De lo contrario, la rutina de pánico revienta todos los spinlocks y realiza un reinicio de emergencia.

Un oops es una subrutina llamada desde un controlador de excepciones de CPU para una excepción de CPU que ocurre mientras se ejecuta en modo privilegiado (es decir, kernel). La excepción puede ocurrir como resultado de un error en el código del kernel, o debido a una falla de hardware, o como resultado de una condición externa que causa una excepción específica. El controlador de la excepción imprime un registro de kernel con registros de CPU y lista de módulos. A diferencia de las llamadas de pánico, la lógica del núcleo en sí misma nunca llama fuera del contexto de los controladores de excepciones de CPU.

Si el kernel está configurado para kexec, entonces un oops resultará en el arranque del kernel kexec. De lo contrario, si se produce la excepción mientras se ejecuta un controlador de interrupciones, entonces los oops resultan en una llamada de kernel panic. De lo contrario, si el núcleo está configurado con "pánico en oops", entonces los oops darán lugar a una llamada de pánico. De lo contrario, el kernel sale del controlador de excepciones y reanuda la ejecución. Cuando el kernel sale del controlador de excepciones y reanuda la ejecución, la integridad del kernel es sospechosa.

Los controladores de excepciones de CPU son específicos de la arquitectura. Por lo general, se implementan en arch / * / kernel / traps.c, y se establecen en el código de entrada de kernel específico de la arquitectura que configura la tabla de interrupciones. Ver por ejemplo arch/powerpc/kernel/traps.cy arch/powerpc/kernel/head_fsl_booke.S.

Ambas condiciones de kernel panic y oops se pueden configurar para llamar a una kmsg_dumprutina que puede usar para guardar la información de depuración de fallas en la RAM, o para flashear la memoria a menos que ocurra en contexto de interrupción, en cuyo caso la rutina "kmsg_dump" solo se puede usar para guardar en RAM, no en MTD. Cuando guarde en RAM, es su responsabilidad a) asegurarse de que el área de RAM utilizada no se sobrescriba durante el arranque de kexec o el arranque de reinicio de emergencia, yb) cosechar el área de memoria del núcleo de kexec o de la lógica del cargador de arranque.

Jonathan Ben-Avraham
fuente
5

Es el comportamiento inesperado del flujo del programa (el núcleo es un programa en este caso). En caso de pánico, el programa deja de funcionar. ES igual a las ventanas BsoD. KP significa algo mal con el kernel o los módulos. Si es un núcleo estable, mira los controladores. Si nada especial y todos los controladores son comunes, podría ser un problema de hardware.

Dmytro Leonenko
fuente
o el kernel va de picnic ..
uray
Incluso en un kernel estable, siempre quedan algunos errores.
ott--