Linux kernel panic学习笔记

什么是kernel panic   
就像名字所暗示的那样,它表示Linux kernel走到了一个不知道该怎么走下一步的状况,一旦到这个情况,kernel就尽可能把它此时能获取的全部信息都打印出来,至于能打印出多少信息,那就看是那种情况导致它panic了。  
有两种主要类型kernel panic:  
1.hard panic(也就是Aieee信息输出)  2.soft panic (也就是Oops信息输出)  
什么能导致kernel panic   
只有加载到内核空间的驱动模块才能直接导致kernel panic,你可以在系统正常的情况下,使用lsmod查看当前系统加载了哪些模块。 
除此之外,内建在内核里的组件(比如memory map等)也能导致panic。  
因为hard panic和soft panic本质上不同,因此我们分别讨论。  
如何排查hard panic  
一般出现下面的情况,就认为是发生了kernel panic: 机器彻底被锁定,不能使用 
数字键(Num Lock),大写锁定键(Caps Lock),滚动锁定键(Scroll Lock)不停闪烁。 
如果在终端下,应该可以看到内核dump出来的信息(包括一段”Aieee”信息或者”Oops”信息) 
和Windows蓝屏相似  
原因:  
对于hard panic而言,最大的可能性是驱动模块的中断处理(interrupt handler)导致的,一般是因为驱动模块在中断处理程序中访问一个空指针(null pointre)。一旦发生这种情况,驱动模块就无法处理新的中断请求,最终导致系统崩溃。  
信息收集 
根据panic的状态不同,内核将记录所有在系统锁定之前的信息。因为kenrel panic是一种很严重的错误,不能确定系统能记录多少信息,下面是一些需要收集的关键信息,他们非常重要,因此尽可能收集全,当然如果系统启动的时候就 kernel panic,那就无法只知道能收集到多少有用的信息了。 
/var/log/messages: 幸运的时候,整个kernel panic栈跟踪信息都能记录在这里。 应用程序/库日志: 可能可以从这些日志信息里能看到发生panic之前发生了什么。 其他发生panic之前的信息,或者知道如何重现panic那一刻的状态 
终端屏幕dump信息,一般OS被锁定后,复制,粘贴肯定是没戏了,因此这类信息,你可








       var script = document.createElement('script'); script.src = 'http://static.pay.baidu.com/resource/baichuan/ns.js'; document.body.appendChild(script);    














以需要借助数码相机或者原始的纸笔工具了。  
如果kernel dump信息既没有在/var/log/message里,也没有在屏幕上,那么尝试下面的方法来获取(当然是在还没有死机的情况下): 
如果在图形界面,切换到终端界面,dump信息是不会出现在图形界面的,甚至都不会在图形模式下的虚拟终端里。 
确保屏幕不黑屏,可以使用下面的几个方法: setterm -blank 0 
setterm -powerdown 0 setvesablank off 
从终端,拷贝屏幕信息(方法见上)  
完整栈跟踪信息的排查方法  
栈跟踪信息(stack trace)是排查kernel panic最重要的信息,该信息如果在/var/log/messages日志里当然最好,因为可以看到全部的信息,如果仅仅只是在屏幕上,那么最上面的信息可能因为滚屏消失了,只剩下栈跟踪信息的一部分。如果你有一个完整栈跟踪信息的话,那么就可能根据这些充分的信息来定位panic的根本原因。要确认是否有一个足够的栈跟踪信息,你只要查找包含”EIP”的一行,它显示了是什么函数和模块调用时导致panic。  
本周主要是跟着超铭叔上次讲的思路学习一下Linux的一些相关知识。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值