summaryrefslogtreecommitdiff
path: root/system/watchdog
diff options
context:
space:
mode:
Diffstat (limited to 'system/watchdog')
-rw-r--r--system/watchdog/README29
-rw-r--r--system/watchdog/doinst.sh29
-rw-r--r--system/watchdog/slack-desc10
-rw-r--r--system/watchdog/watchdog-5.3.1-slackware.diff83
-rw-r--r--system/watchdog/watchdog.SlackBuild76
-rw-r--r--system/watchdog/watchdog.info8
6 files changed, 235 insertions, 0 deletions
diff --git a/system/watchdog/README b/system/watchdog/README
new file mode 100644
index 0000000000..c5732210bc
--- /dev/null
+++ b/system/watchdog/README
@@ -0,0 +1,29 @@
+Linux watchdog timer daemon
+
+This service periodically writes to /dev/watchdog - in the event
+of it _not_ being able to do so, Linux may reset the system.
+
+For this to work a kernel driver for the aformentioned device needs
+to be loaded. The module may be found in:
+ /lib/modules/$(uname -r)/kernel/drivers/char/watchdog
+
+It can be configured to try and fix things (such as networking)
+before triggering a reboot. See the examples included in:
+ /usr/doc/watchdog-$VERSION/examples
+
+This package also contains the 'wd_keepalive' program by Marcel Jansen
+which "can be run during critical periods when the normal watcdog
+shouldn't be run. It will read from the same configuration file;
+it will do no checks but will keep writing to the device.
+
+The watchdog was written and is maintained by Michael Meskes
+(it is based on example code by Alan Cox).
+
+To enable the watchdog: make sure a kernel module gets loaded for it
+(at boot) such as the 'softdog' or an actual hardware driver...
+Then add the following to rc.local:
+
+ # Start the watchdog timer deamon
+ if [ -x /etc/rc.d/rc.watchdog ]; then
+ /etc/rc.d/rc.watchdog start
+ fi
diff --git a/system/watchdog/doinst.sh b/system/watchdog/doinst.sh
new file mode 100644
index 0000000000..3cf6ace364
--- /dev/null
+++ b/system/watchdog/doinst.sh
@@ -0,0 +1,29 @@
+config()
+{
+ NEW="$1"
+ OLD="`dirname $NEW`/`basename $NEW .new`"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+PRGNAM=watchdog
+
+# Keep same perms on the rc.$PRGNAM.new
+if [ -e etc/rc.d/rc.$PRGNAM ]; then
+ cp -a etc/rc.d/rc.$PRGNAM etc/rc.d/rc.$PRGNAM.new.incoming
+ cat etc/rc.d/rc.$PRGNAM.new > etc/rc.d/rc.$PRGNAM.new.incoming
+ mv etc/rc.d/rc.$PRGNAM.new.incoming etc/rc.d/rc.$PRGNAM.new
+else
+ # Default to executable
+ chmod 0755 etc/rc.d/rc.$PRGNAM.new
+fi
+
+config etc/rc.d/rc.$PRGNAM.new
+config etc/$PRGNAM.conf.new
+
diff --git a/system/watchdog/slack-desc b/system/watchdog/slack-desc
new file mode 100644
index 0000000000..7614694f27
--- /dev/null
+++ b/system/watchdog/slack-desc
@@ -0,0 +1,10 @@
+watchdog: Linux watchdog timer daemon
+watchdog:
+watchdog: This service periodically writes to /dev/watchdog in the event
+watchdog: of it _not_ being able to do so; Linux may reset the system.
+watchdog:
+watchdog: It can be configured to try and fix things (such as networking)
+watchdog: before going about triggering reboot.
+watchdog:
+watchdog: The watchdog was written, and is maintained by Michael Meskes
+watchdog: (based on example code by Alan Cox).
diff --git a/system/watchdog/watchdog-5.3.1-slackware.diff b/system/watchdog/watchdog-5.3.1-slackware.diff
new file mode 100644
index 0000000000..0b55f1ad15
--- /dev/null
+++ b/system/watchdog/watchdog-5.3.1-slackware.diff
@@ -0,0 +1,83 @@
+diff -urN watchdog-5.3.1.std/examples/repair.sh watchdog-5.3.1/examples/repair.sh
+--- watchdog-5.3.1.std/examples/repair.sh 2007-02-22 11:49:16.000000000 +0100
++++ watchdog-5.3.1/examples/repair.sh 2007-06-10 19:38:14.000000000 +0200
+@@ -48,6 +48,9 @@
+ elif [ -x /etc/init.d/networking ]; then
+ # Debian
+ /etc/init.d/networking stop
++ elif [ -x /etc/rc.d/rc.inet1 ]; then
++ # Slackware
++ /etc/rc.d/rc.inet1 stop
+ else
+ ifconfig |
+ awk '/Link/ {print $1}' |
+@@ -78,7 +81,10 @@
+ /etc/init.d/networking start
+ elif [ -x /etc/rc.d/init.d/network ]; then
+ # Redhat
+- /etc/rc.d/init.d/network start
++ /etc/rc.d/inet1 start
++elif [ -x /etc/rc.d/init.d/network ]; then
++ # Slackware
++ /etc/rc.d/inet1 start
+ else
+ echo "Couldn't find network script to relaunch networking. Please edit $0" | logger -i -t repair -p daemon.info
+ exit $1
+diff -urN watchdog-5.3.1.std/rc.watchdog.slackware watchdog-5.3.1/rc.watchdog.slackware
+--- watchdog-5.3.1.std/rc.watchdog.slackware 1970-01-01 01:00:00.000000000 +0100
++++ watchdog-5.3.1/rc.watchdog.slackware 2007-06-10 19:38:14.000000000 +0200
+@@ -0,0 +1,43 @@
++#!/bin/sh
++#
++# /etc/rc.d/rc.watchdog
++#
++# Start/stop/restart the watchdog timer service.
++
++watchdog_start() {
++ if [ ! -e /dev/watchdog ]; then
++ echo "$0: No /dev/watchdog device node seems to exist on this system."
++ echo "$0: Probably here a kernel module needs to be loaded, please see:"
++ echo "$0: /usr/src/linux/Documentation/watchdog/watchdog-api.txt"
++ exit 0
++ fi
++ if [ -x /usr/sbin/watchdog -a -r /etc/watchdog.conf ]; then
++ echo "Starting the watchdog timer service: /usr/sbin/watchdog"
++ /usr/sbin/watchdog
++ fi
++}
++
++watchdog_stop() {
++ killall watchdog
++}
++
++watchdog_restart() {
++ watchdog_stop
++ sleep 10 # can take a while to die
++ watchdog_start
++}
++
++case "$1" in
++'start')
++ watchdog_start
++ ;;
++'stop')
++ watchdog_stop
++ ;;
++'restart')
++ watchdog_restart
++ ;;
++*)
++ echo $"Usage: $0 {start|stop|restart}"
++esac
++
+diff -urN watchdog-5.3.1.std/watchdog.conf watchdog-5.3.1/watchdog.conf
+--- watchdog-5.3.1.std/watchdog.conf 2007-02-22 11:49:16.000000000 +0100
++++ watchdog-5.3.1/watchdog.conf 2007-06-10 19:39:57.000000000 +0200
+@@ -15,6 +15,7 @@
+ # To get the real size, check how large the pagesize is on your machine.
+ #min-memory = 1
+
++# An example (script) is provided as: examples/repair.sh
+ #repair-binary = /usr/sbin/repair
+ #test-binary =
+ #test-timeout =
diff --git a/system/watchdog/watchdog.SlackBuild b/system/watchdog/watchdog.SlackBuild
new file mode 100644
index 0000000000..6c4b326445
--- /dev/null
+++ b/system/watchdog/watchdog.SlackBuild
@@ -0,0 +1,76 @@
+#!/bin/sh
+
+# Slackware build script for watchdog
+# Written by Menno E. Duursma <druiloor@zonnet.nl>
+
+# Exit on most errors
+set -e
+
+PRGNAM=watchdog
+VERSION=5.3.1
+ARCH=${ARCH:-i486}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+fi
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar -xzvf $CWD/${PRGNAM}_${VERSION}.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+chmod -R u+w,go+r-w,a-s .
+
+# Apply the Slackware support scripts patch
+cat $CWD/$PRGNAM-$VERSION-slackware.diff | patch -p1 --verbose
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man
+
+# Compile the application and install it into the $PKG directory
+make
+make install-strip DESTDIR=$PKG
+
+# Compress man pages
+( cd $PKG/usr/man
+ find . -type f -exec gzip -9 {} \;
+ for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+)
+
+# Copy program documentation into the package
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a [A-Z][A-Z]* ChangeLog examples $PKG/usr/doc/$PRGNAM-$VERSION
+# Add the Debian doc for additional reference
+cp -a debian/README.debian $PKG/usr/doc/$PRGNAM-$VERSION
+# Also, include the SlackBuild script in the documentation directory
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+cat $CWD/README > $PKG/usr/doc/$PRGNAM-$VERSION/README$TAG
+
+# Move config to .new; let doinst.sh handle it further
+mv $PKG/etc/$PRGNAM.conf $PKG/etc/$PRGNAM.conf.new
+
+# Add init script too
+mkdir -p $PKG/etc/rc.d
+cat rc.$PRGNAM.slackware > $PKG/etc/rc.d/rc.$PRGNAM.new
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.tgz
diff --git a/system/watchdog/watchdog.info b/system/watchdog/watchdog.info
new file mode 100644
index 0000000000..d27905f543
--- /dev/null
+++ b/system/watchdog/watchdog.info
@@ -0,0 +1,8 @@
+PRGNAM="watchdog"
+VERSION="5.3.1"
+HOMEPAGE="http://sourceforge.net/projects/watchdog"
+DOWNLOAD="http://www.ibiblio.org/pub/Linux/system/daemons/watchdog/watchdog_5.3.1.tar.gz"
+MD5SUM="ba97ddce396bfccd8d409bc3141d7ef4"
+MAINTAINER="Menno E. Duursma"
+EMAIL="druiloor@zonnet.nl"
+APPROVED="rworkman"