Qu'est-ce qu'une "panique de kernel"?

Qu'est-ce que cela signifie quand votre ordinateur a une "panique de kernel" ?

Est-ce que cela équivaut aux windows BsoD ?

En outre, quelles methods, trucs, astuces sont disponibles pour l'user quand une panique du kernel frappe?

La panique de kernel est la même que BSOD et est non rescuable IIRC. Cependant, l'échec plus petit est OOPS qui dénote une erreur dans le kernel.

  1. Vous pouvez utiliser kexec qui passe au nouveau kernel sur la panique (vous pouvez le menacer comme redémarrage rapide) – peut-être get un vidage significatif du système pour déboguer le problème
  2. Vous pouvez utiliser panic paramètre de panic qui redémarre le kernel après n secondes. Vous pouvez indiquer à GRUB de basculer vers le kernel de secours dans ce cas
  3. Utilisez les touches Magic SysRQ pour imprimer des traces de stack, etc.

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

Le kernel peut appeler une panique quand:

  1. Il détecte une erreur logicielle dans le code ou la stack du kernel
  2. Lorsqu'il y a une condition d'exécution telle que la memory insuffisante sans process pouvant être tués
  3. Une exception d'UC 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 kernelx 3.X. Le sous-programme de panique imprime d'abord le vidage de la stack du kernel et les registres du processeur sur la console. Ensuite, si un kernel crash kexec a été configuré, il démarre le kernel kexec. Sinon, la routine de panique interrompt tous les verrous et effectue un redémarrage d'urgence.

Un oops est une sous-routine appelée à partir d'un gestionnaire d'exception CPU pour une exception CPU qui se produit lors de l'exécution en mode privilégié (ie kernel). L'exception peut se produire à la suite d'une erreur dans le code du kernel, d'une défaillance matérielle ou d'une condition externe entraînant une exception spécifique. Le gestionnaire de l'exception imprime un journal du kernel avec les registres du processeur et la list des modules. Contrairement aux appels de panique, la logique du kernel lui-même n'appelle jamais un oops en dehors du context des gestionnaires d'exception du processeur.

Si le kernel est configuré pour kexec, alors un oops entraînera le démarrage du kernel kexec. Sinon, si l'exception se produit lors de l'exécution d'un gestionnaire d'interruption, les opérations oops entraînent un appel de panique du kernel. Sinon, si le kernel est configuré avec "panique sur oups", alors l'oops se traduira par un appel de panique. Sinon, le kernel quitte le gestionnaire d'exceptions et reprend l'exécution. Lorsque le kernel quitte le gestionnaire d'exceptions et reprend l'exécution, l'intégrité du kernel est suspecte.

Les gestionnaires d'exceptions d'UC 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'input du kernel spécifique à l'architecture qui configure la table d'interruptions. Voir par exemple arch/powerpc/kernel/traps.c et arch/powerpc/kernel/head_fsl_booke.S .

Les deux conditions panique et oops du kernel peuvent être configurées pour appeler une routine kmsg_dump que vous pouvez utiliser pour save les informations de debugging de panne dans la memory vive ou dans la memory flash à less que les opérations ne se produisent dans le context d'interruption auquel cas la routine "kmsg_dump" ne peut être utilisée sauvegarder en RAM, pas en MTD. Lors de l'logging en RAM, il est de votre responsabilité de: a) s'assurer que la zone RAM utilisée n'est pas écrasée lors du démarrage kexec ou du redémarrage d'urgence, et b) récupérer la zone memory du kernel kexec ou de la logique du chargeur de démarrage.

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