系统崩溃时如何生成 ramdumps?
How are ramdumps generated on a system crash?
在我们的项目中,我们从其他团队获得 ramdumps,这是在系统崩溃的情况下生成的,需要进一步调查。我正在开发一个实用程序,它将一些特定于板的数据保存在 ram 中,以后可以用于调试目的。为了更好地理解将在其中使用我的实用程序的 environment/process,我试图弄清楚这些信息。
直到现在我知道会有看门狗 运行ning (software/hardware),当在特定的超时持续时间内被喂食时它会被触发。一旦被触发,它将通过一些系统寄存器执行系统复位。
现在我不太清楚 ramdumps 是什么时候生成的,是 before/after 重置,还是需要一些其他工具连接到板子上来捕获 ramdumps。
我知道一旦 ramdumps 可用,我们就可以 运行 解析器来提取有用的信息,或者可以在 gdb 等调试器中使用它来进一步分析导致崩溃的状态。
有很多工具可以分析 ramdump,也就是物理内存转储。
想象一下重置后RAM的状态。通常,您不会在重置后转储内存,而是在重置前进行内存分析,以便进行内存分析。
关于 Linux 系统中 RAM 转储的详细信息
根据ramdump的生成、传输和存储方式分为三个部分。
- 内核中支持当内核崩溃或冻结时进入ramdump模式。
- 在boot-loader中支持检测ramdump,等待主机工具启动ramdump并将数据发送到主机。
- 一个主机工具,可以从设备接收数据并将其保存在主机 PC 文件系统中。
以后还需要bootloader支持,它决定是否进入ramdump模式而不是正常引导Linux。
崩溃期间生成 Ramdump
内核将调用从 ramdump 驱动程序注册的内核崩溃通知程序。 Ramdump 驱动程序,
- 调用cache sycn api 确保ram中的所有内容是连贯的。(flush_cache_all(), outer_flush_all())
- 将核心寄存器保存到 ram
- 保存 MMU 寄存器
- 写入MAGIC_CRASH到SRAM寄存器。
然后重新启动。现在引导加载程序在 SRAM 寄存器中找到 MAGIC_CRASH 并进入 ramdump 模式。
有关 Ramdump Linux inspection 的非常详细的信息。
你可以在飞行中尝试这样的事情
$ cat /proc/[your_pid]/maps and the use gdb to inspect
$ gdb --pid [your_pid]
一些可以帮助你的工具。
浏览这些列表,您将找到有关 (FATKit) 取证分析 toolkit.Foriana 等的信息
在我们的项目中,我们从其他团队获得 ramdumps,这是在系统崩溃的情况下生成的,需要进一步调查。我正在开发一个实用程序,它将一些特定于板的数据保存在 ram 中,以后可以用于调试目的。为了更好地理解将在其中使用我的实用程序的 environment/process,我试图弄清楚这些信息。
直到现在我知道会有看门狗 运行ning (software/hardware),当在特定的超时持续时间内被喂食时它会被触发。一旦被触发,它将通过一些系统寄存器执行系统复位。
现在我不太清楚 ramdumps 是什么时候生成的,是 before/after 重置,还是需要一些其他工具连接到板子上来捕获 ramdumps。
我知道一旦 ramdumps 可用,我们就可以 运行 解析器来提取有用的信息,或者可以在 gdb 等调试器中使用它来进一步分析导致崩溃的状态。
有很多工具可以分析 ramdump,也就是物理内存转储。
想象一下重置后RAM的状态。通常,您不会在重置后转储内存,而是在重置前进行内存分析,以便进行内存分析。
关于 Linux 系统中 RAM 转储的详细信息
根据ramdump的生成、传输和存储方式分为三个部分。
- 内核中支持当内核崩溃或冻结时进入ramdump模式。
- 在boot-loader中支持检测ramdump,等待主机工具启动ramdump并将数据发送到主机。
- 一个主机工具,可以从设备接收数据并将其保存在主机 PC 文件系统中。
以后还需要bootloader支持,它决定是否进入ramdump模式而不是正常引导Linux。
崩溃期间生成 Ramdump
内核将调用从 ramdump 驱动程序注册的内核崩溃通知程序。 Ramdump 驱动程序,
- 调用cache sycn api 确保ram中的所有内容是连贯的。(flush_cache_all(), outer_flush_all())
- 将核心寄存器保存到 ram
- 保存 MMU 寄存器
- 写入MAGIC_CRASH到SRAM寄存器。 然后重新启动。现在引导加载程序在 SRAM 寄存器中找到 MAGIC_CRASH 并进入 ramdump 模式。
有关 Ramdump Linux inspection 的非常详细的信息。
你可以在飞行中尝试这样的事情
$ cat /proc/[your_pid]/maps and the use gdb to inspect
$ gdb --pid [your_pid]
一些可以帮助你的工具。
浏览这些列表,您将找到有关 (FATKit) 取证分析 toolkit.Foriana 等的信息