diff --git a/.gitignore b/.gitignore
index a9ed6f9eb39679115bc7f5eb3fd89644732ddb87..f87bc41702f02e531e27852a9e5c04011f2e5e54 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,4 +9,6 @@ docs/mpi-start.out
 docs/mpi-start.pdf
 docs/mpi-start.tex
 docs/mpi-start.toc
-
+build
+src/mpi-start
+tests/test.o
diff --git a/Makefile.in b/Makefile.in
index c83c10b1ea25b058df2acc8fb3265bb944e0dd80..76326f94c772703d5cfc0d757315264a3a95a041 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -48,6 +48,7 @@ tarball: all
 	mkdir -p build/etc
 	$(MAKE) -C src install DESTDIR=`pwd`/build prefix="" 
 	$(MAKE) -C modules install DESTDIR=`pwd`/build prefix="" 
+	$(MAKE) -C config install DESTDIR=`pwd`/build prefix="" 
 	tar czf build/mpi-start-$(VERSION).tar.gz -C build bin etc
 
 DISTFILES=src\
diff --git a/config/Makefile.in b/config/Makefile.in
index 34bf89c2475d8933f3eed124dd3aeeb5fea17fe0..1c9b6a8879dea311e82b3f011caed33ea69b0300 100644
--- a/config/Makefile.in
+++ b/config/Makefile.in
@@ -1,13 +1,21 @@
-all: mpi-config.local
-
-mpi-config.local:
-	cp mpi-config.local.template mpi-config.local	
+all:
 
 clean:
 
 install:
 	install -d $(DESTDIR)/$(moduledir)
-	install -m 0644 mpi-config.local  $(DESTDIR)/$(moduledir)/
+	install -m 0644 mpi-config.local.template  $(DESTDIR)/$(moduledir)/
+	install -m 0644 mpi-config.debian $(DESTDIR)/$(moduledir)/
+	install -m 0644 mpi-config.el5-i386 $(DESTDIR)/$(moduledir)/
+	install -m 0644 mpi-config.el6-i386 $(DESTDIR)/$(moduledir)/
+	install -m 0644 mpi-config.el5-x86_64 $(DESTDIR)/$(moduledir)/
+	install -m 0644 mpi-config.el6-x86_64 $(DESTDIR)/$(moduledir)/
 
 uninstall:
-	rm -f $(DESTDIR)/$(moduledir)/mpi-config.local
+	rm -f $(DESTDIR)/$(moduledir)/mpi-config.local.template
+	rm -f $(DESTDIR)/$(moduledir)/mpi-config.debian
+	rm -f $(DESTDIR)/$(moduledir)/mpi-config.el5-i386
+	rm -f $(DESTDIR)/$(moduledir)/mpi-config.el6-i386
+	rm -f $(DESTDIR)/$(moduledir)/mpi-config.el5-x86_64
+	rm -f $(DESTDIR)/$(moduledir)/mpi-config.el6-x86_64
+
diff --git a/config/mpi-config.local.debian b/config/mpi-config.debian
similarity index 100%
rename from config/mpi-config.local.debian
rename to config/mpi-config.debian
diff --git a/config/mpi-config.local.el5-i386 b/config/mpi-config.el5-i386
similarity index 100%
rename from config/mpi-config.local.el5-i386
rename to config/mpi-config.el5-i386
diff --git a/config/mpi-config.local.el5-x86_64 b/config/mpi-config.el5-x86_64
similarity index 100%
rename from config/mpi-config.local.el5-x86_64
rename to config/mpi-config.el5-x86_64
diff --git a/config/mpi-config.local.el6-i386 b/config/mpi-config.el6-i386
similarity index 100%
rename from config/mpi-config.local.el6-i386
rename to config/mpi-config.el6-i386
diff --git a/config/mpi-config.local.el6-x86_64 b/config/mpi-config.el6-x86_64
similarity index 100%
rename from config/mpi-config.local.el6-x86_64
rename to config/mpi-config.el6-x86_64
diff --git a/configure b/configure
index 4973bd26163746f876b04ef4878596bf78d8b910..51e9699a598212719c4a14afd19768c3881b5bab 100755
--- a/configure
+++ b/configure
@@ -143,7 +143,7 @@ modules/schedulers/pbs/Makefile
 modules/schedulers/sge/Makefile
 modules/schedulers/slurm/Makefile'
 
-maintainerclean_files="$files config/mpi-config.local"
+maintainerclean_files="$files"
 
 for f in $files ; do
     cat > $f << EOF
@@ -161,33 +161,33 @@ done
 
 
 ################### DEFAULT CONFIG FILE FOR MPI ########################
-if [ -z "$build" ] ; then
-    # assume uname is correct as target arch 
-    arch=`uname -m`
-else
-    echo "$build" | grep "x86_64" > /dev/null
-    if [ $? -eq 0 ] ; then
-        arch="x86_64"
-    else
-        # assume i386
-        arch="i386"
-    fi
-fi
-
-if [ -z "$dist" ] ; then
-    if [ -z "target" ]; then
-        # probably we are on debian, no arch
-        dist=.debian
-        arch=""
-    else
-        # dist is missing in some el5 (CentOS/SL)
-        echo "$target" | grep "redhat" > /dev/null && dist=".el5"
-    fi
-fi
-
-if [ -f config/mpi-config.local${dist}-${arch} ] ; then
-    cp config/mpi-config.local${dist}-${arch} config/mpi-config.local
-fi
+#if [ -z "$build" ] ; then
+#    # assume uname is correct as target arch 
+#    arch=`uname -m`
+#else
+#    echo "$build" | grep "x86_64" > /dev/null
+#    if [ $? -eq 0 ] ; then
+#        arch="x86_64"
+#    else
+#        # assume i386
+#        arch="i386"
+#    fi
+#fi
+#
+#if [ -z "$dist" ] ; then
+#    if [ -z "target" ]; then
+#        # probably we are on debian, no arch
+#        dist=.debian
+#        arch=""
+#    else
+#        # dist is missing in some el5 (CentOS/SL)
+#        echo "$target" | grep "redhat" > /dev/null && dist=".el5"
+#    fi
+#fi
+#
+#if [ -f config/mpi-config.local${dist}-${arch} ] ; then
+#    cp config/mpi-config.local${dist}-${arch} config/mpi-config.local
+#fi
 ########################################################################
 
 
diff --git a/mpi-start.spec.in b/mpi-start.spec.in
index 12696bda0a3ad45618c617dea73620151f3b8851..76cfaf52d967e01a79003f006662d1869592070c 100644
--- a/mpi-start.spec.in
+++ b/mpi-start.spec.in
@@ -40,6 +40,7 @@ rm -rf $RPM_BUILD_ROOT
 %{_bindir}/mpi-start
 %config(noreplace) %{_sysconfdir}/mpi-start/*.local
 %{_sysconfdir}/mpi-start/*.filedist
+%{_sysconfdir}/mpi-start/mpi-config.*
 %{_sysconfdir}/mpi-start/*.hook
 %{_sysconfdir}/mpi-start/*.mpi
 %{_sysconfdir}/mpi-start/*.scheduler
@@ -50,10 +51,11 @@ rm -rf $RPM_BUILD_ROOT
 %doc docs/AUTHORS docs/COPYING docs/LICENSE README ChangeLog
 
 %changelog
-* Tue Jul 30 2013 Enol Fernandez <enolfc _AT_ ifca.unican.es> - 1.5.2-%{release}
+* Wed Aug 28 2013 Enol Fernandez <enolfc _AT_ ifca.unican.es> - 1.5.2-%{release}
 - Migrated to github.
 - Fix issue #1 (OSC mpiexec with mpich configuration)
 - Fix issue #2 (ssh copy fails if hostname command returns hostname with domain)
+- Fix issue #6 (Default mpi configuration should be detected by the runtime)
 
 * Wed Oct 31 2012 Enol Fernandez <enolfc _AT_ ifca.unican.es> - 1.5.1-1%{?dist}
 - Improved packaging.
diff --git a/src/mpi-start.in b/src/mpi-start.in
index 1146d4f282cafc4322f3ea41f9b8869bb7a04655..3212d72f886c23192ff808be8f878cc2a5c2ae8e 100755
--- a/src/mpi-start.in
+++ b/src/mpi-start.in
@@ -441,6 +441,62 @@ mpi_start_get_plugin() {
 }
 
 
+#======================================================================
+# Load the mpi configuration variables 
+#======================================================================
+mpi_start_load_mpi_config() {
+    local pfx=mpi-config
+    local cfiles=${pfx}.${MPI_START_UNAME}
+    if test "x${MPI_START_OS_DIST_TYPE}" != "x" ; then
+        cfiles="${pfx}.${MPI_START_OS_DIST_TYPE} $cfiles"
+        if test "x${MPI_START_OS_RELEASE_MAJOR}" != "x" ; then
+            cfiles="${pfx}.${MPI_START_OS_DIST_TYPE}${MPI_START_OS_RELEASE_MAJOR} $cfiles"
+            if test "x${MPI_START_ARCH}" != "x" ; then
+                cfiles="${pfx}.${MPI_START_OS_DIST_TYPE}${MPI_START_OS_RELEASE_MAJOR}-${MPI_START_ARCH} $cfiles"
+            fi
+        fi
+    fi
+    for c in $cfiles; do 
+        mpi_start_get_plugin $c 1
+        if test "x${MPI_START_PLUGIN_FILES}" != "x" ; then
+            info_msg "Loading configuration from $MPI_START_PLUGIN_FILES"
+            . ${MPI_START_PLUGIN_FILES}
+            break
+        fi
+    done
+    # finally load the mpi-config.local if available
+    mpi_start_get_plugin "mpi-config.local" 1
+    if test "x${MPI_START_PLUGIN_FILES}" != "x" ; then
+        info_msg "Loading local configuration from $MPI_START_PLUGIN_FILES"
+        . ${MPI_START_PLUGIN_FILES}
+    fi
+}
+
+#======================================================================
+# Try to find out the current OS distribution 
+#======================================================================
+mpi_start_detect_os() {
+    MPI_START_UNAME=`uname -s | tr "[:upper:]" "[:lower:]"`
+    MPI_START_ARCH=`uname -m`
+
+    if test "x${MPI_START_UNAME}" = "xlinux" ; then
+        which lsb_release 2> /dev/null > /dev/null
+        if test $? -eq 0 ; then
+            export MPI_START_OS_DIST=`lsb_release -si 2> /dev/null`
+            echo $MPI_START_OS_DIST | egrep -i "debian|ubuntu" > /dev/null 
+            if test $? -eq 0 ; then
+                export MPI_START_OS_DIST_TYPE="debian"
+            fi
+            echo $MPI_START_OS_DIST | egrep -i "redhat|scientific" > /dev/null 
+            if test $? -eq 0 ; then
+                export MPI_START_OS_DIST_TYPE="el"
+            fi
+            export MPI_START_OS_RELEASE=`lsb_release -sr 2> /dev/null`
+            export MPI_START_OS_RELEASE_MAJOR=`echo $MPI_START_OS_RELEASE | cut -f1 -d"."`
+        fi
+    fi
+}
+
 #======================================================================
 # Checks that mpi-start are correct and coherent
 #======================================================================
@@ -468,7 +524,8 @@ mpi_start_check_options() {
         set -x
     fi
 
-    MPI_START_UNAME=`uname -s | tr "[:upper:]" "[:lower:]"`
+    # detect os flavor
+    mpi_start_detect_os
 
     if test -r "${I2G_MPI_CONFIG}" ; then 
         . ${I2G_MPI_CONFIG}
@@ -546,11 +603,8 @@ mpi_start_check_options() {
         dump_env
     fi
 
-    # source the local mpi-start variables if any
-    mpi_start_get_plugin "mpi-config.local" 1
-    if test "x${MPI_START_PLUGIN_FILES}" != "x" ; then
-        . ${MPI_START_PLUGIN_FILES}
-    fi
+    # try to source the OS mpi variables
+    mpi_start_load_mpi_config
 }
 
 
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
index 34aa74236dfb5198eebb7b5ed8d3b6d6e3a612ac..4439263650535accbee49e6f0904cc17c9307d80 100755
--- a/tests/run_tests.sh
+++ b/tests/run_tests.sh
@@ -30,18 +30,18 @@ REMOVE_MY_SHUNIT=0
 
 # tests to run
 RUN_UNIT_TESTS=1
-RUN_BASIC_TESTS=1
-RUN_HOOK_TESTS=1
-RUN_NP_TESTS=1
-RUN_SCH_TESTS=1
-RUN_FSDETECT_TESTS=1
-RUN_AFFINITY_TESTS=1
+RUN_BASIC_TESTS=0
+RUN_HOOK_TESTS=0
+RUN_NP_TESTS=0
+RUN_SCH_TESTS=0
+RUN_FSDETECT_TESTS=0
+RUN_AFFINITY_TESTS=0
 # if running these tests, ensure you have proper environment loaded!
-RUN_OMP_TESTS=1
-RUN_MPICH2_TESTS=1
+RUN_OMP_TESTS=0
+RUN_MPICH2_TESTS=0
 RUN_MVAPICH2_TESTS=0
 RUN_MPICH_TESTS=0
-RUN_OPENMPI_TESTS=1
+RUN_OPENMPI_TESTS=0
 RUN_LAM_TESTS=0
 
 export MPI_OPENMPI_MPIEXEC_PARAMS="--mca btl ^openib"
@@ -96,6 +96,8 @@ if test "x${RUN_UNIT_TESTS}" = "x1" ; then
     ./test_trac_63.sh || exitcode=1
     echo "* Issue #1"
     ./test_issue_1.sh || exitcode=1
+    echo "* Issue #6"
+    ./test_issue_6.sh || exitcode=1
     echo "***************************"
 fi
 if test "x${RUN_BASIC_TESTS}" = "x1" ; then
diff --git a/tests/test_issue_6.sh b/tests/test_issue_6.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1dfb075e665890d7efb60906625694a8c50138db
--- /dev/null
+++ b/tests/test_issue_6.sh
@@ -0,0 +1,105 @@
+#!/bin/bash
+# Test for https://github.com/IFCA/mpi-start/issues/1
+
+oneTimeSetUp () {
+    export I2G_MPI_START_ENABLE_TESTING="TEST"
+    # source the mpi-start code to have all functions
+    . $I2G_MPI_START
+    mpi_start_check_options
+    export I2G_MPI_START_VERBOSE=1
+}
+
+setUp() {
+    export MPI_START_ETC_LIST=`$MYMKTEMP -d`
+    export MPI_LOADED=0
+}
+
+tearDown() {
+    rm -rf $MPI_START_ETC_LIST
+}
+
+oneTimeTearDown () {
+    for f in $MPI_START_CLEANUP_FILES; do
+        [ -f "$f" ] && rm -f $f
+        [ -d "$f" ] && rm -rf $f
+    done
+}
+
+testConfigDistReleaseArch() {
+    echo "export MPI_LOADED=1" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_OS_DIST_TYPE}${MPI_START_OS_RELEASE_MAJOR}-${MPI_START_ARCH}
+    assertEquals "0" "$MPI_LOADED"
+    mpi_start_load_mpi_config
+    assertEquals "1" "$MPI_LOADED"
+}
+
+testConfigDistRelease() {
+    echo "export MPI_LOADED=1" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_OS_DIST_TYPE}${MPI_START_OS_RELEASE_MAJOR}
+    assertEquals "0" "$MPI_LOADED"
+    mpi_start_load_mpi_config
+    assertEquals "1" "$MPI_LOADED"
+}
+
+testConfigDist() {
+    echo "export MPI_LOADED=1" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_OS_DIST_TYPE}
+    assertEquals "0" "$MPI_LOADED"
+    mpi_start_load_mpi_config
+    assertEquals "1" "$MPI_LOADED"
+}
+
+testConfigUname() {
+    echo "export MPI_LOADED=1" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_UNAME}
+    assertEquals "0" "$MPI_LOADED"
+    mpi_start_load_mpi_config
+    assertEquals "1" "$MPI_LOADED"
+}
+
+testConfigLocal() {
+    echo "export MPI_LOADED=1" > $MPI_START_ETC_LIST/mpi-config.local
+    assertEquals "0" "$MPI_LOADED"
+    mpi_start_load_mpi_config
+    assertEquals "1" "$MPI_LOADED"
+}
+
+testConfigOrderDistReleaseArch() {
+    echo "export MPI_LOADED=1" > $MPI_START_ETC_LIST/mpi-config.local
+    echo "export MPI_LOADED_2=1" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_OS_DIST_TYPE}${MPI_START_OS_RELEASE_MAJOR}-${MPI_START_ARCH}
+    echo "export MPI_LOADED_2=2" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_OS_DIST_TYPE}${MPI_START_OS_RELEASE_MAJOR}
+    echo "export MPI_LOADED_2=3" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_OS_DIST_TYPE}
+    echo "export MPI_LOADED_2=4" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_UNAME}
+    assertEquals "0" "$MPI_LOADED"
+    mpi_start_load_mpi_config
+    assertEquals "1" "$MPI_LOADED"
+    assertEquals "1" "$MPI_LOADED_2"
+}
+
+testConfigOrderDistRelease() {
+    echo "export MPI_LOADED=1" > $MPI_START_ETC_LIST/mpi-config.local
+    echo "export MPI_LOADED_2=2" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_OS_DIST_TYPE}${MPI_START_OS_RELEASE_MAJOR}
+    echo "export MPI_LOADED_2=3" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_OS_DIST_TYPE}
+    echo "export MPI_LOADED_2=4" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_UNAME}
+    assertEquals "0" "$MPI_LOADED"
+    mpi_start_load_mpi_config
+    assertEquals "1" "$MPI_LOADED"
+    assertEquals "2" "$MPI_LOADED_2"
+}
+
+testConfigOrderDist() {
+    echo "export MPI_LOADED=1" > $MPI_START_ETC_LIST/mpi-config.local
+    echo "export MPI_LOADED_2=3" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_OS_DIST_TYPE}
+    echo "export MPI_LOADED_2=4" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_UNAME}
+    assertEquals "0" "$MPI_LOADED"
+    mpi_start_load_mpi_config
+    assertEquals "1" "$MPI_LOADED"
+    assertEquals "3" "$MPI_LOADED_2"
+}
+
+testConfigOrderUname() {
+    echo "export MPI_LOADED=1" > $MPI_START_ETC_LIST/mpi-config.local
+    echo "export MPI_LOADED_2=4" > $MPI_START_ETC_LIST/mpi-config.${MPI_START_UNAME}
+    assertEquals "0" "$MPI_LOADED"
+    mpi_start_load_mpi_config
+    assertEquals "1" "$MPI_LOADED"
+    assertEquals "4" "$MPI_LOADED_2"
+}
+
+. $SHUNIT2