diff --git a/config/lustre-build.m4 b/config/lustre-build.m4
index 69f77e5d2c27b12c0dced68d98fe96c29c923939..164c06985aaec5f9c7309293e88d8c83a11c17b3 100644
--- a/config/lustre-build.m4
+++ b/config/lustre-build.m4
@@ -394,8 +394,6 @@ AC_DEFUN([LB_CONFIG_FILES], [
 		lustre-iokit/ior-survey/Makefile
 		lustre-iokit/stats-collect/Makefile
 	)
-	AC_CONFIG_FILES([lustre/scripts/dkms.mkconf],
-			[chmod +x lustre/scripts/dkms.mkconf])
 ])
 
 #
diff --git a/lustre-dkms.spec.in b/lustre-dkms.spec.in
index 09cfac151198ac6a1ed3c5f6497c6cc844f35d27..7b0c11592374fedcfda86b24fbf74a36df9b0730 100644
--- a/lustre-dkms.spec.in
+++ b/lustre-dkms.spec.in
@@ -9,11 +9,14 @@
 
 %if %{_vendor}=="redhat" || %{_vendor}=="fedora"
 	%global requires_kmod_name kmod-%{module}
-%else	#for Suse
+	%define mkconf_options
+%else	#for Suse / Ubuntu
 	%global requires_kmod_name %{module}-kmp
+	%define mkconf_options "-k updates"
 %endif
 
 %define buildid 1
+%define mkconf  lustre/scripts/dkms.mkconf
 
 Name:           %{module}-dkms
 
@@ -59,47 +62,7 @@ This package contains the dkms Lustre kernel modules.
 %setup -q -n @PACKAGE@-%{version}
 
 %build
-cat << EOF > dkms.conf
-# Embryonic lustre-dkms dkms.conf to allow for on-target accurate and full
-# version re-create during first run of Lustre DKMS module build step.
-PACKAGE_NAME=%{module}
-PACKAGE_VERSION=%{version}
-PACKAGE_CONFIG="/etc/sysconfig/lustre"
-PRE_BUILD="lustre-dkms_pre-build.sh \$module \$module_version \$kernelver \
-	 \$kernel_source_dir \$arch \$source_tree \$dkms_tree"
-POST_BUILD="lustre-dkms_post-build.sh \$module \$module_version \$kernelver \
-	 \$kernel_source_dir \$arch \$source_tree \$dkms_tree"
-EOF
-%if %{with servers}
-cat << EOF >> dkms.conf
-BUILD_DEPENDS[0]="zfs"
-EOF
-%endif
-cat << EOF >> dkms.conf
-AUTOINSTALL="yes"
-REMAKE_INITRD="no"
-MAKE[0]="make"
-# just have to set STRIP[0], it will become the new default.
-STRIP[0]="\$(
-  [[ -r \${PACKAGE_CONFIG} ]] \\
-  && source \${PACKAGE_CONFIG} \\
-  && shopt -q -s extglob \\
-  && [[ \${LUSTRE_DKMS_DISABLE_STRIP,,} == @(y|yes) ]] \\
-  && echo -n no
-)"
-
-# at least one module's set of BUILT_MODULE_NAME[]/BUILT_MODULE_LOCATION[]
-# elements, along with an install path made of either "extra" or "updates"
-# subdir in its DEST_MODULE_LOCATION[] element, are required to fake during
-# dkms.conf validity checks of "dkms [add,build]" steps.
-# Final/full correct BUILT_MODULE_NAME[]/BUILT_MODULE_LOCATION[]/
-# DEST_MODULE_LOCATION[] sets of values for all modules will be fixed during
-# on-target post-configure run of dkms.mkconf as part of build step.
-# it must be for a module shared by both lustre[-client]-dkms packages.
-BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="lustre"
-BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/llite/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/extra/lustre/"
-EOF
+%{mkconf} -n %{module} -v %{version} -f dkms.conf %{mkconf_options}
 
 %install
 if [ "$RPM_BUILD_ROOT" != "/" ]; then
diff --git a/lustre-dkms_post-build.sh b/lustre-dkms_post-build.sh
index bfff1a5f9860bc9b7da1969bab684e57b76a0507..6ed20c7a6d0be5c16b9ec30db462a27c9eba8859 100755
--- a/lustre-dkms_post-build.sh
+++ b/lustre-dkms_post-build.sh
@@ -21,30 +21,7 @@
 # $7/$1/$2/$3/$5/log repository should have already been created to save
 # make.log and $kernel_config
 mkdir -p "$7/$1/$2/$3/$5/log"
-mv -f "$7/$1/$2/build/config.log" "$7/$1/$2/$3/$5/log/config.log" 2>/dev/null
-
-# read last dkms.conf version that has just been customized during pre_build
-source $6/$1-$2/dkms.conf
-
-# Make sure all the modules built successfully
-for ((count=0; count < ${#BUILT_MODULE_NAME[@]}; count++)); do
-	# Lustre supported kernels are >= 2.5, so don't need to check for old .o
-	# module suffix
-	[[ -e ${BUILT_MODULE_LOCATION[$count]}${BUILT_MODULE_NAME[$count]}.ko ]] && continue
-	echo "Build of ${BUILT_MODULE_NAME[$count]}.ko failed for: $3 ($5)" \
-	     "Consult logs in $7/$1/$2/$3/$5/log/ for more information."
-done
-
-# Strip modules ?
-for ((count=0; count < ${#BUILT_MODULE_NAME[@]}; count++)); do
-	[[ ${STRIP[$count]} = '' ]] && STRIP[$count]=${STRIP[0]:-yes}
-	[[ ${STRIP[$count]} != no ]] && strip -g "$7/$1/$2/build/${BUILT_MODULE_LOCATION[$count]}${BUILT_MODULE_NAME[$count]}.ko"
-
-	# Save a copy of the new module in save area that should have been created in previous build steps
-	mkdir -p "$7/$1/$2/$3/$5/module" >/dev/null
-	# if DEST_MODULE_NAME[] is different than BUILD_MODULE_NAME[], need to use it as the module name in save area
-	# this is not presently the case for none of the Lustre kernel modules.
-	cp -f "$7/$1/$2/build/${BUILT_MODULE_LOCATION[$count]}${BUILT_MODULE_NAME[$count]}.ko" \
-	      "$7/$1/$2/$3/$5/module/${BUILT_MODULE_NAME[$count]}.ko" >/dev/null
-done
-
+cp -f "$7/$1/$2/build/config.log" "$7/$1/$2/$3/$5/log/config.log" 2>/dev/null
+cp -f "$7/$1/$2/build/config.h" \
+    "$7/$1/$2/build/Module.symvers" \
+    "$7/$1/$2/$3/$5/" 2> /dev/null
diff --git a/lustre-dkms_pre-build.sh b/lustre-dkms_pre-build.sh
index c7b5a1cdf3eaeeed9560ab739f2e4842389aab7c..f7932384a57d624e991ce4862932085daf6f61c5 100755
--- a/lustre-dkms_pre-build.sh
+++ b/lustre-dkms_pre-build.sh
@@ -72,8 +72,3 @@ if [ $? != 0 ] ; then
 	echo "configure error, check $7/$1/$2/build/config.log"
 	exit 1
 fi
-
-# now re-create dkms.conf based on configure result, to set accurate Lustre
-# modules names that will be built and their future install locations, for
-# next DKMS module install step
-lustre/scripts/dkms.mkconf -n $1 -v $2 -f $6/$1-$2/dkms.conf
diff --git a/lustre/scripts/.gitignore b/lustre/scripts/.gitignore
index 6d12f50e3629257f5347987f860f6790b7b1ca79..65eadf09aaf2c0af7bf01ff64485ddaede6b427e 100644
--- a/lustre/scripts/.gitignore
+++ b/lustre/scripts/.gitignore
@@ -1,4 +1,3 @@
-/dkms.mkconf
 /lustre.spec
 /Makefile.in
 /version_tag.pl
diff --git a/lustre/scripts/dkms.mkconf.in b/lustre/scripts/dkms.mkconf
old mode 100644
new mode 100755
similarity index 67%
rename from lustre/scripts/dkms.mkconf.in
rename to lustre/scripts/dkms.mkconf
index b7b3853fff62c88352f0fcf5fbd646a5c77e01f7..8ceeb33ec73e01ae9f1917ef0b733bf9ea83b7ba
--- a/lustre/scripts/dkms.mkconf.in
+++ b/lustre/scripts/dkms.mkconf
@@ -2,26 +2,22 @@
 
 PROG=$0
 
-while getopts "n:v:f:" opt; do
+kmoddir=extra
+
+while getopts "n:v:f:k:" opt; do
 	case $opt in
 		n) pkgname=$OPTARG ;;
 		v) pkgver=$OPTARG  ;;
 		f) filename=$OPTARG ;;
+		k) kmoddir=$OPTARG ;;
 	esac
 done
 
 if [ -z "${pkgname}" -o -z "${pkgver}" -o -z "${filename}" ]; then
-	echo "Usage: $PROG -n <pkgname> -v <pkgver> -f <filename>"
+	echo "Usage: $PROG -n <pkgname> -v <pkgver> [-k <kmoddir> ] -f <filename>"
 	exit 1
 fi
 
-rpm -qa | grep krb5-devel >/dev/null
-if [ $? == 0 ] ; then
-	GSS="yes"
-else
-	GSS="no"
-fi
-
 cat >${filename} <<EOF
 PACKAGE_NAME="${pkgname}"
 PACKAGE_VERSION="${pkgver}"
@@ -55,94 +51,93 @@ STRIP[0]="\$(
 # Common modules for both Client & Server
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="lnet_selftest"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lnet/selftest/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lnet/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lnet/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="lnet"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lnet/lnet/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lnet/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lnet/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="ksocklnd"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lnet/klnds/socklnd/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lnet/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lnet/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="ko2iblnd"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lnet/klnds/o2iblnd/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lnet/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lnet/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="libcfs"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="libcfs/libcfs/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="ptlrpc"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/ptlrpc/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="lov"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/lov/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="fld"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/fld/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="obdecho"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/obdecho/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="osc"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/osc/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="mgc"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/mgc/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="fid"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/fid/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="mdc"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/mdc/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="obdclass"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/obdclass/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="lmv"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/lmv/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="lustre"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/llite/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
-EOF
-if [ $GSS = "yes" ] ; then
-	cat >>${filename} <<EOF
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
+if \$( rpm -qa | grep -q krb5-devel ) ; then
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="ptlrpc_gss"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/ptlrpc/gss/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
-EOF
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 fi
+EOF
 if [ $pkgname = "lustre" ] ; then
 	cat >>${filename} <<EOF
+# Server Modules
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="ofd"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/ofd/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="ost"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/ost/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="lfsck"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/lfsck/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="osd_zfs"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/osd-zfs/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="mgs"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/mgs/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="lquota"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/quota/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="mdt"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/mdt/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="osp"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/osp/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="mdd"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/mdd/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="llog_test"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/obdclass/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 BUILT_MODULE_NAME[\${#BUILT_MODULE_NAME[@]}]="lod"
 BUILT_MODULE_LOCATION[\${#BUILT_MODULE_LOCATION[@]}]="lustre/lod/"
-DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/@KMP_MODDIR@/lustre/"
+DEST_MODULE_LOCATION[\${#DEST_MODULE_LOCATION[@]}]="/${kmoddir}/lustre/"
 EOF
 fi