Kernel panic 的错误非常常见,“基本”束手无策的印象确实很 “panic”。不过有 很多 panic 解决起来其实也比较简单,本文参考网上很多文章,先了解一下 panic 。在记录一下实践中遇到的问题。
参考
- http://www.2hei.net/mt/2008/07/kernel-panic-is-not-syncing.html
- http://hi.baidu.com/mei2yan/blog/item/7e79eafbc4fae863034f56f1.html
- http://linux.chinaunix.net/bbs/viewthread.php?tid=1017287
panic 类型
通常有这样几种 panic :
Kernel panic - not syncing fatal exception in interrupt kernel panic - not syncing: Attempted to kill the idle task! kernel panic - not syncing: killing interrupt handler! Kernel Panic - not syncing:Attempted to kill init !
kernel 源码分析
和 panic 有关的源码有:
kernel/panic.c kernel/exit.c
问题分析
硬件问题
硬件检测错误,内存出错会引起 panic。对于服务器,通常内存问题更多(我手 头有台服务器有16根1G的ddr3内存条,其中一个内存有问题,导致过 kernel panic)
温度
和硬件也有关系,不过这个简单点,关机冷却会再试试就知道。
根文件系统没有挂载上
这个问题最常见!通常都是 grub 启动时候 kernel 选项中 root 指定的根分区 不对。或者没有对于设备驱动。
修改 panic 的默认动作
默认情况下,kernel panic 发生后只有按电源冷关机,键盘鼠标都不起作用。但 是可以定制,在 /etc/sysctl.conf 添加:
kernel.panic = 30 #panic错误中自动重启,等待时间为30秒 kernel.sysrq=1 #激活Magic SysRq! 否则,键盘鼠标没有响应
其中激活 Magic SysRq 键指按住 [ALT]+[SysRq]+[COMMAND], 这里 SysRq 是 Print SCR 键,而 COMMAND 按以下来解释:
b - 立即重启 e - 发送SIGTERM给init之外的系统进程 o - 关机 s - sync同步所有的文件系统 u - 试图重新挂载文件系统
