Index: usr.sbin/freebsd-update/freebsd-update.sh =================================================================== RCS file: /home/ncvs/src/usr.sbin/freebsd-update/freebsd-update.sh,v retrieving revision 1.2.2.2.2.1 diff -u -I__FBSDID -I$FreeBSD -r1.2.2.2.2.1 freebsd-update.sh --- usr.sbin/freebsd-update/freebsd-update.sh 27 Nov 2006 21:27:33 -0000 1.2.2.2.2.1 +++ usr.sbin/freebsd-update/freebsd-update.sh 13 Mar 2007 12:56:06 -0000 @@ -499,6 +499,24 @@ exit 1 fi + # Figure out what kernel configuration is running. We start with + # the output of `uname -i`, and then make the following adjustments: + # 1. Replace "SMP-GENERIC" with "SMP". Why the SMP kernel config + # file says "ident SMP-GENERIC", I don't know... + # 2. If the kernel claims to be GENERIC _and_ ${ARCH} is "amd64" + # _and_ `sysctl kern.version` contains a line which ends "/SMP", then + # we're running an SMP kernel. This mis-identification is a bug + # which was fixed in 6.2-STABLE. + KERNCONF=`uname -i` + if [ ${KERNCONF} = "SMP-GENERIC" ]; then + KERNCONF=SMP + fi + if [ ${KERNCONF} = "GENERIC" ] && [ ${ARCH} = "amd64" ]; then + if sysctl kern.version | grep -qE '/SMP$'; then + KERNCONF=SMP + fi + fi + # Define some paths BSPATCH=/usr/bin/bspatch SHA256=/sbin/sha256 @@ -1084,8 +1102,8 @@ # /boot/kernel # (or more generally, `sysctl -n kern.bootfile` minus the trailing "/kernel"). fetch_filter_kernel_names () { - grep ^/boot/`uname -i` $1 | - sed -e "s,/boot/`uname -i`,${KERNELDIR}," | + grep ^/boot/${KERNCONF} $1 | + sed -e "s,/boot/${KERNCONF},${KERNELDIR},g" | sort - $1 > $1.tmp mv $1.tmp $1 }