看门狗执行前如何将日志复制到闪存?

时间:2019-04-25 08:45:21

标签: c++ linux watchdog

在看门狗执行之前如何执行某些脚本(在我的情况下是将日志复制到闪存或远程复制日志的脚本)?

我应该修改linux内核看门狗驱动程序吗?如果可以,采用哪种方法? 或者也许可以通过以下方式进行配置:

/etc/default/watchdog
/etc/watchdog.conf

但是,我们在看门狗配置受到限制的情况下安装了busybox。 我在google上找不到任何东西,这是必须解决的基本问题,令人惊讶的是-每个人都希望在持久性内存中的看门狗重置后看到日志,而不是/ var / log /路径。

当然,在正常的设备生命周期中不时复制日志以刷新到闪存的解决方案并不是一个好主意,因为在/ dev / watchdog的看门狗超时到期时,应该有一些解决方案。

1 个答案:

答案 0 :(得分:0)

  

在高于4.9的Linux内核上,应该具有pretimeout调控器框架的可用性,该框架将允许您编写一个对检测到pre-timeout有反应的linux内核驱动程序。像这样的解决方案已经超出了简单问答的范围,因此我将保留原来的答案。

TL; DR:

  

如果在操作系统仍在运行时可检测到问题,则可以刷新日志。如果问题是由操作系统锁定引起的,那么您将没有机会修复此问题,因为硬件会重置此框。

这里有两件事:

  • 看门狗设备
  • 看门狗程序

看门狗设备通常是硬件计时器,在计时器到期时将执行“特别低级的操作”。最常见的低级别操作是重置盒子。如果它发生在硬件中,则不涉及操作系统。一旦计时器用完,您将没有机会做任何高级操作-例如将日志文件写入某处。

看门狗程序是一种工具,可以在满足检查条件的情况下定期确保看门狗设备的安全。

busybox看门狗定时器的条件是一个简单的循环(伪代码):

while (1) {
    # reassure watchdog
    # sleep some time
}

所以如果程序停止运行-例如通过操作系统锁定或程序终止,基础硬件将简单地发挥作用。

“更大的”看门狗二进制文件提供了一堆检查,如果检查失败,它将触发repair-binary中的/etc/watchdog.conf选项以尝试恢复。这将是刷新日志的潜在点。