Watchdog: различия между версиями
Строка 16: | Строка 16: | ||
<!--T:2--> | <!--T:2--> | ||
Для отключения требуется [[Special:MyLanguage/Разбираем корпус контроллера|разобрать корпус контроллера]] и: | Для отключения требуется [[Special:MyLanguage/Разбираем корпус контроллера|разобрать корпус контроллера]] и: | ||
* в | * в Wiern Board 7.2 — запаять перемычку Watchdog OFF; | ||
* в Wiren Board 6.9 нет простого способа аппаратно отключить сторожевой таймер; | |||
* в Wiern Board 6.8 — соединить контакт WD с +5V; | |||
* в Wiern Board 6.7 — соединить контакт WD с GND; | * в Wiern Board 6.7 — соединить контакт WD с GND; | ||
* в | * в Wiren Board 6.3 – 6.6 и Wiren Board 5 соединить один из выводов разъема ON/OFF с GND. | ||
На иллюстрациях красными кружками показаны контакты, к которым нужно подключить контакт WB или контакт из разъёма ON/OFF. Фиолетовой стрелкой показан пример подключения. | На иллюстрациях красными кружками показаны контакты, к которым нужно подключить контакт WB или контакт из разъёма ON/OFF. Фиолетовой стрелкой показан пример подключения. | ||
<!--T:3--> | <!--T:3--> | ||
<gallery | <gallery mode="packed" heights="200px"> | ||
Image: wb7.2.1 watchdog-off.jpg | Wiren Board 7.2. Запаять перемычку Watchdog OFF | |||
Image: wb6.8 watchdog-off.png | Wiren Board 6.8. Подключить WD к +5V | Image: wb6.8 watchdog-off.png | Wiren Board 6.8. Подключить WD к +5V | ||
Image: WD-6.7.png | Wiren Board 6.7. Подключить WD к GND | Image: WD-6.7.png | Wiren Board 6.7. Подключить WD к GND |
Версия 19:57, 27 декабря 2021
Сторожевой таймер (англ. watchdog) — аппаратно реализованная схема контроля за зависанием системы.
Представляет собой отдельную микросхему-компаратор, ведущую отсчёт времени. Если таймер досчитывает до заданного времени (около 15 секунд), происходит перезагрузка по питанию (выключение одной из линий питания на 3-4 секунды). В нормальном режиме таймер периодически сбрасывается подачей переменного сигнала, подаваемого на вход таймера с одного из выводов GPIO процессора.
Этот GPIO контролируется специальным сервисом Linux watchdog
. Интерфейс сторожевого таймера /dev/watchdog1
, конфигурация сервиса хранится в файле /etc/watchdog.conf
.
Отключение сторожевого таймера
Сторожевой таймер иногда требуется отключить:
- Если вам нужно полностью выключить контроллер, не снимая с него питание (например, по событию от источника бесперебойного питания) - если сторожевой таймер будет работать, то контроллер даже после команды
halt
через некоторое время перезагрузится по питанию, и начнёт работать. При отключенном сторожевом таймере возобновление работы контроллера будет возможно только при ручном сбросе питания контроллера. - Если вы неправильно настроили одну из важных служб контроллера, и он ушёл в циклическую перезагрузку: из-за неправильной конфигурации службы не будут запускаться, а сторожевой таймер будет замечать их отсутствие и перезапускать контроллер.
Отключение сторожевого таймера аппаратным способом
Для отключения требуется разобрать корпус контроллера и:
- в Wiern Board 7.2 — запаять перемычку Watchdog OFF;
- в Wiren Board 6.9 нет простого способа аппаратно отключить сторожевой таймер;
- в Wiern Board 6.8 — соединить контакт WD с +5V;
- в Wiern Board 6.7 — соединить контакт WD с GND;
- в Wiren Board 6.3 – 6.6 и Wiren Board 5 соединить один из выводов разъема ON/OFF с GND.
На иллюстрациях красными кружками показаны контакты, к которым нужно подключить контакт WB или контакт из разъёма ON/OFF. Фиолетовой стрелкой показан пример подключения.
Отключение сторожевого таймера программным способом
Этим способом вы сможете только остановить циклическую перезагрузку из-за неправильной работы ПО. Добиться им полного выключения контроллера при наличии питания не получится.
Чтобы отключить сторожевой таймер, остановите его службу:
service watchdog stop
Но после перезагрузки контроллера служба сторожевого таймера запустится снова.
Если вы исправили ошибки в работе ПО и хотите запустить обратно сторожевой таймер без перезагрузки контроллера, выполните
service watchdog start
Если вы хотите навсегда отключить слежение сторожевого таймера за одним из сервисов, отредактируйте конфигурационный файл /etc/watchdog.conf
, закомментировав строки соответствующих сервисов (в этом примере отключено слежение за nginх):
# Test if vital daemons are running
pidfile = /var/run/syslogd.pid
pidfile = /var/run/sshd.pid
pidfile = /var/run/mosquitto.pid
#pidfile = /var/run/nginx.pid
а затем выполните
service watchdog restart