内核恐慌日志在哪里?


31

我手刹/ ffmpeg有问题。约5分钟的代码转换后,计算机将锁定。我相当确定这是内核恐慌,因为caps-lock开始闪烁。

关于应该怎么做有一些逻辑上的问题,还有一些关于特定错误的问题,但是我真的很想做一件事:在一切消失之前发生了什么?

我检查了一下/var/log/kern.log,发现周围的所有时间都是我粘贴在DVD中,然后几分钟后,系统启动。没有错误,没有惊恐通知。

有什么办法可以迫使恐慌记录下来?我相当确定我可以重现此消息(最近尝试过此消息的次数为100%),因此尽管我希望此操作“可行”,但我很高兴可以重新启动几次(如果这意味着我可以找到引起恐慌的原因。


转码时收到任何特定消息?可能有助于追踪解决方案;)
Rinzwind 2012年

@Rinzwind不。什么也没显示,只是冻结。
奥利(Oli)

最有可能是过热问题。代码转换会严重影响CPU,如果您的散热效果不是100%,则CPU将进入紧急关机状态。例如,我已经看到这种情况发生在导热膏在CPU散热器上变干的时候。当超频设置在BIOS中混乱时,也会发生这种情况。尝试在锁定之前使用xsensors监视CPU温度。
尼尔·梅休

Answers:


21

Ubuntu中的所有系统日志均由处理,rsyslog从而将其配置保留在/etc/rsyslog.conf和中/etc/rsyslog.d/

有关如何配置rsyslog和可能选项的更多信息,请访问rsyslog.conf man page

打开/etc/rsyslog.d/50-default.conf您会看到其中一行包含

*.*;auth,authpriv.none -/var/log/syslog*

这意味着在这种情况下,您要查找的文件/var/log/syslog可能是您可能拥有的任何大量日志。

您可以看到文件名也以a开头-,这意味着该文件在写入之前已被缓存,虽然很好,但可能会留下错误的日志,您想要的是一旦出现问题就立即写入日志。删除破折号并重新启动或重新加载rsyslog,然后再次使计算机崩溃,请检查/var/log/syslog


1
删除重新启动的“-”,检查/ var / log / syslog | grep恐慌。这没用。我错过了什么 ?
AAI

26

如果确实是内核崩溃,则不会通过常规方法将其写入日志。由于内核此时已崩溃,因此写入文件系统是一个冒险的操作-不再信任太多内核,因此写入日志实际上可能是在引导加载程序上产生了随机废话!

相反,您可以将内存的内容转储到交换区中,然后稍后对其进行调试。这称为内核崩溃/核心转储。

Ubuntu Wiki的CrashdumpRecipe可能有用-尽管它看起来有些过时了,但我认为应该没有太多改变。


10
CrashdumpRecipe指Sourceforge上可用的Linux Kernel Crash Dump(LKCD)工具-Ubuntu的一个软件包叫做linux-crashdump; 该软件包仍在所有版本中可用

3

串行端口

串行端口是计算机之间的一种简单的低级通信机制。

好处:

  • 一次简单的设置(如果您有硬件)
  • 可靠,因为数据传输仅依赖于简单的线路和内核API,因此与TCP / IP子系统相比,它不太可能受紧急情况的影响。

缺点:

  • 大多数现代笔记本电脑都没有串行端口了(暴露了?)以节省空间。但是台式机和虚拟机仍然可以。
  • 您还需要另外一台带有串行端口的计算机来接收数据,但是基本上所有嵌入式开发板(例如Raspberry Pi)都是这种情况。
  • 受物理层串行电缆长度的限制,这与无限制的TCP / IP网络不同。但是,可以使用在串行和TCP / IP之间进行接口的设备来解决此问题。但是有些设备会在两者之间转换。

串行端口如下所示:

RPI上可通过GPIO使用。

然后,如果您具有必需的硬件,请使用以下方法从第二台计算机连接到主计算机:

screen /dev/ttyS0 115200

这实际上为您提供了一个外壳。

然后在主机上,开始紧急操作。

发生紧急情况时,紧急情况转储将流式传输到第二台计算机,您可以通过在终端上向上滚动来查看全部内容。

其他方法

还有其他一些方法可以克服上面提到的硬件限制,但以更复杂和更不可靠为代价。值得注意的方法:

  • netdump:通过TCP / IP传输紧急消息。依赖于TCP / IP子系统未损坏。
  • kdump:似乎是在以下网址提到的linux-crashdump的基本机制:https : //askubuntu.com/a/104793/52975引导第二个Linux内核来检查崩溃的内核。可能出什么问题了!:-)

另请参见以下出色答案:https : //unix.stackexchange.com/questions/60574/determining-cause-of-linux-kernel-panic

逐步调试

最终,获得恐慌输出需要某些内核功能正常工作,并且任何内核功能都可能会因恐慌而损坏。

但是,如果可以在内核上使用GDB,谁会感到恐慌?如果您是那个顽固的人,请查看:

一旦您具有完全的可见性(并且有足够的时间!),每个问题都会掉落。

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.