reorder_kernel.sh revision 1.4
1#!/bin/ksh 2# 3# $OpenBSD: reorder_kernel.sh,v 1.4 2017/11/05 10:29:24 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 21export PATH=/bin:/sbin:/usr/bin:/usr/sbin 22 23# Skip if /usr/share is on a nfs mounted filesystem. 24DISK_DEV=$(df /usr/share | sed '1d;s/ .*//') 25[[ $(mount | grep "^$DISK_DEV") == *" type nfs "* ]] && exit 1 26 27KERNEL=$(sysctl -n kern.osversion) 28KERNEL=${KERNEL%#*} 29KERNEL_DIR=/usr/share/relink/kernel 30LOGFILE=$KERNEL_DIR/$KERNEL/relink.log 31PROGNAME=${0##*/} 32SHA256=/var/db/kernel.SHA256 33 34# Create kernel compile dir and redirect stdout/stderr to a logfile. 35mkdir -m 700 -p $KERNEL_DIR/$KERNEL 36exec 1>$LOGFILE 37exec 2>&1 38 39# Install trap handlers to inform about success or failure via syslog. 40trap 'trap - EXIT; logger -st $PROGNAME \ 41 "kernel relinking failed; see $LOGFILE" >>/dev/console 2>&1' ERR 42trap 'logger -t $PROGNAME "kernel relinking done"' EXIT 43 44if [[ -f $KERNEL_DIR.tgz ]]; then 45 rm -rf $KERNEL_DIR/$KERNEL/* 46 # The directory containing the logfile was just deleted, redirect 47 # stdout again to a new logfile. 48 exec 1>$LOGFILE 49 tar -C $KERNEL_DIR -xzf $KERNEL_DIR.tgz $KERNEL 50 rm -f $KERNEL_DIR.tgz 51fi 52 53sha256 -C $SHA256 /bsd 54 55cd $KERNEL_DIR/$KERNEL 56make newbsd 57make newinstall 58 59echo "\nKernel has been relinked and is active on next reboot.\n" 60cat $SHA256 61