| version 1.57, 2013/12/31 18:42:31 |
version 1.98, 2017/12/11 01:35:44 |
|
|
| #!/bin/sh |
#!/bin/sh |
| # $AFresh1: update_openbsd,v 1.56 2013/12/28 02:58:37 andrew Exp $ |
# $AFresh1: update_openbsd,v 1.97 2017/12/11 00:52:41 andrew Exp $ |
| # |
# |
| # Copyright (c) 2012 Andrew Fresh <andrew@afresh1.com> |
# Copyright (c) 2012 Andrew Fresh <andrew@afresh1.com> |
| # |
# |
| # Permission to use, copy, modify, and distribute this software for any |
# Permission to use, copy, modify, and distribute this software for any |
|
|
| |
|
| installed_sets() { |
installed_sets() { |
| local misc=/usr/share/doc/README |
local misc=/usr/share/doc/README |
| local man=/usr/share/man/cat1/intro.0 |
local man=/usr/share/man/man1/intro.1 |
| local comp=/usr/bin/cc |
local comp=/usr/bin/cc |
| local game=/usr/games/ |
local game=/usr/games/ |
| local xbase=/usr/X11R6/ |
local xbase=/usr/X11R6/ |
|
|
| local xserv=/usr/X11R6/bin/X |
local xserv=/usr/X11R6/bin/X |
| local xshare=/usr/X11R6/bin/startx |
local xshare=/usr/X11R6/bin/startx |
| |
|
| |
local _nv=`echo $NEW_VER | sed -e 's/\.//'` |
| local _c _d _e |
local _c _d _e |
| echo -n base |
echo -n base |
| echo -n ' etc' |
[ $_nv -lt 57 ] && echo -n ' etc' |
| for _d in misc man comp game xbase xetc xfont xserv xshare; do |
for _d in misc man comp game xbase xetc xfont xserv xshare; do |
| |
[ $_d = xetc -a $_nv -ge 57 ] && continue |
| eval _e=\$${_d} |
eval _e=\$${_d} |
| _c=`ls $_e 2> /dev/null | wc -l` |
_c=`ls $_e 2> /dev/null | wc -l` |
| #echo $_c $_d $_e |
#echo $_c $_d $_e |
|
|
| done |
done |
| |
|
| sendmail -d0.1 --badoption </dev/null 2>/dev/null | grep -q SASL |
sendmail -d0.1 --badoption </dev/null 2>/dev/null | grep -q SASL |
| if [ $? == 0 ]; then |
if [ $? == 0 ]; then |
| echo -n ' sendmail-smtp_auth' |
echo -n ' sendmail-smtp_auth' |
| fi |
fi |
| } |
} |
|
|
| local _list=`echo "ls base*.tgz" | ${FTP_CMD} ${FTP}/` |
local _list=`echo "ls base*.tgz" | ${FTP_CMD} ${FTP}/` |
| _file=`echo ${_list} | awk '/base[0-9][0-9].tgz/ { print $9 }'` |
_file=`echo ${_list} | awk '/base[0-9][0-9].tgz/ { print $9 }'` |
| |
|
| elif [ X"http" == X"${_proto}" ]; then |
elif [ X"http" == X"${_proto}" -o X"https" == X"${_proto}" ]; then |
| local _list=`${FTP_CMD} -V -o - ${FTP}/` |
_file=`${FTP_CMD} -V -o - ${FTP}/index.txt | |
| _file=`echo ${_list} | awk '/[^x]base[0-9][0-9]*\.tgz/ { |
sed -ne 's/.*\(base[0-9][0-9].tgz\).*/\1/p'` |
| sub("^.*base","base"); |
|
| sub("\.tgz.*",".tgz"); |
|
| print $0; |
|
| }'` |
|
| |
|
| elif [ X"scp" == X"${_proto}" ]; then |
elif [ X"scp" == X"${_proto}" ]; then |
| echo SCP is not yet supported >&2 |
echo SCP is not yet supported >&2 |
| return 2 |
return 2 |
| |
|
| else |
else |
| echo Unsupported FTP ${FTP} >&2 |
echo Unsupported FTP ${FTP} >&2 |
| return 2 |
return 2 |
| |
|
|
|
| echo $_v |
echo $_v |
| } |
} |
| |
|
| |
set_boot_device() { |
| |
BOOT_DEVICE=$( df -nP /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" |
| |
} |
| |
|
| set_version() { |
set_version() { |
| CUR_VER=`uname -r` |
CUR_VER=`uname -r` |
| NEW_VER=`dc -e "$CUR_VER 0.1 + p"` |
NEW_VER=`dc -e "$CUR_VER 0.1 + p"` |
|
|
| fi |
fi |
| |
|
| if [ X"" != X"${MIRROR}" -a X"" == X"${_v}" ]; then |
if [ X"" != X"${MIRROR}" -a X"" == X"${_v}" ]; then |
| if [ X"No" == X"${FORCE_DIR}" ]; then |
if [ X"No" != X"${FORCE_DIR}" ]; then |
| _dir=${NEW_VER} |
|
| else |
|
| _dir=${FORCE_DIR} |
_dir=${FORCE_DIR} |
| |
elif sysctl kern.version | grep -q -- '-current '; then |
| |
_dir=snapshots |
| |
FORCE_DIR=snapshots |
| |
else |
| |
_dir=${NEW_VER} |
| fi |
fi |
| FTP=${MIRROR}/${_dir}/`machine` |
FTP=${MIRROR}/${_dir}/`machine` |
| |
|
|
|
| |
|
| if [ X"" == X"${_v}" ]; then |
if [ X"" == X"${_v}" ]; then |
| echo No sets in [${FTP}] >&2 |
echo No sets in [${FTP}] >&2 |
| return 2 |
return 2 |
| elif [ X"${_cv}" == X"${_v}" ]; then |
elif [ X"${_cv}" == X"${_v}" ]; then |
| NEW_VER=$CUR_VER |
NEW_VER=$CUR_VER |
| elif [ X"${_nv}" == X"${_v}" ]; then |
elif [ X"${_nv}" == X"${_v}" ]; then |
|
|
| fi |
fi |
| |
|
| if [ X"" == X"${_v}" ]; then |
if [ X"" == X"${_v}" ]; then |
| echo ERROR: Unable to determine file version! >&2 |
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 |
return 1 |
| fi |
fi |
| |
|
|
|
| if [ ! -e ./${_b} ]; then |
if [ ! -e ./${_b} ]; then |
| echo "===> $FTP_CMD ${FTP}/${_b}" |
echo "===> $FTP_CMD ${FTP}/${_b}" |
| $FTP_CMD ${FTP}/${_b} |
$FTP_CMD ${FTP}/${_b} |
| |
else |
| |
echo "===> Have ${_b}" |
| fi |
fi |
| |
kernel_file_version "${_b}" |
| done |
done |
| |
|
| for _s in $INSTALLED_SETS; do |
for _s in $INSTALLED_SETS; do |
| |
[ "$_v" -ge "57" -a "$_s" != "${_s%etc}" ] && continue |
| local _file=${_s}${_v}.tgz |
local _file=${_s}${_v}.tgz |
| if [ ${_s} == sendmail-smtp_auth ]; then |
if [ ${_s} == sendmail-smtp_auth ]; then |
| _file=${_s}.gz |
_file=${_s}.gz |
|
|
| local _file=$1 |
local _file=$1 |
| # This could go circular, but I dunno how to fix that. |
# This could go circular, but I dunno how to fix that. |
| if [ -h $_file ]; then |
if [ -h $_file ]; then |
| follow_symlink $( file $_file | |
follow_symlink $( readlink -f $_file ) |
| grep 'symbolic link' | |
|
| sed -e s/^.*\\\`// -e s/\\\'\$// ) |
|
| else |
else |
| echo $_file |
echo $_file |
| fi |
fi |
|
|
| fi |
fi |
| |
|
| local _nv=`echo $NEW_VER | sed -e 's/\.//'` |
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 k in $INSTALL_KERNELS; do echo "($k)" ; done |
for _b in $INSTALL_KERNELS; do echo "($_b)" ; done |
| for f in $INSTALLED_SETS; do echo "($f$_nv.tgz)"; done |
for _s in $INSTALLED_SETS; do echo "($_s$_nv.tgz)"; done |
| ) > index |
) > index |
| grep -f index $_type | sum -c |
|
| |
|
| |
|
| |
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 |
if [ $? -ne 0 ]; then |
| echo ERROR: $_type does not match! >&2 |
echo ERROR: $_type does not match! >&2 |
| return 1 |
return 1 |
|
|
| fi |
fi |
| |
|
| for _s in $INSTALLED_SETS; do |
for _s in $INSTALLED_SETS; do |
| |
[ "$_v" -ge "57" -a "$_s" != "${_s%etc}" ] && continue |
| local _file=${_s}${_v}.tgz |
local _file=${_s}${_v}.tgz |
| if [ ${_s} == sendmail-smtp_auth ]; then |
if [ ${_s} == sendmail-smtp_auth ]; then |
| _file=${_s}.gz |
_file=${_s}.gz |
|
|
| done |
done |
| |
|
| if [ X"" == X"${_missing_sets}" ]; then |
if [ X"" == X"${_missing_sets}" ]; then |
| echo '===> All OK' |
echo 'All OK' |
| fi |
fi |
| |
|
| local _type |
local _type |
| for _type in $CHECKSUM_TYPES; do |
for _type in $CHECKSUM_TYPES; do |
| |
[ -n "$NO_SIGNIFY" -a "$_type" != "${_type%.sig}" ] && continue |
| if [ -e $_type ]; then |
if [ -e $_type ]; then |
| check_sum $_type |
check_sum $_type && break |
| [ $? -ne 0 -a -z "$IGNORE_CHECKSUM_ERROR" ] && exit 1 |
[ -z "$IGNORE_CHECKSUM_ERROR" ] && exit 1 |
| fi |
fi |
| done |
done |
| |
|
| |
return 0 |
| } |
} |
| |
|
| |
|
| install_kernels() { |
install_kernels() { |
| echo '==> INSTALLING KERNEL' |
local _d=$1 |
| if [ X"$USER" != X"root" -a X"$SUDO" == X"" ]; then |
local default_mount=$( df -lnP /bsd | sed -ne 's!/dev/.* !!p' ) |
| echo ${0##*/} must be run as root or SUDO must be set! >&2 |
local boot_mount |
| exit 1 |
local mount_is_msdos |
| |
|
| |
if [ ! "$_d" ]; then |
| |
boot_mount=$( mount | |
| |
sed -ne "s!^$BOOT_DEVICE on \([^ ]*\).*!\1!p" ) |
| |
|
| |
local _ik="$INSTALL_KERNELS" |
| |
INSTALL_KERNELS="${BOOT_KERNEL#/} bsd.rd" |
| |
|
| |
if [ ! "$boot_mount" ]; then |
| |
mount $BOOT_DEVICE /mnt |
| |
install_kernels /mnt/ |
| |
umount $BOOT_DEVICE |
| |
elif [ "$boot_mount" != "$default_mount" ]; then |
| |
install_kernels $boot_mount/ |
| |
fi |
| |
|
| |
INSTALL_KERNELS="$_ik" |
| |
install_kernels $default_mount |
| |
return |
| fi |
fi |
| |
|
| |
echo "==> INSTALLING KERNEL to $_d" |
| |
|
| if [ X"" == X"$RELEASEDIR" ]; then |
if [ X"" == X"$RELEASEDIR" ]; then |
| echo ERROR: no source for new kernels! >&2 |
echo ERROR: no source for new kernels! >&2 |
| exit 1 |
exit 1 |
| fi |
fi |
| |
|
| |
mount | grep -q " ${_d%/} .* msdos" && mount_is_msdos=1 |
| |
|
| if [ X"$BOOT_KERNEL_VERSION" != X"$NEW_KERNEL_VERSION" ]; then |
if [ X"$BOOT_KERNEL_VERSION" != X"$NEW_KERNEL_VERSION" ]; then |
| echo "===> Backing up $BOOT_KERNEL to /obsd" |
echo "===> Backing up $BOOT_KERNEL to ${_d}obsd" |
| $SUDO ln -f $BOOT_KERNEL /obsd |
if [ $mount_is_msdos ]; then |
| |
cp $BOOT_KERNEL ${_d}obsd |
| |
else |
| |
ln -f $BOOT_KERNEL ${_d}obsd |
| |
fi |
| if [ $? -ne 0 ]; then |
if [ $? -ne 0 ]; then |
| echo "Error copying old kernel!" >&2 |
echo "Error copying old kernel!" >&2 |
| exit 1 |
exit 1 |
|
|
| cd $RELEASEDIR |
cd $RELEASEDIR |
| |
|
| for _b in $INSTALL_KERNELS; do |
for _b in $INSTALL_KERNELS; do |
| $SUDO rm -f /nbsd |
rm -f ${_d}nbsd |
| local _bd=$_b |
local _bd=$_b |
| [ X"${_b}" == X"bsd" ] && _bd="bsd.sp" |
[ X"${_b}" == X"bsd" ] && _bd="bsd.sp" |
| |
|
| local _is_boot="" |
local _is_boot="" |
| [ X"$BOOT_KERNEL" == X"/${_bd}" ] && _is_boot="# boot kernel" |
[ X"$BOOT_KERNEL" == X"${_d}${_bd}" ] && _is_boot="# boot kernel" |
| |
|
| echo "===> Copying $_b to /$_bd $_is_boot" |
echo "Copying $_b to ${_d}$_bd $_is_boot" |
| $SUDO cp ${_b} /nbsd && $SUDO mv /nbsd /${_bd} |
cp ${_b} ${_d}nbsd && mv ${_d}nbsd ${_d}${_bd} |
| if [ $? -ne 0 ]; then |
if [ $? -ne 0 ]; then |
| echo ERROR: Could not copy new $_bd kernel! >&2 |
echo ERROR: Could not copy new $_bd kernel! >&2 |
| exit 1 |
exit 1 |
|
|
| |
|
| cd $OLDPWD |
cd $OLDPWD |
| |
|
| if [ ! -h /bsd ]; then |
if [ ! -h ${_d}bsd ]; then |
| cd / |
cd ${_d} |
| for _b in $BOOT_KERNELS; do |
for _b in $BOOT_KERNELS; do |
| [ X"$_b" == X"bsd" ] && _b="bsd.sp" |
[ X"$_b" == X"bsd" ] && _b="bsd.sp" |
| if [ -e $_b ]; then |
if [ -e $_b ]; then |
| echo "===> symlinking $_b to /bsd" |
if [ "$mount_is_msdos" ]; then |
| $SUDO ln -sf $_b bsd |
echo "===> Moving $_b ${_d}bsd (MSDOS)" |
| if [ $? -ne 0 ]; then |
mv -f ${_b} bsd |
| echo ERROR: Could not symlink new kernel! >&2 |
else |
| exit 1 |
echo "===> symlinking $_b to ${_d}bsd" |
| |
ln -sf $_b bsd |
| fi |
fi |
| break |
break |
| fi |
fi |
| done |
done |
| cd $OLDPWD |
cd $OLDPWD |
| fi |
fi |
| } |
} |
| |
|
| install_sets() { |
install_sets() { |
| echo '==> INSTALLING SETS' |
echo '==> INSTALLING SETS' |
| if [ X"$USER" != X"root" -a X"$SUDO" == X"" ]; then |
|
| echo ${0##*/} must be run as root or SUDO must be set! >&2 |
|
| exit 1 |
|
| fi |
|
| |
|
| if [ X"" == X"$RELEASEDIR" ]; then |
if [ X"" == X"$RELEASEDIR" ]; then |
| echo ERROR: no source for sets! >&2 |
echo ERROR: no source for sets! >&2 |
|
|
| _path=/var/tmp/temproot |
_path=/var/tmp/temproot |
| fi |
fi |
| |
|
| echo "===> Extracting $_f to $_path" |
echo "Extracting $_f to $_path" |
| $SUDO mkdir -p $_path |
mkdir -p $_path |
| $SUDO tar -C $_path -xzphf ${RELEASEDIR}/${_f} |
tar -C $_path -xzphf ${RELEASEDIR}/${_f} |
| if [ $? -ne 0 ]; then |
if [ $? -ne 0 ]; then |
| echo ERROR: Could not extract ${_f}! >&2 |
echo ERROR: Could not extract ${_f}! >&2 |
| exit 1 |
exit 1 |
|
|
| fi |
fi |
| if [ -e ${RELEASEDIR}/sendmail-smtp_auth ]; then |
if [ -e ${RELEASEDIR}/sendmail-smtp_auth ]; then |
| if ! pkg_info -qe 'cyrus-sasl-*'; then |
if ! pkg_info -qe 'cyrus-sasl-*'; then |
| $SUDO pkg_add -i cyrus-sasl |
pkg_add -i cyrus-sasl |
| fi |
fi |
| |
|
| $SUDO install -o root -g smmsp -m 2555 \ |
install -o root -g smmsp -m 2555 \ |
| ${RELEASEDIR}/sendmail-smtp_auth \ |
${RELEASEDIR}/sendmail-smtp_auth \ |
| /usr/libexec/sendmail/sendmail |
/usr/libexec/sendmail/sendmail |
| |
|
|
|
| exit 1; |
exit 1; |
| fi |
fi |
| |
|
| if [ X"" == X"$RELEASEDIR" ]; then |
|
| echo "ERROR: no source for etc!" >&2 |
|
| exit 1 |
|
| fi |
|
| |
|
| cd $RELEASEDIR |
|
| |
|
| local _v=$FILE_VER |
local _v=$FILE_VER |
| local _args="" |
local _args="" |
| if [ -e etc${_v}.tgz ]; then |
|
| _args="$_args -s etc${_v}.tgz" |
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 |
fi |
| if [ -e xetc${_v}.tgz ]; then |
|
| _args="$_args -x xetc${_v}.tgz" |
|
| fi |
|
| if [ X"" == X"$_args" ]; then |
|
| echo ERROR: No upgrade sets found! >&2 |
|
| else |
|
| echo '==> RUNNING SYSMERGE' |
|
| $SUDO $SYSMERGE $_args |
|
| fi |
|
| |
|
| |
echo '==> RUNNING SYSMERGE' |
| |
$SYSMERGE $_args |
| |
|
| cd $OLDPWD |
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 |
if [ -e /etc/update_openbsd.conf ]; then |
| . /etc/update_openbsd.conf |
. /etc/update_openbsd.conf |
| fi |
fi |
|
|
| . ${HOME}/.update_openbsdrc |
. ${HOME}/.update_openbsdrc |
| fi |
fi |
| |
|
| #MIRROR=${MIRROR:=ftp://ftp.openbsd.org/pub/OpenBSD} |
MIRROR=${MIRROR:=http://fastly.cdn.openbsd.org/pub/OpenBSD} |
| FTP_CMD=${FTP_CMD:=ftp -V} |
FTP_CMD=${FTP_CMD:=ftp -V} |
| PKG_PATH=${PKG_PATH:=/usr/ports/packages/`machine`/all/:${MIRROR}/`uname -r`/packages/`machine`/} |
|
| |
|
| DESTDIR=${DESTDIR:=/} |
DESTDIR=${DESTDIR:=/} |
| SYSMERGE=${SYSMERGE:=/usr/sbin/sysmerge} |
SYSMERGE=${SYSMERGE:=/usr/sbin/sysmerge} |
| FORCE_DIR=${FORCE_DIR:=No} |
FORCE_DIR=${FORCE_DIR:=No} |
| |
|
| |
export PKG_PATH TRUSTED_PKG_PATH |
| |
|
| |
set_version |
| |
[ -z "$BOOT_DEVICE" ] && set_boot_device |
| |
|
| |
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`} |
INSTALLED_SETS=${INSTALLED_SETS:=`installed_sets`} |
| |
|
| CHECKSUM_TYPES=${CHECKSUM_TYPES:=SHA256 MD5} |
CHECKSUM_TYPES=${CHECKSUM_TYPES:=SHA256.sig SHA256} |
| |
|
| set_version |
|
| local _error=$? |
local _error=$? |
| |
|
| echo |
echo |
| echo "-= update_openbsd - helper script to update OpenBSD =-" |
echo "-= update_openbsd - helper script to update OpenBSD =-" |
| echo "------------------------------------------------------" |
echo "------------------------------------------------------" |
| echo |
echo |
| echo " SUDO: $SUDO" |
echo " SYSMERGE: $SYSMERGE" |
| echo " SYSMERGE: $SYSMERGE" |
echo " MIRROR: $FTP" |
| echo " MIRROR: $MIRROR" |
echo " PKG_PATH: $PKG_PATH" |
| echo " RELEASEDIR: $RELEASEDIR" |
echo "TRUSTED_PKG_PATH: $TRUSTED_PKG_PATH" |
| echo " DESTDIR: $DESTDIR" |
echo " RELEASEDIR: $RELEASEDIR" |
| echo " BOOT_KERNEL: $BOOT_KERNEL" |
echo " DESTDIR: $DESTDIR" |
| echo "INSTALL_KERNELS: $INSTALL_KERNELS" |
echo " BOOT_DEVICE: $BOOT_DEVICE" |
| echo " INSTALLED_SETS: $INSTALLED_SETS" |
echo " BOOT_KERNEL: $BOOT_KERNEL" |
| |
echo " INSTALL_KERNELS: $INSTALL_KERNELS" |
| |
echo " INSTALLED_SETS: $INSTALLED_SETS" |
| echo |
echo |
| echo " CUR_VER: $CUR_VER" |
echo " CUR_VER: $CUR_VER" |
| echo " NEW_VER: $NEW_VER" |
echo " NEW_VER: $NEW_VER" |
| #echo " FILE_VER: $FILE_VER" |
#echo " FILE_VER: $FILE_VER" |
| echo |
echo |
| |
|
| |
for k in $INSTALL_KERNELS; do |
| |
if [ -e "/$k" ]; then |
| |
echo "Existing $k" |
| |
kernel_file_version "/$k" |
| |
fi |
| |
done |
| |
|
| if [ ${_error} -ne 0 ]; then |
if [ ${_error} -ne 0 ]; then |
| exit ${_error} |
exit ${_error} |
| fi |
fi |
|
|
| NEW_KERNEL_VERSION=$BOOT_KERNEL_VERSION |
NEW_KERNEL_VERSION=$BOOT_KERNEL_VERSION |
| fi |
fi |
| |
|
| if [ -n "$SUDO" -a $CUR_VER != $NEW_VER ]; then |
if [ X"$NEW_KERNEL_VERSION" != X"$BOOTED_KERNEL_VERSION" ]; then |
| echo >&2 |
echo >&2 |
| echo "!!! You are upgrading between OpenBSD versions. !!!" >&2 |
echo "!!! You are upgrading the OpenBSD kernel. !!!" >&2 |
| echo "!!! You should make sure you have a root shell open !!!" >&2 |
echo "!!! You will be given the opportunity to reboot !!!" >&2 |
| echo "!!! It is needed in order to run /sbin/oreboot. !!!" >&2 |
echo "!!! at the end of the proces but it is safer to !!!" >&2 |
| echo "!!! sudo MAY NOT WORK after sets are extracted. !!!" >&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 >&2 |
| echo "ctrl+C to cancel, enter to continue" >&2 |
echo "enter to continue, ctrl+C to cancel" >&2 |
| local _temp |
local _temp |
| read _temp |
read _temp |
| fi |
|
| |
|
| if [ -n "$SUDO" ]; then |
if [ ! -e /sbin/oreboot ]; then |
| echo |
cp /sbin/reboot /sbin/oreboot |
| echo You may be asked for your sudo password multiple times. |
if [ $? -ne 0 ]; then |
| $SUDO -v -p "sudo Password: " |
echo "Error copying old reboot command!" >&2 |
| fi |
exit 1 |
| |
fi |
| if [ X"$NEW_KERNEL_VERSION" != X"$BOOTED_KERNEL_VERSION" \ |
echo "/sbin/reboot copied to /sbin/oreboot" |
| -a ! -e /sbin/oreboot ]; then |
|
| $SUDO cp /sbin/reboot /sbin/oreboot |
|
| if [ $? -ne 0 ]; then |
|
| echo "Error copying old reboot command!" >&2 |
|
| exit 1 |
|
| fi |
fi |
| echo "/sbin/reboot copied to /sbin/oreboot" |
|
| fi |
fi |
| |
|
| install_kernels |
install_kernels |
|
|
| |
|
| if [ -e /sbin/oreboot ]; then |
if [ -e /sbin/oreboot ]; then |
| echo Removing /sbin/oreboot |
echo Removing /sbin/oreboot |
| $SUDO rm -f /sbin/oreboot |
rm -f /sbin/oreboot |
| fi |
fi |
| update_etc |
update_etc |
| |
|
| echo '==> UPDATING PACKAGES' |
OPENUP=$( which openup 2>/dev/null ) |
| $SUDO pkg_add -ui -F update -F updatedepends |
if [ -n "$OPENUP" ]; then |
| |
echo "==> UPDATING WITH $OPENUP" |
| |
$OPENUP |
| |
else |
| |
echo '==> UPDATING PACKAGES' |
| |
pkg_add -u |
| |
fi |
| |
|
| |
echo '==> UPDATING FIRMWARE' |
| |
fw_update |
| |
|
| else |
else |
| echo Instructions for updating to the new version available from |
[ -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 |
if [ X"snapshots" == X"$FORCE_DIR" ]; then |
| echo " http://www.openbsd.org/faq/current.html" |
echo " http://www.openbsd.org/faq/current.html" |
| else |
else |
|
|
| fi |
fi |
| fi |
fi |
| |
|
| echo New kernel installed. Please reboot! |
echo Update complete. enter to reboot, ctrl+C to cancel |
| |
read _temp |
| if [ -e /sbin/oreboot ]; then |
if [ -e /sbin/oreboot ]; then |
| echo Possibly using /sbin/oreboot |
echo using /sbin/oreboot |
| |
/sbin/oreboot |
| |
else |
| |
/sbin/reboot |
| fi |
fi |