内核恐慌不转储日志文件


8

我在Steam上玩游戏,突然之间我陷入了内核恐慌。我手动关闭了计算机,然后重新启动到64位的Linux Mint 17.1(肉桂色),然后去检查了我的日志文件/var/log/,但是找不到任何与内核崩溃有关的参考或消息。发生了

奇怪的是,为什么它从未转储内核,甚至从未将其记录到日志文件中。如果内核再次出现恐慌,我如何确保始终转储内核?内核崩溃时为什么什么也没记录,这没有任何意义。环顾谷歌,人们建议通过阅读/var/log/dmesg/var/log/syslog/var/log/kern.log/var/log/Xorg.log等...但一无所获。甚至都不在.Xsession-errors文件中。

以下是屏幕上的一些照片:
内核恐慌(image2) 内核恐慌(image1)

我可以随时在屏幕上拍照,如果再次发生的话,但是我只想确保可以获取它以转储内核并在内核崩溃时创建日志文件。


1
你检查了/var/crash吗?
Archemar

@Archemar没有这样的文件或目录。

您极不可能在中找到有关内核故障的信息.Xsession-errors
G-Man说'恢复莫妮卡'

Answers:


6

为确保发生内核故障时您的计算机生成“核心”文件,您应确认计算机的“ sysctl”设置。

IMO,以下应为(最低)设置/etc/sysctl.conf

kernel.core_pattern = /var/crash/core.%t.%p
kernel.panic=10
kernel.unknown_nmi_panic=1

sysctl -p/etc/sysctl.conf文件中进行更改后执行。mkdir /var/crash如果还不存在,则可能还应该。

您可以通过使用SysRq键生成手动转储来测试以上内容(转储核心的键组合为Alt+ SysRq+ C)。


这似乎是某事的开始。我不得不将这些作为sysctl的新条目来写,因为它不在文件中。我Alt+SysRq+C用按键完成了,但是它什么也没做,只是闪烁了屏幕。我也在使用笔记本电脑,因此按键可能有所不同。我确实尝试过,fn+SysRq+C但是和以前一样。

请共享“ cat / proc / sys / kernel / sysrq”的输出。sysrq可能在您的计算机上被禁用。有关更多详细信息,请参阅:kernel.org/doc/Documentation/sysrq.txt
shubham

的输出给了我176

编辑文件/etc/sysctl.conf以包含以下行-> kernel.sysrq = 1
shubham

1
@ user94959它对您有用吗?
shubham

2

当内核崩溃时,这意味着内核出了点问题。写入日志文件和核心转储需要使用块存储设备(您的磁盘)和文件系统的驱动程序(必须分配空间,并且必须更新日志文件的大小)。给定内核提供的那些服务才能写入文件,并且内核知道它处于损坏状态,因此它无法写入文件或记录任何内容,因为它不再处于安全状态,因此任何操作都会使情况变得更糟,并可能损坏/破坏文件系统。因此,当内核崩溃时,既不能将其写入日志,也不能转储核心转储。

现在,您可以根据需要为系统配置一个崩溃处理内核,这是第二个加载到内存中的内核,如果主内核崩溃,可以将控制权转移到该内核。由于该内核具有驱动程序等,因此它可以为您保存故障转储。但是,这不是很常见的设置,主要用于需要高可用性且崩溃是非常严重的问题且必须调查的高端系统。

请参见ubuntu.com 上“ 内核崩溃转储”中的例如crashkernel选项。(请注意,该页面说默认情况下从Ubuntu 16.04开始启用内核崩溃转储机制。)

我相信系统实际上将转储保存到保留的内存中,然后重新引导,内核在下次引导时将保留的内存保存到磁盘(因为新引导的内核处于正常状态,可以执行此操作)。


ubuntu.com上的页面对机制的描述稍有不同:它说内核将自己重新引导到内存的保留区域,因此在中断之前它一直在使用的内存(即您要转储的内存)将保留。完整。而且我相信它并不像您听起来的那样充满异国情调(因为现在默认情况下已启用)。
G-Man说'Resstate Monica''May
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.