=================================================================== RCS file: /cvs/openbsd/update_openbsd/update_openbsd,v retrieving revision 1.97 retrieving revision 1.99 diff -u -r1.97 -r1.99 --- openbsd/update_openbsd/update_openbsd 2017/12/11 00:52:41 1.97 +++ openbsd/update_openbsd/update_openbsd 2017/12/11 01:45:45 1.99 @@ -1,5 +1,5 @@ #!/bin/sh -# $AFresh1: update_openbsd,v 1.96 2017/12/10 21:20:53 andrew Exp $ +# $AFresh1: update_openbsd,v 1.98 2017/12/11 01:35:44 andrew Exp $ # # Copyright (c) 2012 Andrew Fresh # @@ -79,10 +79,10 @@ echo $_v } -set_boot_partition() { - BOOT_PARTITION=$( df -nP /bsd | sed -ne 's! .*/$!!p' ) +set_boot_device() { + BOOT_DEVICE=$( df -nP /bsd | sed -ne 's! .*/$!!p' ) - root_disk=$( echo $BOOT_PARTITION | + root_disk=$( echo $BOOT_DEVICE | sed -e 's,/dev/\([a-z]*[0-9]\)[a-z].*,\1,' ) msdos_partition=$( fdisk $root_disk | grep -q '^*.*FAT32' \ @@ -91,9 +91,36 @@ ) [ "$msdos_partition" ] && - BOOT_PARTITION="/dev/$root_disk$msdos_partition" + 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_PARTITION 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_PARTITION /mnt - install_kernels /mnt/ - umount $BOOT_PARTITION - 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 @@ -567,7 +593,7 @@ export PKG_PATH TRUSTED_PKG_PATH set_version -[ -z "$BOOT_PARTITION" ] && set_boot_partition +[ -z "$BOOT_DEVICE" ] && set_boot_device TRUSTED_PKG_PATH=${TRUSTED_PKG_PATH:=/usr/ports/packages/`machine -a`/all} if [ "$FORCE_DIR" = "No" ]; then @@ -592,7 +618,7 @@ echo "TRUSTED_PKG_PATH: $TRUSTED_PKG_PATH" echo " RELEASEDIR: $RELEASEDIR" echo " DESTDIR: $DESTDIR" -echo " BOOT_PARTITION: $BOOT_PARTITION" +echo " BOOT_DEVICE: $BOOT_DEVICE" echo " BOOT_KERNEL: $BOOT_KERNEL" echo " INSTALL_KERNELS: $INSTALL_KERNELS" echo " INSTALLED_SETS: $INSTALLED_SETS"