Как скопировать логи на флэш-память перед выполнением сторожевого таймера? - PullRequest
0 голосов
/ 25 апреля 2019

Как выполнить какой-либо сценарий (в моем случае это сценарий, который копирует журналы на флэш-память или удаленно копирует журналы) перед выполнением сторожевого таймера?

Должен ли я изменить сторожевой драйвер ядра Linux? Если да, то каким способом? Или, возможно, можно как-то настроить это:

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

Однако у нас установлен busybox, где конфигурация сторожевого таймера ограничена. Я ничего не могу найти в Google, что удивляет, так как это основная проблема, которую необходимо решить - все хотят иметь журналы после сброса сторожевого таймера в постоянной памяти, прошить то, что не является / var / log / path.

Конечно, решение копировать время от времени журналы на флэш-память в обычном жизненном цикле устройства не является хорошей идеей, поскольку должно быть какое-то решение, как это сделать, когда истекает время сторожевого таймера при подаче / dev / watchdog.

1 Ответ

0 голосов
/ 25 апреля 2019

В ядре Linux, более новом, чем 4.9, у вас должна быть доступная структура регулятора pretimeout, которая позволит вам написать драйвер ядра linux, который будет реагировать на обнаружение pre-timeout. Такое решение выходит за рамки простого вопроса и ответа, поэтому я оставляю свой первоначальный ответ на вопрос.

TL; DR:

Если проблема обнаружена во время работы ОС, вы можете очистить журналы. Если проблема вызвана блокировкой ОС, у вас не будет возможности устранить проблему, поскольку аппаратное обеспечение сбросит флажок.

Здесь есть две вещи:

  • сторожевое устройство
  • сторожевая программа

Устройство сторожевого таймера, как правило, представляет собой аппаратный таймер, который выполняет «что-то особенное низкое значение», когда истекает его таймер. Наиболее распространенная вещь низкого уровня - сбросить окно. В этом нет участия ОС, если это происходит на аппаратном уровне. У вас не будет возможности сделать что-либо на высоком уровне после того, как закончится таймер - например, где-то записывать лог-файлы.

Программа сторожевого таймера - это инструмент, который периодически заверяет сторожевое устройство, пока выполняются условия его проверки.

Условие сторожевого таймера busybox представляет собой простой цикл (псевдокод):

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

так, если программа перестает работать - например, из-за блокировки ОС или завершения работы программы аппаратное обеспечение просто отключится.

«Большой» двоичный сторожевой таймер предоставляет набор проверок, и, если они не пройдут, он включит опцию repair-binary в /etc/watchdog.conf, чтобы попытаться восстановиться. Это было бы потенциальной точкой для очистки журналов.

...