=================================================================== RCS file: /cvs/openbsd/update_openbsd/update_openbsd,v retrieving revision 1.98 retrieving revision 1.99 diff -u -r1.98 -r1.99 --- openbsd/update_openbsd/update_openbsd 2017/12/11 01:35:44 1.98 +++ openbsd/update_openbsd/update_openbsd 2017/12/11 01:45:45 1.99 @@ -1,5 +1,5 @@ #!/bin/sh -# $AFresh1: update_openbsd,v 1.97 2017/12/11 00:52:41 andrew Exp $ +# $AFresh1: update_openbsd,v 1.98 2017/12/11 01:35:44 andrew Exp $ # # Copyright (c) 2012 Andrew Fresh # @@ -94,6 +94,33 @@ BOOT_DEVICE="/dev/$root_disk$msdos_partition" } +boot_device_mounted="" +mount_boot_device() { + if [ "boot_device_mounted" ]; then + echo $boot_device_mounted + return + fi + + local default_mount=$( df -lnP /bsd | sed -ne 's!/dev/.* !!p' ) + local boot_mount=$( mount | + sed -ne "s!^$BOOT_DEVICE on \([^ ]*\).*!\1!p" ) + + if [ ! "$boot_mount" ]; then + mount $BOOT_DEVICE /mnt + boot_device_mounted=/mnt + echo /mnt + elif [ "$boot_mount" != "$default_mount" ]; then + echo $boot_mount/ + else + echo ${default_mount%/}/ + fi +} + +umount_boot_device() { + [ "$boot_device_mounted" ] && umount $boot_device_mounted + boot_device_mounted="" +} + set_version() { CUR_VER=`uname -r` NEW_VER=`dc -e "$CUR_VER 0.1 + p"` @@ -371,26 +398,25 @@ install_kernels() { local _d=$1 - local default_mount=$( df -lnP /bsd | sed -ne 's!/dev/.* !!p' ) + local default_mount local boot_mount local mount_is_msdos if [ ! "$_d" ]; then - boot_mount=$( mount | - sed -ne "s!^$BOOT_DEVICE on \([^ ]*\).*!\1!p" ) + default_mount=$( df -lnP /bsd | sed -ne 's!/dev/.* !!p' ) + boot_mount=$( mount_boot_device ) - local _ik="$INSTALL_KERNELS" - INSTALL_KERNELS="${BOOT_KERNEL#/} bsd.rd" + if [ "$boot_mount" != "$default_mount" ]; then + 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/ + + INSTALL_KERNELS="$_ik" fi - INSTALL_KERNELS="$_ik" + umount_boot_device + install_kernels $default_mount return fi