我想读取内核核心文件中存在的dmesg
日志。通常的方法是使用类似crash
的实用程序来打开具有相应vmlinux
的核心文件。
如果我没有错的话,从核心文件读取dmesg
日志没有符号依赖性,因此也没有vmlinux
依赖性。
其次,运行中的系统可能没有任何可用于打开核心文件的实用程序。因此,我想实现我自己的脚本/实用程序,它可以将核心文件作为普通文件打开,并对其进行解析以转储dmesg日志。
有可能吗?如果是,核心文件的格式是什么,这样我就可以定位dmesg
的开始和结束位置?
crash
工具在其交互式提示中有命令log
来显示内核消息缓冲区(分析核心转储(。您将在crash-utility/crash
下找到源,并可以继续搜索log_buf
。
核心文件的格式是什么,这样我就可以定位dmesg的开始和结束位置
看起来">核心转储文件格式使用ELF格式,但在ELF标准中没有描述";
您还可以找到";如何分析Linux内存或核心转储";在Volatility框架中,它是用Python编写的。例如,搜索dmesg
。
我不认为coredump文件中有内核日志,如果它有strings
,就应该打印出来。我认为crash
所做的是将内核环形缓冲区中的内容打印给用户(如果有的话(。通常,当内核出现故障时,内核会将一些有用的信息放入内核环形缓冲区,但这不适用于用户空间应用程序。
coredump只是一个ELF
文件,其中包含一些额外的数据,如果您想解析ELF
格式,您必须查看规范或使用工具/库。