NVDIMM原理与应用之四:基于pstore 和 ramoops保存Kernel panic日志
发布日期:2025-04-22 10:55:17 浏览次数:8 分类:精选文章

本文共 1457 字,大约阅读时间需要 4 分钟。

在非易失性内存中保存panic日志

基于pstoreramoops实现在非易失性内存中保存panic日志

在内核开发过程中,有时需要在非易失性内存中保存panic日志以供调试和分析。这可以通过ramoops模块实现,但需要进行一系列配置和准备工作。


1. 确定内存块的起始地址和大小

在开始操作之前,需要提前知道用来保存panic日志的非易失性内存的起始地址和长度。例如,可以使用以下内核配置参数:

ramoops.mem_address=0x11ff000000
ramoops.mem_size=0x1000000

这表示内存块从物理地址0x11ff000000开始,大小为16M


2. 修改内核以支持ramoops驱动

在内核代码中,确保ramoops驱动被正确配置和编译。具体来说,需要检查以下文件:

fs/pstore/ram_core.c

其中,request_mem_region函数需要根据实际情况选择使用persistent_ram_vmappersistent_ram_iomap来映射物理地址到内核线性地址空间。


3. 在内核命令行中指定启动参数

对于ramoops模块的内核(若使用内核自带的ramoops模块),需要在内核启动参数中添加以下内容:

ramoops.mem_address=0x11ff000000
ramoops.mem_size=0x1000000
pstore.backend=ramoops

对于ramoops模块的内核(若使用内核外部的ramoops模块),需要确保内核命令行中包含以下参数:

pstore.backend=ramoops

此外,在内核启动后,需要通过以下命令加载ramoops驱动:

modprobe ramoops.ko ramoops.mem_address=0x11ff000000 ramoops.mem_size=0x1000000

需要注意的是,ramoops.ko模块依赖reed_solomon.ko,请提前安装好reed_solomon.ko。可以通过以下命令生成reed_solomon.ko

cd lib/reed_solomon && make -C /lib/modules/`uname -r`/build modules
modprobe reed_solomon

4. 测试和验证

在完成上述配置后,重启系统并登录系统后,检查是否成功加载了ramoops驱动。可以通过以下命令查看日志:

dmesg | grep pstore

例如,输出中可能包含以下信息:

[ 301.921706] console [pstore-1] enabled
[ 301.921841] pstore: Registered ramoops as persistent store backend
[ 301.921862] ramoops: attached 0x1000000@0x11ff000000, ecc: 0/0

此外,可以通过以下命令检查/sys/fs/pstore目录下的文件:

ls -alrt /sys/fs/pstore

5. 参考文档

更多关于ramoops模块的配置和使用,可以参考以下文档:

Documentation/ramoops.txt
Documentation/ABI/testing/pstore/

如需进一步了解ramoops模块的实现和使用方法,可以参考相关技术博客和开发文档。

上一篇:NVelocity标签使用详解
下一篇:NuxtJS 接口转发详解:Nitro 的用法与注意事项

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月02日 23时47分46秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章