Cara menjaga pengawas waktu berjalan selama reboot / shutdown

10

Dalam penelitian saya sejauh ini saya perhatikan ada dua pendekatan untuk mengaktifkan timer pengawas di raspberry: menggunakan systemd atau menginstal pengawas. Semuanya dijelaskan dengan baik di sini: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=147501#

Dan saya sudah berhasil membuatnya bekerja dua arah, tetapi tidak selama reboot / shutdown. Saya menggunakan forkbomb untuk mengujinya dan bereaksi terhadap itu, namun ketika saya mencoba:

sudo poweroff

Itu tetap saja turun. Jadi saya berpikir apakah ada cara untuk memaksa pengawas tetap berjalan selama reboot / shutdown sehingga me-reset setelah beberapa detik jika tidak boot dengan benar?

Sebagian besar pendekatan memulai pengawas selama boot, tetapi bagaimana jika Anda membutuhkannya berjalan sepanjang waktu? Raspberry saya pernah berhenti di reboot dan saya harus mencabut / plug secara manual untuk membuatnya berfungsi.


MEMPERBARUI:

Beberapa hal jauh lebih jelas bagi saya sekarang. Ada 3 hal yang perlu dipertimbangkan:

  1. pengawas waktu
  2. daemon anjing penjaga
  3. daemon layanan pengawas

pengawas waktu: register yang memicu reset ketika meluap, setiap siklus kenaikan RPI, perlu dibersihkan (ditendang) secara teratur untuk menghindari reset

Untuk menjalankannya saat boot, tambahkan berikut ke /boot/config.txt :

dtparam=watchdog=on

daemon pengawas: proses yang bertanggung jawab untuk membersihkan (menendang) pengawas waktu secara teratur

Pasang itu:

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

Konfigurasikan /etc/watchdog.conf :

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

Konfigurasi / etc / default / watchdog :

watchdog_module="bcm2835_wdt"

Untuk mengkonfigurasinya tambahkan berikut ke /etc/modprobe.d/watchdog.conf :

options bcm2835_wdt nowayout=1 heartbeat=10

refernce: http://vk5tu.livejournal.com/35721.html

Parameter detak jantung ke modul kernel adalah jarak maksimum antara detak jantung yang terlihat oleh perangkat sebelum perangkat keras dinyalakan kembali

Parameter nowayout menentukan apa yang terjadi ketika perangkat / dev / watchdog ditutup: apakah detak jantung masih diharapkan atau tidak? Nilai 1 mengatakan bahwa hitungan mundur ke reboot terus berjalan dan jika perangkat tidak dibuka kembali dan detak jantung ditulis maka mesin akan reboot.

Aktifkan (Jika ini tidak berhasil, pertama-tama perhatikan watchdog.service dan coba lagi):

sudo systemctl enable watchdog

Monitor itu:

sudo systemctl status watchdog

daemon service watchdog: acitvates ketika daemon watchdog gagal / berhenti, biasanya menjalankan daemon keepalive yang menendang watchdog secara teratur

Konfigurasikan /lib/systemd/system/watchdog.service :

# OnFailure=wd_keepalive.service- Mengomentari ini menonaktifkan daemon keepalive sehingga setelah daemon pengawas gagal / berhenti tidak ada yang akan menghentikan pengawas waktu dari me-reboot RPI

[Install] WantedBy=multi-user.target - perbaikan bug


Akhirnya:

Mulai ulang RPI. Setelah raspberry di-reboot, semuanya harus dimulai (pengawas waktu dan pengawas daemon). Untuk memeriksa penggunaan ini:

cat /var/log/syslog | grep watchdog

Output yang diharapkan:

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.

Dan:

ps aux|grep watchdog

Output yang diharapkan:

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


UJI :

Bunuh daemon anjing penjaga, jalankan:

ps aux|grep watchdog

Lihat ID proses dan bunuh:

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

Tes forkbomb klasik, jalankan:

: (){ :|:& };:

Untuk menguji pengaturan ulang raspberry jika proses reboot gagal, jalankan:

sudo poweroff - dengan yang ini saya punya beberapa masalah

Raspberry harus reboot setelah cca 15s.

Duje
sumber

Jawaban:

5

sudo poweroffartinya tutup dan jauhi. Watchdog tidak, dan seharusnya tidak, mencegat ini. Perilaku yang Anda alami sudah benar dan Anda seharusnya tidak berharap anjing penjaga memulai kembali sistem yang dimatikan.

Saya tidak berpikir ini yang ingin Anda lakukan. Jika Anda ingin memulai ulang pi. Anda harus menggunakan perintah sudo rebootsebagai gantinya. Dan dalam hal ini, jika sesuatu hang selama shutdown - urutan startup yang rebootmemicu, pengawas kemudian harus mengambil alih.

nickcrabtree
sumber
4

Saya tidak membaca semua kata-kata kasar yang Anda tautkan, tetapi penulisnya tampaknya tidak memahami anjing penjaga.

Ada pengawas perangkat keras BCM; Jika Anda ingin memulai pengawas perangkat keras termasuk dtparam=watchdog=ondalam/boot/config.txt

Dalam dan dari dirinya sendiri ini tidak banyak, meskipun harus restart sistem jika tidak "ditendang" secara teratur. Anda dapat menulis kode yang terbuka /dev/watchdoguntuk memulai.

Ada juga watchdog daemonyang dapat Anda konfigurasikan untuk mengaktifkan watchdog; Anda harus bisa memulainyasudo systemctl enable watchdog

CATATAN bug yang disebutkan di bawah ini ada di Jessie dan diperbaiki di Stretch
Sayangnya ada bug yang diketahui dalam skrip systemd, yang mudah diperbaiki. Lihat http://unix.stackexchange.com/questions/346224/problem-with-systemd-starting-watchdog

Milliways
sumber
Terima kasih telah menjawab, saya telah menambahkan pembaruan ke posting asli saya untuk menunjukkan kemajuan saya. Namun, saya masih kesulitan mendapatkan WDT untuk memulai kembali RPI ketika saya menjalankan sudo poweroff. Kadang berhasil, kadang tidak: S
Duje
1
Sayangnya Anda tampaknya telah mencampurkan banyak ide berbeda. Saya tidak mengklaim sebagai ahli pengawas, tetapi untuk melihat apakah itu berjalan systemctl status watchdog.service. Membunuh watchdog TIDAK AKAN menyebabkan reboot, karena watchdog.servicedimulai wd_keepalive.servicepada penutupan, yang seperti namanya MENCEGAH MENCEGAH reboot.
Milliways,
Tidak jika Anda menonaktifkan wd_keepalive.service. Seperti itu: "Konfigurasikan /lib/systemd/system/watchdog.service: # OnFailure=wd_keepalive.service- Mengomentari ini menonaktifkan daemon keepalive sehingga sekali daemon pengawas gagal / berhenti tidak ada yang akan menghentikan pengawas waktu dari mem-boot ulang RPI"
Duje
2

Power adalah layanan sistem / daemon dalam pi dan string diurai oleh IC langsung pin / fanouted ke Broadcom IC. Alur kerja operasi dapat diubah dengan merujuk ke file sistem tetapi dari apa yang dapat saya katakan Anda mencoba untuk memanggil orang-orang dalam skenario regulasi daya kustom dalam konsep interupsi dan pengatur waktu pengawas. Anda dapat mengubah sebagian dari perilaku ini dengan repinning IC pengatur dan melakukan beberapa pemrograman bare metal pra-boot. Lihat ini dan jangan ragu untuk menghubungi saya jika Anda memiliki sesuatu dalam pikiran. lihat set instruksi jalur referensi perakitan ARM Corp. serta dokumentasi arsitektur. Ada di web.

http://infocenter.arm.com/help/topic/com.arm.doc.dui0489f/DUI0489F_arm_assembler_reference.pdf

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

Btw, katakan "hai" kepada profesor Anda ...

Yigit Turgut
sumber