version 1.505, 2017/06/27 03:42:00 |
version 1.506, 2017/06/30 17:06:03 |
|
|
# Re-link the kernel, placing the objects in a random order. |
# Re-link the kernel, placing the objects in a random order. |
# Replace current with relinked kernel and inform root about it. |
# Replace current with relinked kernel and inform root about it. |
reorder_kernel() { |
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 |
|
|
( |
( |
set -e |
set -e |
_compile_dir=/usr/share/compile |
trap 'trap - EXIT; mail -s "$(hostname) Kernel relink failed" root \ |
|
</var/log/kernel_relink.log' ERR |
|
trap 'mail -s "$(hostname) Kernel relink info" root \ |
|
</var/log/kernel_relink.log' EXIT |
|
|
|
_compile=/usr/share/compile |
_kernel=$(sysctl -n kern.osversion) |
_kernel=$(sysctl -n kern.osversion) |
_kernel=${_kernel%#*} |
_kernel=${_kernel%#*} |
_kernel_dir=$_compile_dir/$_kernel |
|
_sha256=/var/db/kernel.SHA256 |
_sha256=/var/db/kernel.SHA256 |
|
|
if [[ -f /usr/share/compile.tgz ]]; then |
if [[ -f $_compile.tgz ]]; then |
rm -rf $_compile_dir |
rm -rf $_compile |
mkdir -m 700 -p $_compile_dir |
mkdir -m 700 -p $_compile |
tar -C $_compile_dir -xzf /usr/share/compile.tgz $_kernel |
tar -C $_compile -xzf $_compile.tgz $_kernel |
rm -f /usr/share/compile.tgz |
rm -f $_compile.tgz |
fi |
fi |
|
|
sha256 -q -C $_sha256 /bsd |
sha256 -q -C $_sha256 /bsd |
|
|
cd $_kernel_dir |
cd $_compile/$_kernel |
make newbsd >$_kernel_dir/log 2>&1 |
make newbsd |
make newinstall >>$_kernel_dir/log 2>&1 |
make newinstall |
(umask 077 && sha256 -h $_sha256 /bsd) |
|
|
|
(echo "Kernel has been relinked and is active on next reboot\n"; \ |
echo "\nKernel has been relinked and is active on next reboot.\n" |
cat $_sha256; echo "\nRelink log:\n"; cat $_kernel_dir/log ) | |
cat $_sha256 |
mail -Es "$(hostname) Kernel relink info" root >/dev/null |
) >/var/log/kernel_relink.log 2>&1 & |
|
|
) >/dev/null 2>&1 & |
|
} |
} |
|
|
# Run rc.* script and email output to root. |
# Run rc.* script and email output to root. |