From f7e6516a1f4099194f051c570a3301dae90729da Mon Sep 17 00:00:00 2001 From: Glen Barber Date: Thu, 15 Jan 2015 19:52:19 +0000 Subject: [PATCH] Evaluate running userland/kernel version in daily periodic(8) run, taken from uname(1) '-U' and '-K' flags. Reviewed by: allanjude, dvl Differential Revision: https://reviews.freebsd.org/D1541 MFC after: 1 week Sponsored by: The FreeBSD Foundation --- etc/defaults/periodic.conf | 4 +++ etc/periodic/daily/510.status-world-kernel | 36 ++++++++++++++++++++++ etc/periodic/daily/Makefile | 1 + share/man/man5/periodic.conf.5 | 7 ++++- 4 files changed, 47 insertions(+), 1 deletion(-) create mode 100755 etc/periodic/daily/510.status-world-kernel diff --git a/etc/defaults/periodic.conf b/etc/defaults/periodic.conf index bbf97d9a36b2..4324cfa37724 100644 --- a/etc/defaults/periodic.conf +++ b/etc/defaults/periodic.conf @@ -140,6 +140,10 @@ daily_status_ntpd_enable="NO" # Check NTP status daily_queuerun_enable="YES" # Run mail queue daily_submit_queuerun="YES" # Also submit queue +# 510.status-world-kernel +daily_status_world_kernel="YES" # Check the running + # userland/kernel version + # 800.scrub-zfs daily_scrub_zfs_enable="NO" daily_scrub_zfs_pools="" # empty string selects all pools diff --git a/etc/periodic/daily/510.status-world-kernel b/etc/periodic/daily/510.status-world-kernel new file mode 100755 index 000000000000..4e08a04d2a25 --- /dev/null +++ b/etc/periodic/daily/510.status-world-kernel @@ -0,0 +1,36 @@ +#!/bin/sh +# +# $FreeBSD$ +# +# Check that the running userland and kernel versions are in sync. + +# If there is a global system configuration file, suck it in. +# +if [ -r /etc/defaults/periodic.conf ] +then + . /etc/defaults/periodic.conf + source_periodic_confs +fi + +case "$daily_status_world_kernel" in + [Yy][Ee][Ss]) + rc=0 + _U=$(/usr/bin/uname -U 2>/dev/null) + _K=$(/usr/bin/uname -K 2>/dev/null) + [ -z "${_U}" -o -z "${_K}" ] && exit 0 + echo "" + echo "Checking userland and kernel versions:" + if [ "${_U}" != "${_K}" ]; then + echo "Userland and kernel are not in sync" + echo "Userland version: ${_U}" + echo "Kernel version: ${_K}" + rc=1 + else + echo "Userland and kernel are in sync." + fi + ;; + + *) rc=0;; +esac + +exit $rc diff --git a/etc/periodic/daily/Makefile b/etc/periodic/daily/Makefile index 61ede6ddacb3..15b6ae8a80e6 100644 --- a/etc/periodic/daily/Makefile +++ b/etc/periodic/daily/Makefile @@ -16,6 +16,7 @@ FILES= 100.clean-disks \ 409.status-gconcat \ 420.status-network \ 450.status-security \ + 510.status-world-kernel \ 999.local # NB: keep these sorted by MK_* knobs diff --git a/share/man/man5/periodic.conf.5 b/share/man/man5/periodic.conf.5 index d5526f9b6a52..0b0412cd51f9 100644 --- a/share/man/man5/periodic.conf.5 +++ b/share/man/man5/periodic.conf.5 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 25, 2013 +.Dd January 15, 2015 .Dt PERIODIC.CONF 5 .Os .Sh NAME @@ -498,6 +498,11 @@ for yesterday's mail rejects. Set to .Dq Li YES if you want to enable NTP status check. +.It Va daily_status_world_kernel +.Pq Vt bool +Set to +.Dq Li YES +to check the running userland and kernel are in sync. .It Va daily_queuerun_enable .Pq Vt bool Set to