Bài 30: Watchdog Timer

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

Leave a Comment

Filed under Software

Leave a Reply