什么是内核恐慌?


52

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

  1. 什么是内核恐慌?
  2. 为什么会发生?
  3. 如何确定发生内核恐慌?
  4. 它对系统有什么影响?
  5. 它仅在Linux中发生吗?
  6. 我该如何预防?

内核恐慌是Mac上错误消息的一部分。如果它说“恐慌,我们就挂在这里”(猜测可能是unix的一部分。)
Alvar

21
如果您正在学习操作系统课程,为什么不请讲师解释他们使用的术语呢?您将会学到很多东西。
TRiG

Answers:


56

每个常见问题解答一次回答一个问题

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

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

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

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

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

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

附加说明:内核崩溃和系统故障/关闭可能直接导致计算机受到物理损坏。例如,在极端过热或磁盘损坏之前停止。有关直接报价,请参见底部的编辑信用。

编辑

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

Per Kees内核在运行时也会出现恐慌。
注意:当函数在内核内部正常失败时会发生,但是最常见的是在模块或内核加载期间发生(通常是在引导过程中)。我以为是在“启动或系统崩溃期间”触及了它,但是我看到我对(1)的回答是说它仅在启动期间发生。

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


3
添加到q#2:缺少启动文件(例如,缺少LVM卷时)...
antivirtel 2011年

@B。罗兰(Roland)添加并记入
RobotHumans

很好,谢谢-我写了它,因为它曾经与我发生过...(我意外地在LVM中格式化了一个卷...)
antivirtel 2011年

8
这个答案不正确。内核恐慌不仅限于引导失败。JanC的答案更为正确(“内核检测到无法恢复的错误”)。无法启动只是许多条件之一。
Kees Cook

2
必须添加一件非常重要的事情:整个内核恐慌的要点是保护您的计算机。内核冻结不仅是因为它无法执行某些操作,还在于防止计算机过热,硬盘驱动器损坏以及任何其他硬件问题,如果执行了某些不正确的命令,则可能会冻结该模块(对于例如负责控制风扇的模块)无法加载等。这就是为什么内核更喜欢冻结而不是克服问题。
—RafałCieślak2011年

31

一个内核恐慌时内核检测到来自它无法恢复的错误发生。命名panic()为处理这种情况的函数(通常通过转储一些调试信息和/或重新引导系统)是在非常早的UNIX版本之一中首次引入的,因此该名称是从那里来的(在大多数UNIX中,它仍然被称为-例如Mac OS X等操作系统)。

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

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

发生内核恐慌的原因可能是内核中的错误(例如,内核中的驱动程序)或硬件或软件问题,导致内核发生意外/不可预测的情况(例如,无法启动内核时)。init处理,否则将被杀死)。

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


1

我现在系统上有内核恐慌,Ubuntu 16.04。我的计算机一直在抱怨启动盘已满,所以我运行了“ apt autoremove”。它删除了我认为不必要的文件,结果导致内核崩溃。

因此,我猜想对启动盘进行任何级别的编辑都可能导致内核崩溃。因此,如果您不注意自己在做什么,请不要无所事事。


这无助于解决OP的问题。:(
威廉姆森

1

@RobotHumans的答案解决了您问题的所有部分。但是,我想详细说明内核恐慌的原因。

首先,有两种类型的内核恐慌-软内核恐慌(也称为Oops)和(硬内核恐慌,也称为Aieee!)。

当系统遇到无法处理的异常时,系统将进入硬内核恐慌模式。软内核恐慌相对容易处理。

内核恐慌的原因

原因有几种,但最常见的原因如下:

  • RAM损坏或不兼容是内核恐慌的最常见和常见原因。
  • 过时,不兼容或损坏的内核扩展
  • 过时,不兼容或损坏的内核驱动程序。
  • 硬盘损坏或坏扇区或目录损坏等问题也可能导致内核崩溃。
  • RAM或硬盘空间不足
  • 硬件损坏,程序编写不当或硬件故障也可能导致内核崩溃。

同样重要的是要注意,只有位于内核空间内的模块才可能导致内核崩溃。lsmod可以运行命令以获取动态加载的模块的列表。

要解决内核崩溃问题,请检查/ var / log / messages。有时,所有信息都可能记录在此处,而有时可能没有与内核崩溃有关的任何信息记录在此处。尽管不可避免地会陷入内核恐慌,但没有什么可担心的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.