Raspberry pi jessie OSにwatchdogをインストール
この記事はjessie lite 2016-11-25版について記載されています。新しいRaspbian Jessie Lite 2017-02-16版については”Raspberry pi に watchdogをインストールする (Raspbian Jessie Lite 2017-02-16版)“の記事を参照して下さい。
Raspberry pi jessie OSにwatchdogをインストールする方法(2016-11-25版 jessie lite版動作確認済み)最終更新日:20161204
Raspberry pi jessieにwatchdogをインストールしての簡単なフリーズ対策方法。
Asterisk13の実験しているのだが、フリーズして動いていないことがあった。
利用しているRaspberry pi 2b本体にコンソール画面などつけていないのでフリーズしているのが目で見えない状態なのでフリーズした場合に自動的に再起動してくれるというwatchdogをインストールしてみた、1つ前のOS wheezyだと普通に動作するのだが、なぜか現在のOSであるjessieだとwatchdogによる再起動が動作してくれなくてかなり嵌まってしまったが、いろいろ調べてテストを繰り返したところ、次の方法ならば動作したので公開します。
追加20161204
Raspbian Jessie Lite Version: November 2016 Release date: 2016-11-25 Kernel version: 4.4も以下の手順で動作可能(環境のせいかメモリー取得できませんでした等のエラーメッセージを吐いた後に再起動する)でした。
追加20161120
Raspbian Jessie Lite Version: September 2016 Release date: 2016-09-23 Kernel version: 4.4も以下の手順で動作可能でした。
追加201606018
手順7のwatchdog_module=”none”の部分の変更ですがそのままでよいと思われます(再起動可能、ただしまだ調査中)
追加20160604
jessie20160527のバージョンでmodprobe bcm2708_wdogを実行するとmodprobe: FATAL: Module bcm2708_wdog not found.のエラーがでるので対応をしてみた(本当にこれで正しいのかはわからないが動作テストではリブート可能)
追加20160504
起動時のlogに”watchdog[572]: cannot set timeout 60 (errno = 22 = ‘Invalid argument’)”のエラーが表示される件に対応しました(対応方法は6./etc/watchdog.confの編集説明の赤字を参照してください)。
1.お決まり
以下のコマンドを実行する
sudo apt-get update sudo apt-get upgrade
2.watchdogをインストール
[pi@raspberry:]~ $ sudo su [root@raspberry:/home/pi]# apt-get install watchdog パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下のパッケージが新たにインストールされます: watchdog アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。 78.1 kB のアーカイブを取得する必要があります。 この操作後に追加で 179 kB のディスク容量が消費されます。 取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main watchdog armhf 5.14-3 [78.1 kB] 78.1 kB を 1秒 で取得しました (46.9 kB/s) パッケージを事前設定しています ... 以前に未選択のパッケージ watchdog を選択しています。 (データベースを読み込んでいます ... 現在 30314 個のファイルとディレクトリがイン ストールされています。) .../watchdog_5.14-3_armhf.deb を展開する準備をしています ... watchdog (5.14-3) を展開しています... systemd (215-17+deb8u3) のトリガを処理しています ... man-db (2.7.0.2-5) のトリガを処理しています ... watchdog (5.14-3) を設定しています ... /run/udev or .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. /run/udev or .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults systemd (215-17+deb8u3) のトリガを処理しています ... [root@raspberry:/home/pi]#
3./lib/systemd/system/watchdog.serviceの[Install]に”WantedBy=multi-user.target”(17行目)を追加する
[root@raspberry:/home/pi]# nano /lib/systemd/system/watchdog.service [Unit] Description=watchdog daemon Conflicts=wd_keepalive.service After=multi-user.target OnFailure=wd_keepalive.service [Service] Type=forking EnvironmentFile=/etc/default/watchdog ExecStartPre=/bin/sh -c '[ -z "${watchdog_module}" ] || [ "${watchdog_module}" $ ExecStart=/bin/sh -c '[ $run_watchdog != 1 ] || exec /usr/sbin/watchdog $watchd$ ExecStopPost=/bin/sh -c '[ $run_wd_keepalive != 1 ] || false' [Install] WantedBy=multi-user.target ← この行を追加する
4.update-rc.d watchdog enableの実行
[root@raspberry:/home/pi]# update-rc.d watchdog enable
5.modprobe bcm2708_wdogの実行(2016-05-27 jessieだとエラーが起こる)
5.
modprobe bcm2835_wdtの実行 (改訂・暫定)
[root@raspberry:/home/pi]# modprobe bcm2835_wdt
6./etc/watchdog.confの編集 2箇所のコメント(#)を取る(12行目と26行目)。watchdog-timeout=10の行を追加する(28行目) (20160504追加:この行を入れないとwatchdog[572]: cannot set timeout 60 (errno = 22 = ‘Invalid argument’)のエラーが表示される)
[root@raspberry:/home/pi]# nano /etc/watchdog.conf #ping = 172.31.14.1 #ping = 172.26.1.255 #interface = eth0 #file = /var/log/messages #change = 1407 # Uncomment to enable test. Setting one of these values to '0' disables it. # These values will hopefully never reboot your machine during normal use # (if your machine is really hung, the loadavg will go much higher than 25) max-load-1 = 24 ← この行のコメント(#)を取る #max-load-5 = 18 #max-load-15 = 12 # Note that this is the number of pages! # To get the real size, check how large the pagesize is on your machine. #min-memory = 1 #allocatable-memory = 1 #repair-binary = /usr/sbin/repair #repair-timeout = #test-binary = #test-timeout = watchdog-device = /dev/watchdog ← この行のコメント(#)を取る watchdog-timeout = 10 ← 追加しないとエラーがでる(20160504追加) # Defaults compiled into the binary #temperature-device = #max-temperature = 120 # Defaults compiled into the binary #admin = root #interval = 1 #logtick = 1 #log-dir = /var/log/watchdog # This greatly decreases the chance that watchdog won't be scheduled before # your machine is really loaded realtime = yes priority = 1 # Check if rsyslogd is still running by enabling the following line #pidfile = /var/run/rsyslogd.pid
7./etc/default/watchdogの編集 watchdog_module=”None”をwatchdog_module=“bcm2708_wdog” “bcm2835_wdt“に変更 そのままにする(8行目)
[root@raspberry:/home/pi]# nano /etc/default/watchdog # Start watchdog at boot time? 0 or 1 run_watchdog=1 # Start wd_keepalive after stopping watchdog? 0 or 1 run_wd_keepalive=1 # Load module before starting watchdog watchdog_module="none" # Specify additional watchdog options here (see manpage).
8.再起動する
[root@raspberry:/home/pi]# reboot
9.再起動後ログインして以下のエラー誘発コマンドを入力しシステムが再起動することを確認する
[pi@raspberry:]~ $ :(){ :|:& };: [1] 594 [pi@raspberry:]~ $
しばらくするとコンソールが落ちて自動的に再起動するはずです。
参照したホームページ
http://raspberrypi.stackexchange.com/questions/33850/pi-b-raspbian-jessie-watchdog-doesnt-start-at-boot
http://karaage.hatenadiary.jp/entry/2015/10/28/073000
https://linux.yebisu.jp/memo/999
沢山の参照いただきありがとうございます。
本ページの記事内での紹介およびリンクはこちらの連絡無しにご自由にしていただいて構いません。