Watchdog timer về căn bản là một timer đếm ngược từ giá trị khởi tạo ban đầu, khi đạt đến 0 watchdog hiểu là hệ thống bị treo và tự khởi động lai. Các ứng dụng đang chạy phải định kỳ đặt lại bộ đếm của watchdog về một giá trị khác 0.
Broadcom BCM2835 SoC trên RPI có trang bị watchdog từ phần cứng. Chúng ta sẽ sử dụng tính năng này để chắc chắn là RPI hoạt động thông suốt.
1. Nạp module watchdog
sudo modprobe bcm2708_wdog
sudo modprobe bcm2835_wdt (không phụ thuộc RPi v2 hay v3)
hoặc để RPI luôn nạp watchdog mỗi khi khởi động, thêm dòng bcm2708_wdog bcm2835_wdt vào /etc/modules
echo "bcm2708_wdog" | sudo tee -a /etc/modules
echo "bcm2835_wdt" | sudo tee -a /etc/modules
2. Cài đặt daemon watchdog
sudo apt-get install watchdog
và cho chạy mỗi khi khởi động
sudo update-rc.d watchdog defaults
3. Cấu hình daemon watchdog
Mở file /etc/watchdog.conf và sửa như sau (theo nhu cầu)
- Bỏ dấu # trước dòng #watchdog-device để watchdog daemon có thể dùng thiết bị watchdog
- Bỏ dấu # trước dòng #max-load-1 = 24 để khởi động lại RPI nếu có công việc nặng gấp 25 lần năng lực RPI
- Bỏ dấu # trước dòng ping và sửa lại ip (thí dụ của google.com) để khởi động lại RPI khi mất kết nối internet
4. Chạy watchdog daemon
sudo /etc/init.d/watchdog start
Dòng lệnh này đã tự động gọi chạy khi khởi động do ở mục 2
Chú thích
- Chạy dòng lệnh sau đây để kiểm tra watchdog có chạy hay không
systemctl status watchdog.service
Hoặc dùng lệnh pstree
- Nếu watchdog vẫn không tự chạy mỗi khi boot, chạy lệnh sau đây
ln /lib/systemd/system/watchdog.service /etc/systemd/system/multi-user.target.wants/watchdog.service