免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 40899 | 回复: 99

[已解决]有什么好的办法可以保存 kernel panic 信息? [复制链接]

论坛徽章:
0
发表于 2010-05-31 09:30 |显示全部楼层
本帖最后由 Godbach 于 2010-06-02 10:46 编辑

往往 kernel panic 后,信息无法记录到 syslog 中,甚至连 keyboard 也无效了
虽然可以通过 netconsole 将数据输出到其他机器上,但毕竟不方便
有什么办法可以将数据保存在硬盘上,哪怕是单独分出一个分区也好?

解决办法:
当系统有问题时,fs 的系统调用是无法正常运行的,因此在 OOPS 代码中嵌入 save to file 代码从逻辑上是讲不通的
用 kexec 去启动一个 capture 内核,导出 /proc/vmcore,利用 crash 根据 vmlinux 去分析 vmcore 是个不错的办法
目前利用此方法已能解决我的问题,谢谢各位

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2010-05-31 09:40 |显示全部楼层
白金兄的这种需求是可以实现的。可以考虑往内核插入一个函数,在系统发生Oops的时候,把信息写到文件立面。

论坛徽章:
0
发表于 2010-05-31 10:01 |显示全部楼层
白金兄的这种需求是可以实现的。可以考虑往内核插入一个函数,在系统发生Oops的时候,把信息写到文件立面。
Godbach 发表于 2010-05-31 09:40

哦?Godbach 兄,是不是需要一起用到 “内核写文件” 技术?
找到 OOPS 打印或 netconsole 发送 UDP 数据的前端位置,插入一个自己的 save to file 功能即可?
是否验证过此方法是否可行?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2010-05-31 10:08 |显示全部楼层
哦?Godbach 兄,是不是需要一起用到 “内核写文件” 技术?

是的。
找到 OOPS 打印或 netconsole 发送 UDP 数据的前端位置,插入一个自己的 save to file 功能即可?
是否验证过此方法是否可行?

开一个内核线程,来做这个工作应该就成。

论坛徽章:
0
发表于 2010-05-31 10:11 |显示全部楼层
为什么要单开一个内核线程完成此事呢?
如果找到了产生 OOPS 信息的位置,直接在他前面加一个 function 实现 save to file 会有什么问题吗?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2010-05-31 10:36 |显示全部楼层
为什么要单开一个内核线程完成此事呢?
如果找到了产生 OOPS 信息的位置,直接在他前面加一个 function 实 ...
platinum 发表于 2010-05-31 10:11


对,那样也可以。

也可以考虑做成一个内核模块。

论坛徽章:
0
发表于 2010-05-31 11:19 |显示全部楼层
对,那样也可以。

也可以考虑做成一个内核模块。
Godbach 发表于 2010-05-31 10:36

有办法实现在不 recompile 现有内核的情况下通过注册的方法挂载一个内核模块,实现功能嵌入,实现我的需求吗?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2010-05-31 11:27 |显示全部楼层
那就需要明确一下截获OOps信息,需要那修改那些内容。

论坛徽章:
0
发表于 2010-05-31 11:33 |显示全部楼层
哦,我不是太明白为什么还要明确截获哪些 OOps 信息,为什么要明确呢?

论坛徽章:
0
发表于 2010-05-31 11:34 |显示全部楼层
照相机最靠谱,其他的方法都有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP