diff --git a/Android.mk b/Android.mk
index cab7032..2c5da9c 100644
--- a/Android.mk
+++ b/Android.mk
@@ -26,7 +26,7 @@
 
 LOCAL_FORCE_STATIC_EXECUTABLE := true
 
-RECOVERY_VERSION := ClockworkMod Recovery v1.8.2.5
+RECOVERY_VERSION := ClockworkMod Recovery v1.8.2.8
 LOCAL_CFLAGS := -DRECOVERY_VERSION="$(RECOVERY_VERSION)"
 RECOVERY_API_VERSION := 2
 LOCAL_CFLAGS += -DRECOVERY_API_VERSION=$(RECOVERY_API_VERSION)
@@ -35,22 +35,36 @@
   LOCAL_CFLAGS += -DKEY_POWER_IS_SELECT_ITEM
 endif
 
-# This file system specific stuff is in need of some serious cleaning up...
-
-ifeq ($BOARD_SDCARD_MMCBLK1,true)
-  LOCAL_CFLAGS += -DSDCARD_MMCBLK1
+ifdef BOARD_SDCARD_DEVICE_PRIMARY
+  LOCAL_CFLAGS += -DSDCARD_DEVICE_PRIMARY=\"$(BOARD_SDCARD_DEVICE_PRIMARY)\"
 endif
 
-ifeq ($(BOARD_SD_EXT3),true)
-  LOCAL_CFLAGS += -DSD_EXT3
+ifdef BOARD_SDCARD_DEVICE_SECONDARY
+  LOCAL_CFLAGS += -DSDCARD_DEVICE_SECONDARY=\"$(BOARD_SDCARD_DEVICE_SECONDARY)\"
 endif
 
-ifeq ($(BOARD_USERDATA_EXT3),true)
-  LOCAL_CFLAGS += -DUSERDATA_EXT3
+ifdef BOARD_SDEXT_DEVICE
+  LOCAL_CFLAGS += -DSDEXT_DEVICE=\"$(BOARD_SDEXT_DEVICE)\"
 endif
 
-ifeq ($(BOARD_CACHE_EXT3),true)
-  LOCAL_CFLAGS += -DCACHE_EXT3
+ifdef BOARD_SDEXT_FILESYSTEM
+  LOCAL_CFLAGS += -DSDCARD_DEVICE_PRIMARY=\"$(BOARD_SDEXT_FILESYSTEM)\"
+endif
+
+ifdef BOARD_DATA_DEVICE
+  LOCAL_CFLAGS += -DDATA_DEVICE=\"$(BOARD_DATA_DEVICE)\"
+endif
+
+ifdef BOARD_DATA_FILESYSTEM
+  LOCAL_CFLAGS += -DDATA_FILESYSTEM=\"$(BOARD_DATA_FILESYSTEM)\"
+endif
+
+ifdef BOARD_CACHE_DEVICE
+  LOCAL_CFLAGS += -DCACHE_DEVICE=\"$(BOARD_CACHE_DEVICE)\"
+endif
+
+ifdef BOARD_CACHE_FILESYSTEM
+  LOCAL_CFLAGS += -DCACHE_FILESYSTEM=\"$(BOARD_CACHE_FILESYSTEM)\"
 endif
 
 # This binary is in the recovery ramdisk, which is otherwise a copy of root.
@@ -107,14 +121,6 @@
 include $(BUILD_PREBUILT)
 
 include $(CLEAR_VARS)
-LOCAL_MODULE := mkfstab.sh
-LOCAL_MODULE_TAGS := eng
-LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
-LOCAL_MODULE_PATH := $(TARGET_RECOVERY_ROOT_OUT)/sbin
-LOCAL_SRC_FILES := mkfstab.sh
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
 LOCAL_MODULE := killrecovery.sh
 LOCAL_MODULE_TAGS := eng
 LOCAL_MODULE_CLASS := RECOVERY_EXECUTABLES
diff --git a/extendedcommands.c b/extendedcommands.c
index 3b32c12..d4e20fd 100644
--- a/extendedcommands.c
+++ b/extendedcommands.c
@@ -33,6 +33,7 @@
 #include "commands.h"
 #include "amend/amend.h"
 
+#include "mtdutils/mtdutils.h"
 #include "mtdutils/dump_image.h"
 #include "../../external/yaffs2/yaffs2/utils/mkyaffs2image.h"
 #include "../../external/yaffs2/yaffs2/utils/unyaffs.h"
@@ -785,4 +786,32 @@
             }
         }
     }
+}
+
+void write_fstab_root(char *root_path, FILE *file)
+{
+    RootInfo *info = get_root_info_for_path(root_path);
+    MtdPartition *mtd = get_root_mtd_partition(root_path);
+    if (mtd != NULL)
+    {
+        fprintf(file, "/dev/block/mtdblock%d ", mtd->device_index);
+    }
+    else
+    {
+        fprintf(file, "%s ", info->device);
+    }
+    
+    fprintf(file, "%s ", info->mount_point);
+    fprintf(file, "%s rw\n", info->filesystem); 
+}
+
+void create_fstab()
+{
+    FILE *file = fopen("/etc/fstab", "w");
+    write_fstab_root("CACHE:", file);
+    write_fstab_root("DATA:", file);
+    write_fstab_root("SYSTEM:", file);
+    write_fstab_root("SDCARD:", file);
+    write_fstab_root("SDEXT:", file);
+    fclose(file);
 }
\ No newline at end of file
diff --git a/extendedcommands.h b/extendedcommands.h
index 83e5213..9d38116 100644
--- a/extendedcommands.h
+++ b/extendedcommands.h
@@ -43,3 +43,4 @@
 void
 wipe_battery_stats();
 
+void create_fstab();
diff --git a/mkfstab.sh b/mkfstab.sh
deleted file mode 100755
index 80505dc..0000000
--- a/mkfstab.sh
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/sbin/sh
-
-rm -f /etc/fstab
-cat /proc/mtd | while read mtdentry
-do
-  mtd=$(echo $mtdentry | awk '{print $1}')
-  mtd=$(echo $mtd | sed s/mtd//)
-  mtd=$(echo $mtd | sed s/://)
-  exist=$(ls -l /dev/block/mtdblock$mtd) 2> /dev/null
-  if [ -z "$exist" ]
-  then
-    continue
-  fi
-  partition=$(echo $mtdentry | awk '{print $4}')
-  partition=$(echo $partition | sed s/\"//g)
-  mount=$partition
-  type=
-  if [ "$partition" = "system" ]
-  then
-    type=yaffs2
-  elif [ "$partition" = "userdata" ]
-  then
-    type=yaffs2
-    mount=data
-  elif [ "$partition" == "cache" ]
-  then
-    type=yaffs2
-  else
-    continue
-  fi
-  
-  echo "/dev/block/mtdblock$mtd  /$mount $type rw" >> /etc/fstab
-done
-if [ ! -z $SDCARD_MMCBLK1 ]
-then
-    echo "/dev/block/mmcblk1p1" /sdcard vfat rw >> /etc/fstab
-    echo "/dev/block/mmcblk1p2" /sd-ext auto rw >> /etc/fstab
-else
-    echo "/dev/block/mmcblk0p1" /sdcard vfat rw >> /etc/fstab
-    echo "/dev/block/mmcblk0p2" /sd-ext auto rw >> /etc/fstab
-fi
\ No newline at end of file
diff --git a/mtdutils/mtdutils.c b/mtdutils/mtdutils.c
index 18e6a5d..8069c3f 100644
--- a/mtdutils/mtdutils.c
+++ b/mtdutils/mtdutils.c
@@ -28,13 +28,6 @@
 
 #include "mtdutils.h"
 
-struct MtdPartition {
-    int device_index;
-    unsigned int size;
-    unsigned int erase_size;
-    char *name;
-};
-
 struct MtdReadContext {
     const MtdPartition *partition;
     char *buffer;
diff --git a/mtdutils/mtdutils.h b/mtdutils/mtdutils.h
index 528a5bb..b3bad68 100644
--- a/mtdutils/mtdutils.h
+++ b/mtdutils/mtdutils.h
@@ -52,4 +52,11 @@
 off_t mtd_find_write_start(MtdWriteContext *ctx, off_t pos);
 int mtd_write_close(MtdWriteContext *);
 
+struct MtdPartition {
+    int device_index;
+    unsigned int size;
+    unsigned int erase_size;
+    char *name;
+};
+
 #endif  // MTDUTILS_H_
diff --git a/recovery.c b/recovery.c
index 4195726..442d2b6 100644
--- a/recovery.c
+++ b/recovery.c
@@ -491,11 +491,7 @@
             return amend_main(argc, argv);
 		return busybox_driver(argc, argv);
 	}
-#ifdef SDCARD_MMCBLK1
-    __system("SDCARD_MMCBLK1=true /sbin/mkfstab.sh");
-#else
-    __system("/sbin/mkfstab.sh");
-#endif
+    //create_fstab();
     __system("/sbin/postrecoveryboot.sh");
     
     int is_user_initiated_recovery = 0;
diff --git a/roots.c b/roots.c
index 32ecc5c..22988eb 100644
--- a/roots.c
+++ b/roots.c
@@ -29,15 +29,6 @@
 
 #include "extendedcommands.h"
 
-typedef struct {
-    const char *name;
-    const char *device;
-    const char *device2;  // If the first one doesn't work (may be NULL)
-    const char *partition_name;
-    const char *mount_point;
-    const char *filesystem;
-} RootInfo;
-
 /* Canonical pointers.
 xxx may just want to use enums
  */
@@ -45,43 +36,47 @@
 static const char g_raw[] = "@\0g_raw";
 static const char g_package_file[] = "@\0g_package_file";
 
-#ifdef SDCARD_MMCBLK1
-#define SDCARD_MMCBLK_SECONDARY "/dev/block/mmcblk1"
-#define SDCARD_MMCBLK_PRIMARY "/dev/block/mmcblk1p1"
-#define SDEXT "/dev/block/mmcblk1p2"
-#else
-#define SDCARD_MMCBLK_SECONDARY "/dev/block/mmcblk0"
-#define SDCARD_MMCBLK_PRIMARY "/dev/block/mmcblk0p1"
-#define SDEXT "/dev/block/mmcblk0p2"
+#ifndef SDCARD_DEVICE_PRIMARY
+#define SDCARD_DEVICE_PRIMARY "/dev/block/mmcblk0p1"
 #endif
 
-#ifdef SD_EXT3
-#define SD_EXT_FILE_SYSTEM "ext3"
-#else
-#define SD_EXT_FILE_SYSTEM "ext4"
+#ifndef SDCARD_DEVICE_SECONDARY
+#define SDCARD_DEVICE_SECONDARY "/dev/block/mmcblk0p2"
 #endif
 
-#ifdef USERDATA_EXT3
-#define SD_EXT_FILE_SYSTEM "ext3"
-#else
-#define SD_EXT_FILE_SYSTEM "ext4"
+#ifndef SDEXT_DEVICE
+#define SDEXT_DEVICE "/dev/block/mmcblk0p2"
 #endif
 
-#ifdef CACHE_EXT3
-#define SD_EXT_FILE_SYSTEM "ext3"
-#else
-#define SD_EXT_FILE_SYSTEM "ext4"
+#ifndef SDEXT_FILESYSTEM
+#define SDEXT_FILESYSTEM "ext4"
+#endif
+
+#ifndef DATA_DEVICE
+#define DATA_DEVICE g_mtd_device
+#endif
+
+#ifndef DATA_FILESYSTEM
+#define DATA_FILESYSTEM "yaffs2"
+#endif
+
+#ifndef CACHE_DEVICE
+#define CACHE_DEVICE g_mtd_device
+#endif
+
+#ifndef CACHE_FILESYSTEM
+#define CACHE_FILESYSTEM "yaffs2"
 #endif
 
 static RootInfo g_roots[] = {
     { "BOOT:", g_mtd_device, NULL, "boot", NULL, g_raw },
-    { "CACHE:", g_mtd_device, NULL, "cache", "/cache", "yaffs2" },
-    { "DATA:", g_mtd_device, NULL, "userdata", "/data", "yaffs2" },
+    { "CACHE:", CACHE_DEVICE, NULL, "cache", "/cache", CACHE_FILESYSTEM },
+    { "DATA:", DATA_DEVICE, NULL, "userdata", "/data", DATA_FILESYSTEM },
     { "MISC:", g_mtd_device, NULL, "misc", NULL, g_raw },
     { "PACKAGE:", NULL, NULL, NULL, NULL, g_package_file },
     { "RECOVERY:", g_mtd_device, NULL, "recovery", "/", g_raw },
-    { "SDCARD:", SDCARD_MMCBLK_PRIMARY, SDCARD_MMCBLK_SECONDARY, NULL, "/sdcard", "vfat" },
-    { "SDEXT:", SDEXT, NULL, NULL, "/sd-ext", SD_EXT_FILE_SYSTEM },
+    { "SDCARD:", SDCARD_DEVICE_PRIMARY, SDCARD_DEVICE_SECONDARY, NULL, "/sdcard", "vfat" },
+    { "SDEXT:", SDEXT_DEVICE, NULL, NULL, "/sd-ext", SDEXT_FILESYSTEM },
     { "SYSTEM:", g_mtd_device, NULL, "system", "/system", "yaffs2" },
     { "MBM:", g_mtd_device, NULL, "mbm", NULL, g_raw },
     { "TMP:", NULL, NULL, NULL, "/tmp", NULL },
@@ -90,7 +85,7 @@
 
 // TODO: for SDCARD:, try /dev/block/mmcblk0 if mmcblk0p1 fails
 
-static const RootInfo *
+const RootInfo *
 get_root_info_for_path(const char *root_path)
 {
     const char *c;
diff --git a/roots.h b/roots.h
index bc847ea..7b15ed1 100644
--- a/roots.h
+++ b/roots.h
@@ -60,4 +60,13 @@
  */
 int format_root_device(const char *root);
 
+typedef struct {
+    const char *name;
+    const char *device;
+    const char *device2;  // If the first one doesn't work (may be NULL)
+    const char *partition_name;
+    const char *mount_point;
+    const char *filesystem;
+} RootInfo;
+
 #endif  // RECOVERY_ROOTS_H_
