Watchdog: различия между версиями

вернул пока
(вернул пока)
Строка 3: Строка 3:
<!--T:1-->
<!--T:1-->
{{DISPLAYTITLE: Watchdog в контроллерах Wiren Board}}
{{DISPLAYTITLE: Watchdog в контроллерах Wiren Board}}
== Wiren Board 7.4 ==
=== Как устроен ===
В контроллере есть специальный сторожевой таймер watchdog, реализованный в embedded контроллере — он перезагружает контроллер при зависании ПО.


Если таймер досчитывает до 60 секунд embedded контроллер выключает на 1 секунду питание, что приводит к перезагрузке контроллера. Отсчёт таймера начинается после загрузки ОС Linux, это где-то 120 секунд после включения контроллера.
== Описание ==
 
В нормальном режиме таймер циклично сбрасывается через внутренний интерфейс, по которому embedded контроллер общается с основным процессором. Сброс сторожевого таймера контролируется специальным сервисом Linux '''watchdog'''.
 
=== Отключение ===
[[Image: wb7.4-watchdog.jpg|thumb|right|Кнопка и перемычка отключения сторожевого таймера]]
 
Отключайте слежение за сервисами только в крайнем случае, например, если какой-то из сервисов не работает должным образом. После устранения причин, сторожевой таймер надо включить.
 
На контроллере есть физическая кнопка, которая эмулирует сигнал на сброс сторожевого таймера, находится она на плате и подписана как '''B1'''. Используйте её, если один из отслеживаемых сервисов зависает, или если вам нужно внести изменение в конфигурацию. Также есть перемычка '''Watchdog OFF''', замкнув её каплей припоя, можно отключить сторожевой таймер навсегда.
 
Watchdog следит за сервисами, указанными в файле <code>/etc/watchdog.conf</code> в разделе <code># Test if vital daemons are running</code>.
 
Вы можете добавить в него свой сервис или отредактировать заводской список:
# Разберите корпус контроллера.
# Нажмите кнопку '''B1''' и включите контроллер. Далее можете удерживать кнопку нажатой или нажимать её примерно раз в 20-30 секунд — так вы будете сбрасывать таймер.
# Остановите сервис командой <code>systemctl stop watchdog</code>.
# Измените список отслеживаемых сервисов в файле <code>/etc/watchdog.conf</code>.
# Запустите сервис командой <code>systemctl start watchdog</code>.
 
== Wiren Board 5, Wiren Board 6 и Wiren Board 7.2…7.3 ==
В контроллере два сторожевых таймера (англ. ''watchdog'') — аппаратный и программный.
В контроллере два сторожевых таймера (англ. ''watchdog'') — аппаратный и программный.


Строка 34: Строка 11:
Программный таймер выполнен в виде сервиса watchdog.
Программный таймер выполнен в виде сервиса watchdog.


===Отключение сторожевого таймера===
==Отключение сторожевого таймера==
Сторожевой таймер иногда требуется отключить:
Сторожевой таймер иногда требуется отключить:
# Если вам нужно полностью выключить контроллер, не снимая с него питание (например, по событию от источника бесперебойного питания) — если сторожевой таймер будет работать, то контроллер даже после команды <code>halt</code> через некоторое время перезагрузится по питанию, и начнёт работать. При отключенном сторожевом таймере возобновление работы контроллера будет возможно только при ручном сбросе питания контроллера.  
# Если вам нужно полностью выключить контроллер, не снимая с него питание (например, по событию от источника бесперебойного питания) — если сторожевой таймер будет работать, то контроллер даже после команды <code>halt</code> через некоторое время перезагрузится по питанию, и начнёт работать. При отключенном сторожевом таймере возобновление работы контроллера будет возможно только при ручном сбросе питания контроллера.  
# Если вы неправильно настроили одну из важных служб контроллера, и он ушёл в циклическую перезагрузку: из-за неправильной конфигурации службы не будут запускаться, а сторожевой таймер будет замечать их отсутствие и перезапускать контроллер.
# Если вы неправильно настроили одну из важных служб контроллера, и он ушёл в циклическую перезагрузку: из-за неправильной конфигурации службы не будут запускаться, а сторожевой таймер будет замечать их отсутствие и перезапускать контроллер.


====Отключение аппаратного сторожевого таймера====
===Отключение аппаратного сторожевого таймера===


<!--T:2-->
<!--T:2-->
Строка 60: Строка 37:
</gallery>
</gallery>


====Отключение программного сторожевого таймера ====
===Отключение программного сторожевого таймера ===
''Так вы сможете только остановить циклическую перезагрузку из-за неправильной работы ПО. Добиться им полного выключения контроллера при наличии питания не получится.''
''Так вы сможете только остановить циклическую перезагрузку из-за неправильной работы ПО. Добиться им полного выключения контроллера при наличии питания не получится.''