kdump如何转储原理分析

关于kdump如何设置,可以看其他的文章。

他的实现原理其实很简单,详细代码可以看linux-2.6.16/fs/proc/vmcore.c

通过kexec启动新的内核,因为在第一个内核(也就是crash掉的kernel)在设置kdump的时候,

通过配置文件,分了一部分内存给新的内核做启动用,这部分内存在crash的kernel是不会用到。

在重起的过程中,因为没有断电,所以在内存中保存了crash时候的数据信息,在新kernel启动的时候,

通过vmcore.c中:

通过上面的parse-crash-elf-headers函数把数据读到下面的结构链表中:

struct vmcore {

struct list_head list; //链表组织

unsigned long long paddr; //物理地址

unsigned long long size; //本内存片断的大小

loff_t offset;

};

 

我们在代码的注释里面:/* Initialize /proc/vmcore size if proc is already up. */

在proc系统初始化的时候,会创建一个/proc/vmcore的文件,通过读这个文件,就可以知道crash的kernel的信息。

proc/vmcore文件是放在一个内存中的东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值