# Check if the running kernel has the same version string as the on-disk
# kernel image.
-# Copyright 2008,2009 Peter Palfrader
+# Copyright 2008,2009,2011 Peter Palfrader
# Copyright 2009 Stephen Gran
# Copyright 2010 Uli Martens
# Copyright 2011 Alexander Reichle-Schmehl
print $i,"\n"' < "$file"
}
-get_avail_linux() {
+get_avail() {
# This is wrong, but leaves room for when we have to care for machines running
# myfirstunix-image-0.1-dsa-arm
- local prefix=linux
+ local prefix="$1"; shift
local kervers=$(uname -r)
exit 1
}
+
+freebsd_check_running_version() {
+ local imagefile="$1"; shift
+
+ local r="$(uname -r)"
+ local v="$(uname -v| sed -e 's/^#[0-9]*/&:/')"
+
+ local q='@\(#\)FreeBSD '"$r $v"
+
+ if zcat "$imagefile" | strings | egrep -q "$q"; then
+ echo "OK"
+ else
+ echo "not OK"
+ fi
+}
+
searched=""
for on_disk in \
"/boot/vmlinuz-`uname -r`"\
exit $WARNING
fi
- ret="$(get_avail_linux)"
+ ret="$(get_avail linux)"
if [ $? = 1 ]; then
echo "WARNING: Kernel needs upgrade [$ret]"
exit $WARNING
fi
else
- echo "No support for FreeBSD yet"
- exit $OK
+ image_current=$(freebsd_check_running_version $on_disk)
+ running_version="`uname -s` `uname -r` `uname -v`"
+ if [ "$image_current" != "OK" ]; then
+ approx_time="$(date -d "@`stat -c '%Y' "$on_disk"`" +"%Y-%m-%d %H:%M:%S")"
+ echo "WARNING: Currently running kernel ($running_version) does not match on disk image (~ $approx_time)"
+ exit $WARNING;
+ fi
+
+ ret="$(get_avail linux)"
+ if [ $? = 1 ]; then
+ echo "WARNING: Kernel needs upgrade [$ret]"
+ exit $WARNING
+ fi
fi
echo "OK: Running kernel matches on disk image: [$running_version]"