Lから始まるLinux

7章8話
Raspberry Pi独自機能
7章9話 ウォッチドッグ
もくじ
7章10話
UASP無効化
ウォッチドッグ
若木 みどり
お兄ちゃん! Raspbrerry Pi が 応答しないと思ったら ハングアップしていたんだ! こういう場合に自動で再起動して くれたりすると助かるんだけど…
若木 しげる
実はそういう機能があるんだ! 「ウォッチドッグ(watchdog)」 と呼ばれるよ Raspberry Pi には この機能があるから 設定すれば利用できるよ!
若木 みどり
「番犬」という意味だよね! とても頼りになりそう!
仕組み
若木 みどり
でも… ハングアップしているのに どうしてその状態から 再起動できるのかな?
若木 しげる
ウォッチドッグは 「ハードウェア」 実装されているんだ チップなどに内蔵されていて OS から独立しているよ!
若木 みどり
なるほど! それなら OS がハングアップしても ウォッチドッグは動き続けられるね
若木 しげる
ウォッチドッグは中で タイマーが動いているんだ タイマーが一定時間を過ぎると ハードウェアを再起動するように なっているよ
若木 みどり(驚き)
それなら一定時間が来たら いつも再起動しちゃうよ?
若木 しげる
そこで OS はウォッチドッグへ 定期的にタイマーをリセットする 信号を送っているんだ
若木 みどり
なるほど! OS がハングアップしちゃうと 信号が送られなくなって 再起動するという仕組みなんだね!
有効化
若木 しげる
まずはウォッチドッグの 機能を有効にしよう Raspberry Pi の機能を 管理している設定ファイルは /boot/firmware/config.txt だよ そこの [all] セクションに 以下の内容を記述しよう
dtparam=watchdog=on
若木 しげる
これは以下のコマンドで実行できるよ
sudo sed -i.dist \
    '/^\[all\]'/a dtparam=watchdog=on' \
    /boot/firmware/config.txt
若木 みどり
うん!実行したよ!
若木 しげる
では内容を確認してみよう!
cat /boot/firmware/config.txt
若木 みどり
お兄ちゃんのコマンドを信頼しているけど確認は大事だよね!
...
[all]
dtparam=watchdog=on
...
若木 みどり
うん!ちゃんと記述があるよ!
若木 しげる
ウォッチドッグ有効化には再起動が必要なんだまだ設定することが残っているからその設定を終えてから再起動するね
設定
若木 しげる
ウォッチドッグの設定ファイルは/etc/systemd/system.conf だよ中身を見てみよう!
cat /etc/systemd/system.conf
若木 みどり
Watchdog という言葉が入っている設定がいくつかあるね
若木 しげる
RuntimeWatchdogSec という項目が「ウォッチドッグへ信号を送信する間隔(秒)」を表しているよRaspberry Pi のウォッチドッグは15 秒で再起動するからそれよりも小さな値を設定する必要があるんだ
若木 しげる
ここでは RuntimeWatchdogSecコメントアウト # を外して値を off から 10 に変更しよう
変更前
#RuntimeWatchdogSec=off
変更後
RuntimeWatchdogSec=10
若木 しげる
この変更は以下のコマンドで実現可能だよ
sudo sed -i.dist \
    's/^#\(RuntimeWatchdogSec\)=.*/\1=10/' \
    /etc/systemd/system.conf
若木 みどり
うん!こっちも実行したよ!
若木 しげる
ちゃんとそのような設定があるか確認してみよう!
grep '^RuntimeWatchdogSec=' /etc/systemd/system.conf
若木 みどり
grep指定された設定を検索するんだね!
RuntimeWatchdogSec=10
若木 みどり
うん!ちゃんと設定があったよ!
若木 しげる
後は再起動すればウォッチドッグが動き始めるよ!
sudo systemctl reboot
まとめ
若木 みどり
今回はウォッチドッグの仕組みと設定を学んだよ!
若木 しげる
特にヘッドレス運用している場合はハングアップに気づくのが遅れがちになるよその対策になる機能なので有効に活用しよう!