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:
- pengawas waktu
- daemon anjing penjaga
- 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.
sudo poweroff
. Kadang berhasil, kadang tidak: Ssystemctl status watchdog.service
. Membunuhwatchdog
TIDAK AKAN menyebabkan reboot, karenawatchdog.service
dimulaiwd_keepalive.service
pada penutupan, yang seperti namanya MENCEGAH MENCEGAH reboot.# 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"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 ...
sumber