File: [local] / openbsd / update_openbsd / update_openbsd (download)
Revision 1.118, Sun Dec 16 21:10:00 2018 UTC (5 years, 6 months ago) by andrew
Branch: MAIN
Changes since 1.117: +11 -8 lines
Better backup of previous kernel when new kernel has different name
After first install, bsd.mp will be installed as bsd and so we need to
back up bsd to obsd not bsd.mp (that doesn't exist yet).
|
#!/bin/sh
# $AFresh1: update_openbsd,v 1.118 2018/12/16 21:10:00 andrew Exp $
#
# Copyright (c) 2012 Andrew Fresh <andrew@afresh1.com>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#
installed_sets() {
local misc=/usr/share/doc/README
local man=/usr/share/man/man1/intro.1
local comp=/usr/bin/cc
local game=/usr/games/
local xbase=/usr/X11R6/
local xetc=/etc/X11/xinit/xinitrc
local xfont=/usr/X11R6/lib/X11/fonts
local xserv=/usr/X11R6/bin/X
local xshare=/usr/X11R6/bin/startx
local _nv=`echo $NEW_VER | sed -e 's/\.//'`
local _c _d _e
echo -n base
[ $_nv -lt 57 ] && echo -n ' etc'
for _d in misc man comp game xbase xetc xfont xserv xshare; do
[ $_d = xetc -a $_nv -ge 57 ] && continue
eval _e=\$${_d}
_c=`ls $_e 2> /dev/null | wc -l`
#echo $_c $_d $_e
if [ $_c -ne 0 ]; then
echo -n " $_d"
fi
done
sendmail -d0.1 --badoption </dev/null 2>/dev/null | grep -q SASL
if [ $? == 0 ]; then
echo -n ' sendmail-smtp_auth'
fi
}
kernel_file_version() {
echo exit | config -e $1 | grep -A1 ^OpenBSD
#what $1 | sed -ne 's/[[:blank:]]\{1,\}//p'
}
kernel_is_multiprocessor() {
printf "find cpu*\nexit\n" | config -e $1 2>/dev/null | grep -q "cpu\* at "
}
version_in() {
local _proto=${FTP%%://*}
local _file
if [ X"ftp" == X"${_proto}" ]; then
local _list=`echo "ls base*.tgz" | ${FTP_CMD} ${FTP}/`
_file=`echo ${_list} | awk '/base[0-9][0-9].tgz/ { print $9 }'`
elif [ X"http" == X"${_proto}" -o X"https" == X"${_proto}" ]; then
_file=`${FTP_CMD} -V -o - ${FTP}/index.txt |
sed -ne 's/.*\(base[0-9][0-9].tgz\).*/\1/p'`
elif [ X"scp" == X"${_proto}" ]; then
echo SCP is not yet supported >&2
return 2
else
echo Unsupported FTP ${FTP} >&2
return 2
fi
local _v=${_file##*base}
_v=${_v%.tgz*}
echo $_v
}
set_boot_device() {
BOOT_DEVICE=$( df -lnP /bsd | sed -ne 's! .*/$!!p' )
root_disk=$( echo $BOOT_DEVICE |
sed -e 's,/dev/\([a-z]*[0-9]\)[a-z].*,\1,' )
msdos_partition=$(
fdisk $root_disk | grep -q '^*.*FAT32' \
&& \
disklabel $root_disk | sed -ne 's/:.*MSDOS//p' | tr -d ' '
)
[ "$msdos_partition" ] &&
BOOT_DEVICE="/dev/$root_disk$msdos_partition"
}
boot_device_mounted=""
mount_boot_device() {
[ "$boot_device_mounted" ] && return
[ "$BOOT_DEVICE" ] || return
local boot_mount=$( mount |
sed -ne "s!^$BOOT_DEVICE on \([^ ]*\).*!\1!p" )
if [ ! "$boot_mount" ]; then
mount $BOOT_DEVICE /mnt
boot_device_mounted=1
fi
}
umount_boot_device() {
[ "$boot_device_mounted" ] && umount $BOOT_DEVICE
boot_device_mounted=""
}
find_boot_kernel() {
local _k=$( ( \
echo bsd; \
[ -e boot.conf ] && sed -E '/^ *(set +image|boot) +/!d ; \
s///; s/^.*://; s/ .*$//' boot.conf \
) | tail -1 )
_k=$( follow_symlink $_k )
local _d=$( dirname $_k )
[ "$_d" = "." ] && _d=$PWD
if [ $_d = . -o $_d = $PWD ]; then
basename $_k
else
echo $_k
fi
}
set_version() {
CUR_VER=`uname -r`
NEW_VER=`dc -e "$CUR_VER 0.1 + p"`
FILE_VER=""
FTP=""
local _cv=`echo $CUR_VER | sed -e 's/\.//'`
local _nv=`echo $NEW_VER | sed -e 's/\.//'`
local _v _d _pkr
if [ X"No" != X"$FORCE_DIR" -a -d $FORCE_DIR ]; then
_dir=$FORCE_DIR
if [ -e ${_dir}/base${_nv}.tgz ]; then
_v=$_nv
elif [ -e ${_dir}/base${_cv}.tgz ]; then
NEW_VER=$CUR_VER
_v=$_cv
fi
elif [ -d $CUR_VER ]; then
_dir=$CUR_VER
NEW_VER=$CUR_VER
if [ -e ${_dir}/base${_cv}.tgz ]; then
_v=$_cv
fi
elif [ -d $NEW_VER ]; then
_dir=$NEW_VER
if [ -e ${_dir}/base${_nv}.tgz ]; then
_v=$_nv
fi
fi
if [ X"" != X"${MIRROR}" -a X"" == X"${_v}" ]; then
if [ X"No" != X"${FORCE_DIR}" ]; then
_dir=${FORCE_DIR}
elif sysctl kern.version | grep -q -- '-current '; then
_dir=snapshots
FORCE_DIR=snapshots
else
_dir=${NEW_VER}
fi
FTP=${MIRROR}/${_dir}/`machine`
_v=`version_in`
if [ X"" == X"${_v}" ]; then
if [ X"No" != X"$FORCE_DIR" ]; then
echo No sets in forced [${FTP}] >&2
return 2
fi
NEW_VER=$CUR_VER
_dir=${NEW_VER}
FTP=${MIRROR}/${_dir}/`machine`
_v=`version_in`
fi
if [ X"" == X"${_v}" ]; then
echo No sets in [${FTP}] >&2
return 2
elif [ X"${_cv}" == X"${_v}" ]; then
NEW_VER=$CUR_VER
elif [ X"${_nv}" == X"${_v}" ]; then
NEW_VER=$NEW_VER
else
echo Invalid version [$_v] >&2
return 2
fi
if [ X"No" == X"$FORCE_DIR" ]; then
_dir=$NEW_VER
fi
fi
if [ X"" == X"${_v}" ]; then
if [ X"" == X"${MIRROR}" ]; then
echo ERROR: No sets, and no MIRROR, unable to continue. >&2
else
echo ERROR: Unable to determine FILE_VER, check your MIRROR. >&2
fi
return 1
fi
if [ X"" == X"$RELEASEDIR" ]; then
RELEASEDIR=`pwd`/$_dir
fi
FILE_VER=$_v
if [ X"" != X"${MIRROR}" ]; then
FTP=${MIRROR}/${_dir}/`machine`
fi
KERNEL_ROOT=""
[ -z "$BOOT_DEVICE" ] && set_boot_device
mount_boot_device
# _pkr == possible_kernel_roots
_pkr=/
[ "$BOOT_DEVICE" ] && _pkr="/mnt/ $_pkr"
for _d in $_pkr; do
KERNEL_ROOT=$( df -lnP ${_d}bsd 2>/dev/null | sed -ne 's!/dev/.* !!p' )
[ "$KERNEL_ROOT" ] && break
done
if ! [ "$KERNEL_ROOT" ]; then
echo "Unable to find KERNEL_ROOT, tried $_pkr" >&2
exit 2
fi
cd $KERNEL_ROOT
BOOTED_KERNEL=$( find_boot_kernel )
BOOT_KERNEL_VERSION=$( kernel_file_version $BOOTED_KERNEL )
if [ $(sysctl -n hw.ncpufound) -gt 1 ] || kernel_is_multiprocessor $BOOTED_KERNEL; then
BOOT_KERNEL=bsd.mp
else
BOOT_KERNEL=$BOOTED_KERNEL
fi
BOOTED_KERNEL_VERSION=`sysctl -n kern.version`
NEW_KERNEL_VERSION=""
# We want to default to what we had
INSTALL_KERNELS="$BOOT_KERNEL"
# if the boot kernel was our specially named bsd.sp, we install from bsd
if [ X"$INSTALL_KERNELS" == X"bsd.sp" ]; then
INSTALL_KERNELS="bsd"
fi
# We want to update all kernels that exist
# either in the $KERNEL_ROOT or in /
for b in bsd bsd.mp; do
[ -e $b -o -e /$b ] || continue
if [ X"${INSTALL_KERNELS% *}" != X"$b" ]; then
INSTALL_KERNELS="$INSTALL_KERNELS $b"
fi
done
cd $OLDPWD
EFI_BOOT=""
if [ -d "/mnt/efi/boot" ]; then
_d=$( cd "/mnt/efi/boot" && ls -1 *.{efi,EFI} 2>/dev/null )
# assume an MSDOS filesystem and so case insensitive
[ "$_d" ] && EFI_BOOT=$( echo $_d | tr a-z A-Z )
fi
umount_boot_device
BOOT_KERNELS=$INSTALL_KERNELS
INSTALL_KERNELS="$INSTALL_KERNELS bsd.rd"
}
get_sets() {
echo '==> GETTING SETS'
if [ X"" == X"$FTP" ]; then
echo ERROR: No FTP site set! >&2
return 1
fi
mkdir -p ${RELEASEDIR}
cd $RELEASEDIR
local _v=$FILE_VER
if [ "$EFI_BOOT" ]; then
_b="$EFI_BOOT"
if [ ! -e ./${_b} ]; then
echo "===> $FTP_CMD ${FTP}/${_b}"
$FTP_CMD ${FTP}/${_b}
else
echo "===> Have ${_b}"
fi
fi
for _b in $INSTALL_KERNELS; do
if [ ! -e ./${_b} ]; then
echo "===> $FTP_CMD ${FTP}/${_b}"
$FTP_CMD ${FTP}/${_b}
else
echo "===> Have ${_b}"
fi
kernel_file_version "${_b}"
done
for _s in $INSTALLED_SETS; do
[ "$_v" -ge "57" -a "$_s" != "${_s%etc}" ] && continue
local _file=${_s}${_v}.tgz
if [ ${_s} == sendmail-smtp_auth ]; then
_file=${_s}.gz
fi
if [ ! -e ./${_file} ]; then
echo "===> $FTP_CMD ${FTP}/${_file}"
$FTP_CMD ${FTP}/${_file}
fi
done
local _type
local _ftp
for _type in $CHECKSUM_TYPES; do
[ -e $_type ] && break
_ftp=`echo "$FTP" | sed -e 's,://[^/]*/,://ftp.openbsd.org/,'`
echo "===> $FTP_CMD ${_ftp}/$_type"
$FTP_CMD ${_ftp}/$_type
done
}
follow_symlink () {
local _file=$1
# This could go circular, but I dunno how to fix that.
if [ -h $_file ]; then
follow_symlink $( readlink -f $_file )
else
echo $_file
fi
}
check_sum () {
local _type=$1
echo "==> CHECKING $_type SUMS"
cd $RELEASEDIR
if [ ! -e $_type ]; then
echo $_type File does not exist!
return 1
fi
local _nv=`echo $NEW_VER | sed -e 's/\.//'`
local _signify=`which signify 2>/dev/null`
local _keyfile=/etc/signify/openbsd-${_nv}-base.pub
local _b _s
(
for _b in $INSTALL_KERNELS; do echo "($_b)" ; done
for _s in $INSTALLED_SETS; do echo "($_s$_nv.tgz)"; done
) > index
if [ -n "$_signify" -a "$_type" != "${_type%.sig}" ]; then
echo "===> Checking signature";
if [ ! -e $_keyfile ]; then
echo "key [$_keyfile] does not exist, cannot check $_type" >&2
return 2
fi
signify -V -e -p $_keyfile -x $_type -m - | grep -f index | sha256 -c -
else
grep -f index $_type | sha256 -c
fi
if [ $? -ne 0 ]; then
echo ERROR: $_type does not match! >&2
return 1
fi
}
check_sets() {
echo '==> CHECKING SETS'
cd $RELEASEDIR
local _missing_sets
local _v=$FILE_VER
mount_boot_device
for _n in $INSTALL_KERNELS; do
local _o=$_n
[ X"bsd" == X"${_o}" -a -e ${KERNEL_ROOT}bsd.sp ] && _o=bsd.sp
if [ -e ${KERNEL_ROOT}${_o} -a ! -e ./${_n} ]; then
echo ${_o} does not exist on $BOOT_DEVICE
_missing_sets=1
fi
if [ X"${BOOT_KERNEL}" == X"${_o}" -a -e ./${_n} ]; then
NEW_KERNEL_VERSION=`kernel_file_version ./${_n}`
fi
done
umount_boot_device
if [ X"$NEW_KERNEL_VERSION" == X"" ]; then
echo Missing replacement for boot kernel $BOOT_KERNEL >&2
_missing_sets=1
fi
for _s in $INSTALLED_SETS; do
[ "$_v" -ge "57" -a "$_s" != "${_s%etc}" ] && continue
local _file=${_s}${_v}.tgz
if [ ${_s} == sendmail-smtp_auth ]; then
_file=${_s}.gz
fi
if [ ! -e ./${_file} ]; then
echo ${_file} does not exist
_missing_sets=1
fi
done
if [ X"" == X"${_missing_sets}" ]; then
echo 'All OK'
fi
local _type
for _type in $CHECKSUM_TYPES; do
[ -n "$NO_SIGNIFY" -a "$_type" != "${_type%.sig}" ] && continue
if [ -e $_type ]; then
check_sum $_type && break
[ -z "$IGNORE_CHECKSUM_ERROR" ] && exit 1
fi
done
return 0
}
install_kernels() {
local _d="$1"
local boot_mount
local mount_is_msdos
if [ "$_d" ]; then
_d=$( readlink -nf "$_d" )
else
mount_boot_device
if [ "$KERNEL_ROOT" != "/" ]; then
local _ik="$INSTALL_KERNELS"
INSTALL_KERNELS="$BOOT_KERNEL bsd.rd"
install_kernels $KERNEL_ROOT
INSTALL_KERNELS="$_ik"
fi
umount_boot_device
install_kernels /
return
fi
echo "==> INSTALLING KERNEL to $_d"
if [ X"" == X"$RELEASEDIR" ]; then
echo ERROR: no source for new kernels! >&2
exit 1
fi
[ $_d != / ] && _d=${_d%/}/
[ $_d != / ] && mount | grep -q " on ${_d%/} .* msdos" && mount_is_msdos=1
if [ "$EFI_BOOT" -a -d /mnt/efi/boot ]; then
echo "Copying $EFI_BOOT to /mnt/efi/boot/"
( cd /mnt/efi/boot \
&& cp "$RELEASEDIR/$EFI_BOOT" "n$EFI_BOOT" \
&& mv "n$EFI_BOOT" "$EFI_BOOT"
)
fi
if [ X"$BOOT_KERNEL_VERSION" != X"$NEW_KERNEL_VERSION" ]; then
echo "===> Backing up ${_d}$BOOTED_KERNEL to ${_d}obsd"
if [ $mount_is_msdos ]; then
cp ${_d}$BOOTED_KERNEL ${_d}obsd
else
ln -f ${_d}$BOOTED_KERNEL ${_d}obsd
fi
if [ $? -ne 0 ]; then
echo "Error copying old kernel!" >&2
exit 1
fi
fi
cd $RELEASEDIR
for _b in $INSTALL_KERNELS; do
rm -f ${_d}nbsd
local _bd=$_b
[ X"${_b}" == X"bsd" ] && _bd="bsd.sp"
local _is_boot=""
[ X"$BOOT_KERNEL" == X"${_d}${_bd}" ] && _is_boot="# boot kernel"
echo "Copying $_b to ${_d}$_bd $_is_boot"
cp ${_b} ${_d}nbsd && mv ${_d}nbsd ${_d}${_bd}
if [ $? -ne 0 ]; then
echo ERROR: Could not copy new $_bd kernel! >&2
exit 1
fi
done
cd $OLDPWD
if [ ! -h ${_d}bsd ]; then
cd ${_d}
for _b in $BOOT_KERNELS; do
[ X"$_b" == X"bsd" ] && _b="bsd.sp"
if [ -e $_b ]; then
if [ "$mount_is_msdos" ]; then
echo "===> Moving $_b ${_d}bsd (MSDOS)"
mv -f ${_b} bsd
else
echo "===> symlinking $_b to ${_d}bsd"
ln -sf $_b bsd
fi
break
fi
done
cd $OLDPWD
fi
}
install_sets() {
echo '==> INSTALLING SETS'
if [ X"" == X"$RELEASEDIR" ]; then
echo ERROR: no source for sets! >&2
exit 1
else
cd $RELEASEDIR
fi
local _v=$FILE_VER
local _sets=`ls *${_v}.tgz | grep -v ^base `
for _f in ${_sets} base${_v}.tgz; do
_path=$DESTDIR
if [ X"etc${_v}.tgz" == X"$_f" \
-o X"xetc${_v}.tgz" == X"$_f" ]; then
[ X"" != X"$SYSMERGE" ] && continue
_path=/var/tmp/temproot
fi
echo "Extracting $_f to $_path"
mkdir -p $_path
tar -C $_path -xzphf ${RELEASEDIR}/${_f}
if [ $? -ne 0 ]; then
echo ERROR: Could not extract ${_f}! >&2
exit 1
fi
done
echo '===> Extracted all sets.'
}
install_sendmail_smtp_auth() {
if [ -e ${RELEASEDIR}/sendmail-smtp_auth.gz ]; then
gzcat ${RELEASEDIR}/sendmail-smtp_auth.gz > \
${RELEASEDIR}/sendmail-smtp_auth
fi
if [ -e ${RELEASEDIR}/sendmail-smtp_auth ]; then
if ! pkg_info -qe 'cyrus-sasl-*'; then
pkg_add -i cyrus-sasl
fi
install -o root -g smmsp -m 2555 \
${RELEASEDIR}/sendmail-smtp_auth \
/usr/libexec/sendmail/sendmail
echo '===> Installed sendmail with smtp_auth'
fi
}
update_etc() {
echo '==> UPDATING ETC'
if [ ! -e $SYSMERGE ]; then
echo "ERROR: Can't find sysmerge!" >&2
exit 1;
fi
local _v=$FILE_VER
local _args=""
if [ ! -e /var/sysmerge/etc.tgz ]; then
if [ X"" == X"$RELEASEDIR" ]; then
echo "ERROR: no source for etc!" >&2
exit 1
fi
cd $RELEASEDIR
if [ -e etc${_v}.tgz ]; then
_args="$_args -s ${RELEASEDIR}/etc${_v}.tgz"
fi
if [ -e xetc${_v}.tgz ]; then
_args="$_args -x ${RELEASEDIR}/xetc${_v}.tgz"
fi
if [ X"" == X"$_args" ]; then
echo ERROR: No upgrade sets found! >&2
exit 1
fi
fi
echo '==> RUNNING SYSMERGE'
$SYSMERGE $_args
cd $OLDPWD
}
if [ $(id -u) != 0 ]; then
echo 'ERROR: need root privileges to run this script' >&2
exit 1
fi
if [ -e /etc/update_openbsd.conf ]; then
. /etc/update_openbsd.conf
fi
if [ -e ${HOME}/.update_openbsdrc ]; then
. ${HOME}/.update_openbsdrc
fi
MIRROR=${MIRROR:=http://cdn.openbsd.org/pub/OpenBSD}
FTP_CMD=${FTP_CMD:=ftp -V}
DESTDIR=${DESTDIR:=/}
SYSMERGE=${SYSMERGE:=/usr/sbin/sysmerge}
FORCE_DIR=${FORCE_DIR:=No}
export PKG_PATH TRUSTED_PKG_PATH
set_version
TRUSTED_PKG_PATH=${TRUSTED_PKG_PATH:=/usr/ports/packages/`machine -a`/all}
if [ "$FORCE_DIR" = "No" ]; then
PKG_PATH=${PKG_PATH:=${MIRROR}/$NEW_VER/packages/`machine -a`}
else
PKG_PATH=${PKG_PATH:=${MIRROR}/$FORCE_DIR/packages/`machine -a`}
fi
INSTALLED_SETS=${INSTALLED_SETS:=`installed_sets`}
CHECKSUM_TYPES=${CHECKSUM_TYPES:=SHA256.sig SHA256}
local _error=$?
echo
echo "-= update_openbsd - helper script to update OpenBSD =-"
echo "------------------------------------------------------"
echo
echo " SYSMERGE: $SYSMERGE"
echo " MIRROR: $FTP"
echo " PKG_PATH: $PKG_PATH"
echo "TRUSTED_PKG_PATH: $TRUSTED_PKG_PATH"
echo " RELEASEDIR: $RELEASEDIR"
echo " DESTDIR: $DESTDIR"
echo " BOOT_DEVICE: $BOOT_DEVICE"
[ "$EFI_BOOT" ] && echo " EFI_BOOT: $EFI_BOOT"
echo " BOOT_KERNEL: $BOOT_KERNEL"
echo " INSTALL_KERNELS: $INSTALL_KERNELS"
echo " INSTALLED_SETS: $INSTALLED_SETS"
echo
echo " CUR_VER: $CUR_VER"
echo " NEW_VER: $NEW_VER"
#echo " FILE_VER: $FILE_VER"
echo
mount_boot_device
l=$KERNEL_ROOT
[ "$l" = / ] || l="$BOOT_DEVICE:"
for k in $INSTALL_KERNELS; do
if [ -e $KERNEL_ROOT$k ]; then
echo "Existing $l$k"
kernel_file_version $KERNEL_ROOT$k
fi
done
umount_boot_device
if [ ${_error} -ne 0 ]; then
exit ${_error}
fi
if [ X"" != X"${FTP}" ]; then
get_sets
fi
check_sets || exit
echo "===> Last booted:\n$BOOTED_KERNEL_VERSION"
if [ X"$BOOT_KERNEL_VERSION" != X"$BOOTED_KERNEL_VERSION" \
-a X"$BOOT_KERNEL_VERSION" != X"$NEW_KERNEL_VERSION" ]; then
echo "Next boot $BOOTED_KERNEL (unless replaced):\n$BOOT_KERNEL_VERSION"
fi
if [ -n "$NEW_KERNEL_VERSION" ]; then
echo "===> New $BOOT_KERNEL:\n$NEW_KERNEL_VERSION";
else
echo "\n!!! WARNING: Will not replace boot kernel $BOOT_KERNEL! !!!\n" >&2
echo "ctrl+C to cancel, enter to continue anyway" >&2
local _temp
read _temp
NEW_KERNEL_VERSION=$BOOT_KERNEL_VERSION
fi
if [ X"$NEW_KERNEL_VERSION" != X"$BOOTED_KERNEL_VERSION" ]; then
echo >&2
echo "!!! You are upgrading the OpenBSD kernel. !!!" >&2
echo "!!! You will be given the opportunity to reboot !!!" >&2
echo "!!! at the end of the proces but it is safer to !!!" >&2
echo "!!! have a separate root shell open. !!!" >&2
echo "!!! It is needed in order to run /sbin/oreboot. !!!" >&2
echo "!!! doas MAY NOT WORK after sets are extracted. !!!" >&2
echo >&2
echo "enter to continue, ctrl+C to cancel" >&2
local _temp
read _temp
if [ ! -e /sbin/oreboot ]; then
cp /sbin/reboot /sbin/oreboot
if [ $? -ne 0 ]; then
echo "Error copying old reboot command!" >&2
exit 1
fi
echo "/sbin/reboot copied to /sbin/oreboot"
fi
fi
install_kernels
install_sets
if [ X"$NEW_KERNEL_VERSION" == X"$BOOTED_KERNEL_VERSION" ]; then
install_sendmail_smtp_auth
if [ -e /sbin/oreboot ]; then
echo Removing /sbin/oreboot
rm -f /sbin/oreboot
fi
update_etc
OPENUP=$( which openup 2>/dev/null )
if [ -n "$OPENUP" ]; then
echo "==> UPDATING WITH $OPENUP"
$OPENUP
else
echo '==> UPDATING PACKAGES'
pkg_add -u
fi
echo '==> UPDATING FIRMWARE'
fw_update
else
[ -e /etc/rc.sysmerge ] && grep -q $SYSMERGE /etc/rc.sysmerge ||
echo "$SYSMERGE -b" >>/etc/rc.sysmerge &&
echo "==> RUNNING $SYSMERGE -b ON REBOOT"
echo Instructions for updating to the new version available from
if [ X"snapshots" == X"$FORCE_DIR" ]; then
echo " http://www.openbsd.org/faq/current.html"
else
echo " http://www.openbsd.org/faq/upgrade${FILE_VER}.html"
fi
fi
echo Update complete. enter to reboot, ctrl+C to cancel
read _temp
if [ -e /sbin/oreboot ]; then
echo using /sbin/oreboot
/sbin/oreboot
else
/sbin/reboot
fi