我的笔记本电脑设置为媒体服务器 - 当它通过 HDMI 电缆插入电视启动时,它通常会出现内核恐慌(但并非总是如此)。
内核崩溃是:
有什么想法吗?我正在运行 Ubuntu 13.04,但在 12.04 和 12.10 上也发生了同样的情况。
答案1
我建议在内核崩溃时保存内核崩溃转储,以便找出崩溃的根本原因。
Ubuntu 依赖于kexec
生成内核崩溃转储。
它是如何工作的?
=>
当内核崩溃发生时,内核依靠 kexec 机制在系统启动时分配的内存中快速重新启动内核的新实例(见下文)。这允许现有内存区域保持不变,以便安全地将其内容复制到存储中。
安装内核崩溃转储实用程序(需要重新启动)
sudo apt-get install linux-crashdump
确认
1. 启动参数
cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.8.0-29-generic root=/dev/mapper/ubuntu-root ro crashkernel=384M-2G:64M,2G-:128M splash quiet vt.handoff=7
意思是
- 如果 RAM 小于 384M,则不保留任何内容(这是“救援”情况)
- 如果 RAM 大小在 386M 至 2G 之间(不含),则保留 64M
- 如果 RAM 大小大于 2G,则保留 128M
注意:
crashkernel=384M-2G:64M,2G-:128M
这可能会导致 RAM 小于 2GB 的系统出现问题
重启后第二次验证
cat /sys/kernel/kexec_crash_loaded
如果为 1 => 表示崩溃内核已加载,如果为 0,则表示出现了问题。
也可以通过运行以下命令来加载崩溃内核:sudo /etc/init.d/kdump start
kdump-tools
注意:自 13.04 Raring 起,通过运行修改后可以使用新机制实现相同的行为/etc/default/kdump-tools
(请参阅特定于版本的说明):sudo kdump-config load
保存崩溃转储
/proc/sys/kernel/sysrq
通过按 +c(需要为 1)或echo c | sudo tee /proc/sysrq-trigger
(与 相同echo c > /proc/sysrq-trigger
)可以导致崩溃。
如果一切正常,应该会有一些延迟(取决于内存大小)。然后系统会再次重新启动进入正常模式。完成后,系统将重新启动到其正常运行模式。内核崩溃转储文件可以在 / 目录中找到var/crash
。
请参阅 Ubuntu 服务器 =>内核崩溃转储
到检查崩溃转储參考 => 崩溃转储方法