ウォッチドッグタイマーの設定方法

更新情報(2025/4/8)

最新化により最低限の設定で使えるように書き換えました。

ドライバーを含むアプリケーションが暴走していないか確認する為、ウォッチドッグタイマーでそのチェックをします。既定では無効化されてるので、有効化する方法を案内します。

今回記載の内容は、一番簡単な方法です。

他にサービスを使っての方法もあります。

ウォッチドッグタイマーの概要

ウォッチドッグタイマーの概要は

いつも、実行優先度の一番低いアイドルループが、一定間隔でウォッチドッグタイマーのカウントをリセットしています。

しかし、実行優先度の高いアプリケーションがずーーーーーっとループし続けると、実行優先度の低いアイドルループが動かず、ウォッチドッグタイマーのカウントがリセットされません。

ついにウォッチドッグタイマーがタイムアウトしてCPUがリセットされます。

CPUがリセットされることで、サーバが再起動し、正常に稼働し始めます。

ウォッチドッグ(WDT)の有効化

下記の通り設定して、再起動するだけで有効化できます。

$ sudo vi /etc/systemd/system.conf
ももぶろ
ももぶろ

viの超簡単な使い方は、ここを見てね

下記内容をファイルに追加します。既に定義されていれば、下記内容に変更してください。

RuntimeWatchdogSec=10
RebootWatchdogSec=2min

設定内容の意味は、RuntimeWatchdogSec=10は、10秒間リセットがないと再起動します。RebootWatchdogSec=2minは、再起動後2分間後にウォッチドッグを起動します。起動にはCPUを使うので、ウォッチドッグタイマーの起動を遅らせています。

ここでreboot

変更を反映する為ここで再起動します。

$ sudo reboot

再起動後、状況を下記のコマンドで確認します。

$ dmesg | grep watchdog
[    1.774211] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer
[    3.730867] systemd[1]: Using hardware watchdog 'Broadcom BCM2835 Watchdog timer', version 0, device /dev/watchdog0

再起動を確認

この操作で、Kernelがパニックになります。

$ sudo su
# echo c > /proc/sysrq-trigger
ももぶろ
ももぶろ

この後Raspberry Piが再起動すれば大丈夫です。お疲れ様です。

タイトルとURLをコピーしました