reorder_kernel.sh revision 1.2
1#!/bin/ksh 2# 3# $OpenBSD: reorder_kernel.sh,v 1.2 2017/08/25 18:27:41 rpe Exp $ 4# 5# Copyright (c) 2017 Robert Peichaer <rpe@openbsd.org> 6# 7# Permission to use, copy, modify, and distribute this software for any 8# purpose with or without fee is hereby granted, provided that the above 9# copyright notice and this permission notice appear in all copies. 10# 11# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 12# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 14# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 17# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18 19set -o errexit 20 21# Skip if /usr/share is on a nfs mounted filesystem. 22DISK_DEV=$(df /usr/share | sed '1d;s/ .*//') 23[[ $(mount | grep "^$DISK_DEV") == *" type nfs "* ]] && exit 1 24 25COMPILE_DIR=/usr/share/compile 26KERNEL=$(sysctl -n kern.osversion) 27KERNEL=${KERNEL%#*} 28LOGFILE=$COMPILE_DIR/$KERNEL/relink.log 29PROGNAME=${0##*/} 30SHA256=/var/db/kernel.SHA256 31 32# Create kernel compile dir and redirect stdout/stderr to a logfile. 33mkdir -m 700 -p $COMPILE_DIR/$KERNEL 34exec 1>$LOGFILE 35exec 2>&1 36 37# Install trap handlers to inform about success or failure via syslog. 38trap 'trap - EXIT; logger -st $PROGNAME \ 39 "kernel relinking failed; see $LOGFILE" >>/dev/console 2>&1' ERR 40trap 'logger -t $PROGNAME "kernel relinking done"' EXIT 41 42if [[ -f $COMPILE_DIR.tgz ]]; then 43 rm -rf $COMPILE_DIR/$KERNEL/* 44 # The directory containing the logfile was just deleted, redirect 45 # stdout again to a new logfile. 46 exec 1>$LOGFILE 47 tar -C $COMPILE_DIR -xzf $COMPILE_DIR.tgz $KERNEL 48 rm -f $COMPILE_DIR.tgz 49fi 50 51sha256 -C $SHA256 /bsd 52 53cd $COMPILE_DIR/$KERNEL 54make newbsd 55make newinstall 56 57echo "\nKernel has been relinked and is active on next reboot.\n" 58cat $SHA256 59