抓取系统死机log 有两种方法:kdump和pstore
pstore:
在dts里面增加ramoops配置。(ramoops最好从相应代码里面查找)
在defconfig中打开
第一步:配置内核config
CONFIG_UBIFS_FS=y
+CONFIG_PSTORE=y
+CONFIG_PSTORE_CONSOLE=y
+CONFIG_PSTORE_RAM=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ISO8859_1=y
CONFIG_CRYPTO_ARC4=y
@@ -275,6 +278,7 @@ CONFIG_FRAME_WARN=2048
CONFIG_DEBUG_FS=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_VM=y
+CONFIG_PANIC_TIMEOUT=3
# CONFIG_SCHED_DEBUG is n
第二步:配置dts
在 reserved-memory中添加ramoops配置:
reserved-memory {
#address-cells = <1>;
#size-cells = <1>;
ranges;
......
ramoops@66000000{
compatible = "ramoops";
reg = <0x66000000 0xf0000>;
record-size = <0x40000>;
console-size = <0x80000>;
ftrace-size = <0x20000>;
};
第三步:触发panic
手动触发panic:
echo c > /proc/sysrq-trigger
第四步:抓取Log
panic后重启设备,注意不能掉电,否则是没法抓取到Log的。
在设备重启后,命令行输入:
mount -t pstore pstore /sys/fs/pstore
这样就可以在/sys/fs/pstore目录下看到抓取到的Log了: