Qu'est-ce qu'une «panique du noyau»?

19

Qu'est-ce que cela signifie lorsque votre ordinateur a une "panique du noyau" ?

Est-ce que cela correspond aux fenêtres BsoD ?

En outre, quelles méthodes, conseils et astuces sont disponibles pour l'utilisateur lorsqu'une panique du noyau se produit ?

Stefan
la source
3
Une panique du noyau est meilleure qu'un BSOD car son nom implique ce que l'utilisateur doit faire quand il se produit.
amphetamachine
Un bleu de fenêtre donne également quelques informations, mais ce n'est pas tellement utile la plupart du temps.
ott--

Réponses:

16

La panique du noyau est la même que BSOD et n'est pas récupérable IIRC. Cependant, un échec plus petit est OOPS qui dénote une erreur dans le noyau.

  1. Vous pouvez utiliser kexec qui bascule vers un nouveau noyau en cas de panique (vous pouvez le menacer comme un redémarrage rapide) - obtenir éventuellement un vidage significatif du système pour déboguer le problème
  2. Vous pouvez utiliser un panicparamètre qui redémarre le noyau après n secondes. Vous pouvez demander à GRUB de passer au noyau de secours dans ce cas
  3. Utilisez les clés Magic SysRQ pour imprimer les traces de pile, etc.
Maciej Piechotka
la source
6
Plus correct, un BSOD est un KP avec un écran de message d'erreur vraiment mauvais.
xenoterracide
Le SysRq magique le plus notable était emergency syncde vider les tampons (quand c'est encore possible).
ott--
6

Une panique du noyau Linux est un appel de sous-programme que le noyau exécute lorsque la logique du noyau détermine qu'il existe une condition qui rend l'exécution continue de la logique normale impossible ou irresponsable.

Le noyau peut appeler une panique lorsque:

  1. Il détecte une erreur logicielle dans le code ou la pile du noyau
  2. Lorsqu'il existe une condition d'exécution telle qu'une mémoire insuffisante sans processus éliminable
  3. Une exception de processeur pendant l'exécution en mode privilégié entraîne une condition Oops

Il y a environ 950 conditions distinctes où une panique est appelée dans les noyaux 3.X. Le sous-programme de panique imprime d'abord le vidage de la pile du noyau et les registres CPU sur la console. Ensuite, si un noyau kexec en panne a été configuré, il démarre le noyau kexec. Sinon, la routine de panique brise tous les verrous et effectue un redémarrage d'urgence.

Un oops est un sous-programme appelé à partir d'un gestionnaire d'exceptions CPU pour une exception CPU qui se produit lors de l'exécution en mode privilégié (c'est-à-dire le noyau). L'exception peut se produire à la suite d'une erreur dans le code du noyau, ou à cause d'une défaillance matérielle, ou à la suite d'une condition externe qui provoque une exception spécifique. Le gestionnaire de l'exception imprime un journal du noyau avec les registres CPU et la liste des modules. Contrairement aux appels de panique, la logique du noyau elle-même n'appelle jamais un oups en dehors du contexte des gestionnaires d'exceptions CPU.

Si le noyau est configuré pour kexec, un oups entraînera le démarrage du noyau kexec. Sinon, si l'exception se produit lors de l'exécution d'un gestionnaire d'interruption, le oups entraîne un appel de panique du noyau. Sinon, si le noyau est configuré avec «panique sur oops», alors le oops entraînera un appel de panique. Sinon, le noyau quitte le gestionnaire d'exceptions et reprend l'exécution. Lorsque le noyau quitte le gestionnaire d'exceptions et reprend l'exécution, l'intégrité du noyau est suspecte.

Les gestionnaires d'exceptions CPU sont spécifiques à l'architecture. Ils sont généralement implémentés dans arch / * / kernel / traps.c et définis dans le code d'entrée du noyau spécifique à l'architecture qui configure la table d'interruption. Voir par exemple arch/powerpc/kernel/traps.cet arch/powerpc/kernel/head_fsl_booke.S.

Les conditions de panique du noyau et oops peuvent être configurées pour appeler une kmsg_dumproutine que vous pouvez utiliser pour enregistrer les informations de débogage sur incident dans la RAM, ou pour flasher la mémoire à moins que les oops ne se soient produits dans un contexte d'interruption, auquel cas la routine «kmsg_dump» ne peut être utilisée que pour enregistrer sur RAM, pas sur MTD. Lors de l'enregistrement dans la RAM, il est de votre responsabilité: a) de vous assurer que la zone RAM utilisée n'est pas remplacée lors du démarrage de kexec ou du redémarrage d'urgence, et b) de récupérer la zone de mémoire à partir du noyau kexec ou de la logique du chargeur de démarrage.

Jonathan Ben-Avraham
la source
5

C'est le comportement inattendu du flux de programme (le noyau est un programme dans ce cas). En cas de panique, le programme cesse de fonctionner. Il est égal aux fenêtres BsoD. KP signifie quelque chose de mal avec le noyau ou les modules. Si c'est un noyau stable - regardez les pilotes. Si rien de spécial et que tous les pilotes ne sont communs, cela pourrait être un problème matériel.

Dmytro Leonenko
la source
ou le noyau va pique-nique ..
uray
Même dans un noyau stable, il reste toujours quelques bugs.
ott--