什么是内核恐慌?

use*_*ser 56 kernel

我刚刚完成了操作系统课程。我经常听到内核恐慌这个词。你可以解释吗

  1. 什么是内核恐慌?
  2. 为什么会发生?
  3. 我怎样才能发现发生了内核恐慌?
  4. 它对系统有什么影响?
  5. 它只发生在Linux中吗?
  6. 我该如何预防?

Rob*_*ans 58

根据常见问题解答一次 1 个问题

  1. 什么是内核恐慌?
    当内核无法正确加载或“崩溃”并且无法正常启动或崩溃时(请参阅底部的编辑信用)。

  2. 为什么会发生?
    托管更新、故障硬件、不受支持的硬件、故障或丢失的驱动器或分区(请参阅底部的编辑信用)

  3. 我如何理解发生了内核恐慌?
    观看引导提示(关闭安静内核参数)您的机器无法引导

  4. 对系统有什么影响?
    无法启动或系统崩溃

  5. 它只发生在Linux中吗?
    不,所有类 Unix 操作系统都可能出现内核崩溃。这相当于Windows 蓝屏死机

  6. 我该如何预防?
    它通常不会发生。测试更新并解决问题。使用稳定而不是开发分支。

附加说明:内核崩溃和系统故障/关机可以直接负责保护您的计算机免受物理损坏。示例包括在极端过热或磁盘损坏之前停止。请参阅底部的编辑积分以获取直接报价。

编辑

Per B. Roland丢失或损坏的磁盘或卷也会导致这种情况。
(好点,我忽略了它)

Per Kees Kernel panic 也可能在运行时发生。
注意:当一个函数在内核内部正常失败时可能会发生,但最常发生在模块或内核加载期间(通常是在引导期间)。我以为我在“启动或系统崩溃期间”触及了它,但我看到我对 (1) 的回答是如何说明它只在启动期间发生的。

rafalcieslak直接引用 - '必须添加一件非常重要的事情:整个内核恐慌的要点是保护您的计算机。内核冻结不仅是因为它没有做某事,而且是为了防止您的计算机过热,硬盘驱动器损坏以及任何其他硬件问题,如果执行了某些不正确的命令,模块(例如例如一个负责控制风扇的模块)未能加载,等等。这就是内核更喜欢冻结而不是克服问题的原因。

  • 这个答案是不正确的。内核恐慌不仅限于启动失败。JanC 的回答更正确(“内核检测到一个无法恢复的错误”)。无法启动只是众多情况之一。 (8认同)
  • 添加到 q#2:缺少引导文件(例如,当缺少 LVM 卷时)... (3认同)
  • 必须添加一件非常重要的事情:整个内核恐慌的重点是保护您的计算机。内核冻结不仅是因为它没有做某事,而且是为了防止您的计算机过热,硬盘驱动器损坏以及任何其他硬件问题,如果执行了某些不正确的命令,模块(例如例如一个负责控制风扇的模块)未能加载等。这就是内核更喜欢冻结而不是克服问题的原因。 (2认同)

Jan*_*anC 31

一个内核恐慌时内核检测到来自它无法恢复的错误发生。一个名为panic()处理这种情况的函数(通常通过转储一些调试信息和/或重新启动系统)是在一个非常早期的 UNIX 版本中首次引入的,所以这就是名称的来源(在大多数 UNIX 中它仍然被称为 -像操作系统,包括 Mac OS X)。

微软NT内核中著名的蓝屏死机(官方称为致命系统错误,如在VMS/OpenVMS中)也是“内核恐慌”的一种形式。

内核可以(部分或暂时)恢复的 linux 内核错误称为内核 oopsdmesg有时您可能会在输出中看到这些错误)。

内核崩溃的原因可能是内核中的错误(例如,在作为内核一部分的驱动程序中)或导致内核出现意外/不可预测情况的硬件或软件问题(例如,当无法启动内核时)init进程,否则它会被杀死)。

要找出导致它的原因,您可以查看屏幕上或串行控制台上是否打印了任何内容(如果您配置了)。如果配置为这样做,您还可以让系统制作linux kernel crash dump,在发生恐慌时将内核内存保存到磁盘,以便内核开发人员可以对其进行分析(当然,这需要它能够写入磁盘)。在某些情况下/var/log/messages也可能有有用的信息(例如,在某些情况下,从 oops 中恢复可能会导致以后出现不可恢复的错误)。有一些更详细的信息在这里