Stap 2: Het instellen van de Raspberry Pi interne WatchDog-Timer
Samenvatting: In stap 2 van dit Instructable gekeken hoe de Raspberry Pi interne watchdog-timer instelt. We ook praten over de problemen met de Raspberry Pi interne WatchDog en uitleggen waarom een externe WatchDog-Timer, zoals de SwitchDoc Labs dubbele WatchDog-Timer is een betere keuze in vele, maar niet alle systemen.
De Raspberry Pi interne WatchDog-Timer instellen
Eerste van alle een definitie. WTO wordt gedefinieerd als de maximale hoeveelheid tijd die de WatchDog-timer tellen kunt vooraleer op nood voor opnieuw worden ingesteld (met andere woorden, wanneer het opnieuw van de computer opstarten zal als de computer gaat weg. Het BCM2835 systeem op een Chip die de bevoegdheden van de Raspberry Pi heeft een WDT aan boord. Het heeft 20 bits en elke 16us voor een Wto 16 seconden aftelt. Dit betekent dat u moet schrijven naar de interne WTD eerder dan iedere 16 seconden, of de WDT zal brand.
Voer de volgende opdracht om de interne WatchDog kernelmodule te laden:
$ sudo modprobe bcm2708_wdog
Voor Raspbian, voor het laden van de module de volgende keer dat het systeem wordt opgestart, een regel toevoegen aan uw/etc/modules bestand met 'bcm2708_wdog'. $ echo "bcm2708_wdog" | sudo tee - een/etc/modules
Nu uitvoeren "lsmod" en zoek de regel in hieronder:
bcm2708_wdog 3537 0
Hiermee wordt gecontroleerd dat de WatchDog-module is geladen. Nu/etc/modules wijzigen en toevoegen van bcm2708_wdog
laadt de module tijdens het opstarten door de volgende opdracht uit te voeren:
sudo echo bcm2708_wdog >> / etc/modules
Vervolgens gebruiken we de watchdog(8) daemon om te aaien de hond:
sudo apt-get install watchdog chkconfig
sudo chkconfig waakhond op
sudo /etc/init.d/watchdog start
De watchdog(8) daemon vereist sommige eenvoudige configuratie op de Raspberry Pi. /Etc/watchdog.conf bevatten alleen wijzigen:
Watchdog-apparaat = /dev/watchdog
watchdog-timeout = 14
realtime = yes
prioriteit = 1
Het interval te aaien de hond elke vier seconden instellen: interval = 4
Tot slot:
sudo /etc/init.d/watchdog restart
Oef! Dit stelt de interne Raspberry Pi WatchDog.
Testen van de interne Raspberry Pi-WatchDog
Om te testen de interne WatchDog, troep op opwaarts zoals hierboven. Vervolgens bewerken van een bestand met de naam forkbomb.sh en zetten de volgende opdrachten in het bestand:
#! / bin/bash
swapoff - een :(){: |: &};:
Het forkbomb.sh-dossier uitvoeren:
sudo sh - x forkbomb.sh
Uw Raspberry Pi zal uiteindelijk herstarten. Een vork bom werkt als volgt: de functie tweemaal aangeroepen en de achtergrond van de pijpleiding is gestart; elke opeenvolgende nieuwe oproep op de processen spawnt zelfs meer oproepen naar ":" (de functie). Dit leidt snel tot een explosieve gebruik van systeembronnen, reactie tot stilstand vertraagt en het doden van het vermogen van de Raspberry Pi te aaien de watchdog-timer. Als u niet de swap schijf uitschakelt vervolgens heeft de vork-bom te vullen dat ook, waardoor de bom veel, veel trager.
Problemen met de interne Raspberry Pi-WatchDog
Er zijn echter een aantal problemen met de interne WatchDog. De interne WatchDog doet niet macht cyclus het systeem. Het herstart de Raspberry Pi. Dit betekent dat het niet opnieuw onder alle omstandigheden starten. Vooral in low-power / brownout voorwaarden vaak ervaren met zonne-aangedreven systemen (zie onze Solar Power Instructable hier).
Als de Raspberry Pi opstarten dan 14 seconden (of welke waarde u ingesteld Wto) langer duurt, kan de WatchDog vuur die de Raspberry Pi in een oneindige schoen volgorde zet. Dit kan gebeuren. Ik heb het gedaan.
Als u stoppen de Raspberry Pi (sudo shutdown -h nu), zal nooit de Raspberry Pi herstarten. Als uw programma dit per ongeluk doet, bent u klaar.
Ik heb de interne WatchDog onbetrouwbaar. Ik nooit zou kunnen sporen het, maar het voelt als een soort van conflict tussen gebruiker en kernel ruimte. Er zijn een aantal situaties waar de Pi zullen niet reageren, maar de hartslag kan nog steeds optreden. Hoge belasting situaties bijvoorbeeld.
De interne WatchDog niet niet volledig afhankelijk is van de Raspberry Pi. In theorie zou dit er niet toe, maar de Raspberry Pi draaien van Linux is een complex systeem.
Dit zijn enkele van de kwesties die kunnen worden opgelost met een externe waakhond. Het betekent echter niet dat de interne WatchDog is nutteloos, alleen beperkt.