diff --git a/Makefile.am b/Makefile.am
index 08bbcb13e0ee21f0bf6c610bb137dfd45aef3f32..845ccfd6f178bdbfe854a673c22d6b00ca5937ec 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -43,6 +43,10 @@ EXTRA_DIST = \
 	globals.h \
 	LICENSE
 
+modules_install:
+	$(MAKE) -C master modules_install
+	$(MAKE) -C devices modules_install
+
 mydist:
 	@SVNREV=`svnversion $(srcdir)` && \
 	  $(MAKE) dist-bzip2 \
diff --git a/configure.ac b/configure.ac
index a8f44673f7701e9e9a10d359455bf1b3f8e13a7b..b91f4fe857dae6c5c1f9b92abd7df2f3b7b92ceb 100644
--- a/configure.ac
+++ b/configure.ac
@@ -36,7 +36,7 @@ AC_ARG_WITH([linux-dir],
         modulesdir=/lib/modules/${version}
         if test \! -d ${modulesdir} || test \! -d ${modulesdir}/build; then
            echo
-           AC_MSG_ERROR([Invalid modules directory ${modulesdir}])
+           AC_MSG_ERROR([Failed to find Linux sources. Use --with-linux-dir!])
         fi
         sourcedir=`cd ${modulesdir}/build && pwd -P`
     ]
@@ -45,12 +45,31 @@ AC_ARG_WITH([linux-dir],
 AC_MSG_CHECKING([for Linux kernel sources])
 
 if test \! -r ${sourcedir}/.config; then
-   echo
-   AC_MSG_ERROR([No configured Linux kernel sources in $sourcedir])
+    echo
+    AC_MSG_ERROR([No configured Linux kernel sources in $sourcedir])
 fi
 
+# Try to get kernel release string
+if test -r ${sourcedir}/.kernelrelease; then
+    kernelrelease=`cat $sourcedir/.kernelrelease`
+elif test -r ${sourcedir}/include/linux/version.h; then
+    hdr=$sourcedir/include/linux/version.h
+    kernelrelease=`grep UTS_RELEASE $hdr | cut -d " " -f 3- | tr -d \"`
+fi
+
+if test -z "$kernelrelease"; then
+    echo
+    AC_MSG_ERROR([Failed to extract Linux kernel version!])
+fi
+
+# Extract three numbers from kernel release string
+linuxversion=`echo $kernelrelease | grep -oE [[0-9]]+\.[[0-9]]+\.[[0-9]]+`
+
 AC_SUBST(LINUX_SOURCE_DIR,[$sourcedir])
-AC_MSG_RESULT($LINUX_SOURCE_DIR)
+AC_SUBST(LINUX_KERNEL_RELEASE,[$kernelrelease])
+AC_SUBST(LINUX_KERNEL_VERSION,[$linuxversion])
+AC_SUBST(LINUX_MOD_PATH,[/lib/modules/$kernelrelease/ethercat])
+AC_MSG_RESULT([$LINUX_SOURCE_DIR (Kernel $LINUX_KERNEL_RELEASE)])
 
 #------------------------------------------------------------------------------
 # Debug interface
diff --git a/devices/Makefile.am b/devices/Makefile.am
index ecf7c49771b00386ac703b7c1be41222e4df6e2d..23092016c0f5057364272c83e510681ad27494c5 100644
--- a/devices/Makefile.am
+++ b/devices/Makefile.am
@@ -45,9 +45,9 @@ all-local:
 clean-local:
 	$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" clean
 
-install-data-local:
-	$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" \
-		INSTALL_MOD_PATH="$(DESTDIR)" \
-		INSTALL_MOD_DIR="ethercat" modules_install
+install-data-local: modules_install
+
+modules_install:
+	cp $(srcdir)/ec_8139too.ko $(DESTDIR)$(LINUX_MOD_PATH)
 
 #------------------------------------------------------------------------------
diff --git a/examples/mini/Makefile.am b/examples/mini/Makefile.am
index 00c4a21d84c277a7eb83b63df1f97c467f4c7dcb..3a6cec88278fda86e4ea5f45a347262be51967fb 100644
--- a/examples/mini/Makefile.am
+++ b/examples/mini/Makefile.am
@@ -43,9 +43,9 @@ all:
 clean-local:
 	$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" clean
 
-install-data-local:
-	$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" \
-		INSTALL_MOD_PATH="$(DESTDIR)" \
-		INSTALL_MOD_DIR="ethercat" modules_install
+install-data-local: modules_install
+
+modules_install:
+	cp $(srcdir)/ec_mini.ko $(DESTDIR)$(LINUX_MOD_PATH)
 
 #------------------------------------------------------------------------------
diff --git a/examples/msr/Makefile.am b/examples/msr/Makefile.am
index 2e908a5d14be5cd448dd2945cab732ae15b87198..2364dede1ab1490bc56ef5f4e0d3e9d41df02999 100644
--- a/examples/msr/Makefile.am
+++ b/examples/msr/Makefile.am
@@ -44,9 +44,9 @@ all:
 clean-local:
 	$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" clean
 
-install-data-local:
-	$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" \
-		INSTALL_MOD_PATH="$(DESTDIR)" \
-		INSTALL_MOD_DIR="ethercat" modules_install
+install-data-local: modules_install
+
+modules_install:
+	cp $(srcdir)/ec_msr_sample.ko $(DESTDIR)$(LINUX_MOD_PATH)
 
 #------------------------------------------------------------------------------
diff --git a/examples/rtai/Makefile.am b/examples/rtai/Makefile.am
index 93abbea10b712119eae9dd08344af0969d4c56f4..6eb160e3b3390f0f3eb2580b41e91c4eaee08cda 100644
--- a/examples/rtai/Makefile.am
+++ b/examples/rtai/Makefile.am
@@ -43,9 +43,9 @@ all:
 clean-local:
 	$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" clean
 
-install-data-local:
-	$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" \
-		INSTALL_MOD_PATH="$(DESTDIR)" \
-		INSTALL_MOD_DIR="ethercat" modules_install
+install-data-local: modules_install
+
+modules_install:
+	cp $(srcdir)/ec_rtai_sample.ko $(DESTDIR)$(LINUX_MOD_PATH)
 
 #------------------------------------------------------------------------------
diff --git a/master/Makefile.am b/master/Makefile.am
index ade86b5593376cbe2fd6d2688e2a8e58be1c7266..b108a547898fe165813da54c140c9d48011ca5b6 100644
--- a/master/Makefile.am
+++ b/master/Makefile.am
@@ -58,9 +58,9 @@ all-local:
 clean-local:
 	$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" clean
 
-install-data-local:
-	$(MAKE) -C "$(LINUX_SOURCE_DIR)" M="@abs_srcdir@" \
-		INSTALL_MOD_PATH="$(DESTDIR)" \
-		INSTALL_MOD_DIR="ethercat" modules_install
+install-data-local: modules_install
+
+modules_install:
+	cp $(srcdir)/ec_master.ko $(DESTDIR)$(LINUX_MOD_PATH)
 
 #------------------------------------------------------------------------------