From aed0f4a7fe929ac9bba35255cf5a8604fc4a567c Mon Sep 17 00:00:00 2001 From: rpe <> Date: Mon, 21 Aug 2017 21:24:11 +0000 Subject: [PATCH] Move the kernel relinking code from /etc/rc into a seperate script /usr/libexec/reorder_kernel. Requested by ajacoutot@ to be able to relink the kernel from within syspatch(8). OK deraadt@ tb@ --- src/etc/rc | 46 ++++------------------------------------------ 1 file changed, 4 insertions(+), 42 deletions(-) diff --git a/src/etc/rc b/src/etc/rc index 4489817b..8700520e 100644 --- a/src/etc/rc +++ b/src/etc/rc @@ -1,4 +1,4 @@ -# $OpenBSD: rc,v 1.514 2017/08/20 19:45:37 rpe Exp $ +# $OpenBSD: rc,v 1.515 2017/08/21 21:24:11 rpe Exp $ # System startup script run by init on autoboot or after single-user. # Output and error are redirected to console by init, and the console is the @@ -216,46 +216,6 @@ reorder_libs() { fi } -# Re-link the kernel, placing the objects in a random order. -# Replace current with relinked kernel and inform root about it. -reorder_kernel() ( - local _dkdev=$(df /usr/share | sed '1d;s/ .*//') - - # Skip if /usr/share is on a nfs mounted filesystem. - [[ $(mount | grep "^$_dkdev") == *" type nfs "* ]] && return - - _compile=/usr/share/compile - _kernel=$(sysctl -n kern.osversion) - _kernel=${_kernel%#*} - _log=$_compile/$_kernel/relink.log - _sha256=/var/db/kernel.SHA256 - - mkdir -m 700 -p $_compile/$_kernel - exec 1>$_log - exec 2>&1 - - trap 'trap - EXIT; logger -st /etc/rc \ - "kernel relinking failed; see $_log" >>/dev/console 2>&1' ERR - trap 'logger -t /etc/rc "kernel relinking done"' EXIT - set -e - - if [[ -f $_compile.tgz ]]; then - rm -rf $_compile/$_kernel/* - exec 1>$_log - tar -C $_compile -xzf $_compile.tgz $_kernel - rm -f $_compile.tgz - fi - - sha256 -C $_sha256 /bsd - - cd $_compile/$_kernel - make newbsd - make newinstall - - echo "\nKernel has been relinked and is active on next reboot.\n" - cat $_sha256 -) - # Run rc.* script and email output to root. # Usage: run_upgrade_script firsttime|sysmerge run_upgrade_script() { @@ -626,7 +586,9 @@ echo -n 'starting local daemons:' start_daemon apmd sensorsd hotplugd watchdogd cron wsmoused xenodm echo '.' -reorder_kernel & +# Re-link the kernel, placing the objects in a random order. +# Replace current with relinked kernel and inform root about it. +/usr/libexec/reorder_kernel & date exit 0