Làm cách nào để giữ bộ đếm thời gian watchdog chạy trong khi khởi động lại / tắt máy


9

Trong nghiên cứu của tôi cho đến nay tôi đã nhận thấy có hai cách tiếp cận để kích hoạt đồng hồ bấm giờ trên mâm xôi: sử dụng systemd hoặc cài đặt watchdog. Tất cả đều được giải thích rõ ở đây: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=147501#

Và tôi đã quản lý để làm cho nó hoạt động theo cả hai cách, nhưng không phải trong quá trình khởi động lại / tắt máy. Tôi đã sử dụng một cái nĩa để kiểm tra nó và nó phản ứng với điều đó, tuy nhiên khi tôi thử:

sudo poweroff

Nó chỉ ở lại. Vì vậy, tôi nghĩ có cách nào để buộc watchdog tiếp tục chạy trong khi khởi động lại / tắt máy để nó đặt lại sau vài giây nếu nó không khởi động đúng cách?

Hầu hết các cách tiếp cận bắt đầu watchdog trong khi khởi động, nhưng nếu bạn cần nó chạy mọi lúc thì sao? Quả mâm xôi của tôi đã dừng khởi động lại và tôi phải rút / cắm thủ công để nó hoạt động.


CẬP NHẬT:

Một số công cụ rõ ràng hơn nhiều đối với tôi bây giờ. Có 3 điều cần xem xét:

  1. đồng hồ bấm giờ
  2. daemon giám sát
  3. daemon dịch vụ giám sát

bộ đếm thời gian theo dõi: một thanh ghi kích hoạt thiết lập lại khi nó tràn, mỗi chu kỳ RPI mà nó tăng, cần phải được xóa (đá) thường xuyên để tránh thiết lập lại

Để chạy nó khi khởi động, hãy thêm vào sau /boot/config.txt :

dtparam=watchdog=on

watchdog daemon: một quá trình chịu trách nhiệm dọn dẹp (đá) bộ đếm thời gian theo dõi thường xuyên

Cài đặt nó:

sudo modprobe bcm2835_wdt echo "bcm2835_wdt" | sudo tee -a /etc/modules sudo apt-get install watchdog sudo update-rc.d watchdog defaults

Định cấu hình /etc/watchdog.conf :

watchdog-device = /dev/watchdog watchdog-timeout = 14 realtime = yes priority = 1 max-load-1 = 24

Cấu hình / etc / default / watchdog :

watchdog_module="bcm2835_wdt"

Để định cấu hình, hãy thêm sau vào /etc/modprobe.d/watchdog.conf :

options bcm2835_wdt nowayout=1 heartbeat=10

giới thiệu: http://vk5tu.livejournal.com/35721.html

Thông số nhịp tim của mô-đun hạt nhân là khoảng cách tối đa giữa các nhịp tim mà thiết bị nhìn thấy trước khi phần cứng khởi động lại

Tham số nowayout xác định điều gì sẽ xảy ra khi thiết bị / dev / watchdog bị đóng: nhịp tim có còn được mong đợi hay không? Giá trị 1 nói rằng bộ đếm ngược để khởi động lại tiếp tục chạy và nếu thiết bị không được mở lại và nhịp tim được viết thì máy sẽ khởi động lại.

Kích hoạt nó (Nếu điều này không hoạt động, trước tiên hãy chăm sóc watchdog.service và thử lại):

sudo systemctl enable watchdog

Theo dõi nó:

sudo systemctl status watchdog

Cơ quan giám sát dịch vụ daemon: acitvates khi cơ quan giám sát daemon thất bại / dừng, thường chạy một keepalive daemon mà đá các cơ quan giám sát thường xuyên

Định cấu hình /lib/systemd/system/watchdog.service :

# OnFailure=wd_keepalive.service- Bình luận hiện này vô hiệu hóa các keepalive daemon vì vậy một khi cơ quan giám sát daemon thất bại / dừng gì sẽ ngừng cơ quan giám sát hẹn giờ từ khởi động lại RPI

[Install] WantedBy=multi-user.target - vá lỗi


Cuối cùng:

Khởi động lại RPI. Khi mâm xôi được khởi động lại, mọi thứ sẽ bắt đầu (bộ đếm thời gian watchdog và daemon watchdog). Để kiểm tra việc sử dụng này:

cat /var/log/syslog | grep watchdog

Sản lượng dự kiến:

Jun 14 12:09:08 raspberrypi systemd[1]: Starting watchdog daemon... Jun 14 12:09:08 raspberrypi watchdog[813]: starting daemon (5.14): Jun 14 12:09:08 raspberrypi watchdog[813]: int=1s realtime=yes sync=no soft=no mla=24 mem=0 Jun 14 12:09:08 raspberrypi watchdog[813]: ping: no machine to check Jun 14 12:09:08 raspberrypi watchdog[813]: file: no file to check Jun 14 12:09:08 raspberrypi watchdog[813]: pidfile: no server process to check Jun 14 12:09:08 raspberrypi watchdog[813]: interface: no interface to check Jun 14 12:09:08 raspberrypi watchdog[813]: temperature: no sensors to check Jun 14 12:09:08 raspberrypi watchdog[813]: test=none(0) repair=none(0) alive=/dev/watchdog heartbeat=none to=root no_act=no force=no Jun 14 12:09:08 raspberrypi watchdog[813]: watchdog now set to 14 seconds Jun 14 12:09:08 raspberrypi watchdog[813]: hardware watchdog identity: Broadcom BCM2835 Watchdog timer Jun 14 12:09:08 raspberrypi systemd[1]: Started watchdog daemon.

Và:

ps aux|grep watchdog

Sản lượng dự kiến:

root 813 0.0 0.2 1888 1760 ? SLs 12:09 0:00 /usr/sbin/watchdog pi 900 0.0 0.2 4752 1992 pts/0 S+ 12:10 0:00 grep --color=auto watchdog


KIỂM TRA :

Giết daemon watchdog, chạy:

ps aux|grep watchdog

Xem ID tiến trình và tiêu diệt nó:

root 812 0.0 0.2 1888 1760 ? SLs 12:16 0:00 /usr/sbin/watchdog pi 898 0.0 0.2 4752 1992 pts/0 S+ 12:16 0:00 grep --color=auto watchdog

sudo kill -9 812

Thử nghiệm xe nâng cổ điển, chạy:

: (){ :|:& };:

Để kiểm tra sẽ thiết lập lại mâm xôi nếu quá trình khởi động lại thất bại, hãy chạy:

sudo poweroff - với cái này tôi đã gặp một số vấn đề

Raspberry nên khởi động lại sau 15 giây.

Câu trả lời:


5

sudo poweroffcó nghĩa là tắt và ở lại. Cơ quan giám sát không, và không nên, chặn điều này. Hành vi bạn đang gặp phải là chính xác và bạn không nên mong đợi cơ quan giám sát khởi động lại hệ thống tắt nguồn.

Tôi không nghĩ rằng đây là những gì bạn muốn làm mặc dù. Nếu bạn muốn khởi động lại pi. bạn nên sử dụng lệnh sudo rebootthay thế. Và trong trường hợp này, nếu một cái gì đó bị treo trong quá trình tắt máy - trình tự khởi động rebootsẽ kích hoạt, thì cơ quan giám sát sẽ tiếp quản.


4

Tôi đã không lội qua tất cả những lời tán tỉnh mà bạn liên kết, nhưng tác giả dường như không hiểu cơ quan giám sát.

Có một cơ quan giám sát phần cứng BCM; Nếu bạn muốn bắt đầu cơ quan giám sát phần cứng bao gồm dtparam=watchdog=ontrong/boot/config.txt

Bản thân việc này rất ít, mặc dù nó nên khởi động lại hệ thống nếu không "đá" thường xuyên. Bạn có thể viết mã mở ra /dev/watchdogđể khởi động nó.

Ngoài ra còn có một watchdog daemoncái mà bạn có thể cấu hình để kích hoạt cơ quan giám sát; bạn sẽ có thể bắt đầu vớisudo systemctl enable watchdog

LƯU Ý lỗi được đề cập dưới đây là ở Jessie và đã được sửa trong Stretch
Thật không may, có lỗi đã biết trong tập lệnh systemd, có thể dễ dàng sửa. Xem http://unix.stackexchange.com/questions/346224/probols-with-systemd-starting-watchdog


Cảm ơn bạn đã trả lời, tôi đã thêm một bản cập nhật cho bài viết gốc của mình để cho thấy sự tiến bộ của tôi. Tuy nhiên, tôi vẫn gặp sự cố với việc WDT khởi động lại RPI khi tôi chạy sudo poweroff. Đôi khi nó hoạt động, đôi khi nó không: S
Duje

1
Thật không may, bạn dường như đã trộn lẫn rất nhiều ý tưởng khác nhau. Tôi không tự nhận là một chuyên gia về cơ quan giám sát, nhưng để xem nếu nó đang chạy systemctl status watchdog.service. Giết watchdog SILL KHÔNG gây ra khởi động lại, bởi vì watchdog.servicebắt đầu wd_keepalive.serviceđóng, như tên của nó ngụ ý khởi động lại PREVENT .
Milliways

Không, nếu bạn tắt wd_keepalive.service. Cũng giống như vậy: "Cấu hình /lib/systemd/system/watchdog.service: # OnFailure=wd_keepalive.service- Bình luận ra này sẽ vô hiệu hóa daemon keepalive vì vậy một khi cơ quan giám sát daemon thất bại / dừng gì sẽ ngừng cơ quan giám sát hẹn giờ từ khởi động lại RPI"
Duje

2

Power là một dịch vụ hệ thống / daemon in pi và được phân tích cú pháp bởi một IC trực tiếp đưa ra / đưa ra IC Broadcom. Quy trình vận hành có thể được thay đổi bằng cách tham khảo các tệp hệ thống nhưng từ những gì tôi có thể nói với bạn là bạn đang cố gắng gọi các periperhials trong các kịch bản điều chỉnh công suất tùy chỉnh trong khái niệm ngắt và bộ định thời giám sát. Bạn có thể thay đổi một phần của hành vi này bằng cách lặp lại IC điều tiết và thực hiện một số chương trình kim loại trần trước khi khởi động. Kiểm tra những điều này và đừng ngần ngại liên hệ với tôi nếu bạn có điều gì đó trong tâm trí. kiểm tra tập lệnh hướng dẫn tham khảo hội đồng ARM Corp cũng như tài liệu kiến ​​trúc. Nó trên web.

http://infocenter.arm.com/help/topic/com.arm.doc.dui0361f/DUI0361F_arm_assembler_Vference.pdf

https://www.arm.com/files/pdf/CortexM3_programming_for_ARM7_developers.pdf

Btw, nói tiếng Hi hi với giáo sư của bạn ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.