当前位置: 首页>>技术问答>>正文


什么是内核恐慌?

,

问题描述

我刚刚完成了OS课程。我经常听到“kernel panic”这个短语。你可以解释吗

  1. 什么是内核恐慌?

  2. 它为什么会发生?

  3. 我怎样才能发现内核出现恐慌?

  4. 它对系统有什么影响?

  5. 它只发生在Linux中吗?

  6. 我该怎样预防呢?

最佳解决思路

每个FAQ一次1个问题

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

  2. 为什么会这样? Hosed更新,硬件故障,硬件不受支持,驱动器或分区出现故障或丢失(请参阅底部的编辑信用)

  3. 我怎么能理解内核恐慌发生了?观察启动提示(关闭安静的内核参数)或者您的计算机无法启动

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

  5. 它只发生在Linux中吗?不,所有unix-like操作系统都可能出现内核恐慌。它相当于Windows Blue Screen of Death

  6. 我该怎样预防呢?它通常不会发生。测试更新并解决问题。使用stable而不是开发分支。

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

编辑

每个B. Roland丢失或损坏的磁盘或卷也可能导致此问题。 (好点,我忽略了它)

每个Kees运行时也会发生内核混乱。注意:当函数在内核中优雅地失败时会发生,但最常发生在模块或内核加载期间(通常在引导期间)。我以为我在“启动或系统崩溃期间”触及它,但我看到我对(1)的回答如何表明它只发生在启动期间。

根据rafalcieslak直接引用 – ‘必须添加一个非常重要的事情:整个内核恐慌的要点是保护您的计算机。内核冻结不仅因为它没有做某事,而且还为了防止你的计算机f.e.如果执行了一些不正确的命令,模块(例如负责控制风扇的模块)无法加载等,可能会出现过热,硬盘损坏和任何其他硬件问题。这就是内核更喜欢的原因冻结,而不是克服这个问题。

次佳解决思路

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

微软NT内核中着名的Blue Screen Of Death(官方称为致命系统错误,如在VMS /OpenVMS中)也是”kernel panic”的一种形式。

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

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

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1526.html,未经允许,请勿转载。