kernel panic

x 的问题还好办,可是如果 rpwt 碰到 kernel panic,那可真是上天无路入地无门,撞墙的心都有 。一般引起 kernel panic 的原因很多,但是都比较罕见。例如硬件问题 (irq confilct, bad block, high temperature),软件问题(错误的mod,内核的bug),或者文件系统不支持(没有内建 ext4 支持却挂载 ext4 的 root 分区),硬件的变动(如添加/更换内存,不支持架构的cpu),错误的驱动。

kernel panic 的表现形式也是多种多样:启动失败,不正常的长时间 io 操作,键盘灯的不正常频闪,wireless 等指示灯错误闪烁,无响应(请区别 xorg crash 情况),彻底锁死,黑屏,reisub 大法不灵 等等。

一般情况下,秉承 kiss 原则的 linux内核,会尽力解决一切错误并正常运行,如果遇到极端情况发生 panic,它会尽可能把所有相关信息显示在屏幕上——至于多少,别奢求,kernel 已经尽力了。

因为 kernel panic 是一种很极端的情况,有的人可能自从使用 linux 就没有遇到过。所以我们要收集所有相关的信息来解决问题。发生错误后的各种输出是最直接的最有效的(dump 在 tty。请关闭 x)。因为 kernel 已经崩溃,不一定能找到完整的 log。您可以根据以下线索尝试:

  1. /var/log/messages —— rp 爆发的时候,也许会记录下很多相关信息。按照时间戳查找。

  2. 回溯操作 —— 回忆 kernel panic 之前所做的所有事,并回滚。(如安装了某个程序,可以在 /var/log/pacman.log 找到安装日志)

  3. dump 信息 —— 屏幕输出信息是系统最后的“遗言”,请使用数码相机或者笔纸记录。(tty only)

接下来就应该根据错误发生的可能原因进行排除。将内核启动参数化为最简形式,不应附加任何不必要参数,并 BIOS 中禁用掉所有无关硬件。相关日志文件:

如果可以,您应该记录下所有屏幕输出信息,并查看 /var/log/messages 。

可能遇到的问题,和解决方法:

  1. irq conflict (还好我没碰到),可以尝试从 bios 修改硬件irq,或者升级 bios,都不生效就换电脑或者禁用冲突硬件;

  2. bad balock,尝试修复坏道或者屏蔽坏道分区,建议更换磁盘;

  3. io error,同上,也有可能是没有内建文件系统支持的原因,重新编译内核或者找最新版的内核安装;

  4. mod,删除可能导致错误的内核模块(如 vboxdrv),涉及到的命令有:

* lsmod: 列出已载入的模块


* modprobe: 载入模块


* rmmod: 移除内核中模块,效果等同于 modprobe -r


* modinfo: 显示模块相关信息
  1. driver,a卡或者n卡驱动,也容易造成问题;

  2. 硬件本身的问题导致,建议检测硬件可用性和兼容性(例如 memtest+);

  3. 内核bug,如果您有能力,建议使用 KDB (kernel debugger) 排错,或者重新编译内核

参考: 1.