allow toggling of software back menu item. add recovery checkpoint file. mount auto now uses busybox mount.
diff --git a/roots.c b/roots.c
index d54de2d..da10ee7 100644
--- a/roots.c
+++ b/roots.c
@@ -21,6 +21,8 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+#include <limits.h>
+
 #include "mtdutils/mtdutils.h"
 #include "mtdutils/mounts.h"
 #include "minzip/Zip.h"
@@ -205,6 +207,18 @@
     return internal_root_mounted(info) >= 0;
 }
 
+static int mount_internal(const char* device, const char* mount_point, const char* filesystem)
+{
+    if (strcmp(filesystem, "auto") != 0) {
+        return mount(device, mount_point, filesystem, MS_NOATIME | MS_NODEV | MS_NODIRATIME, "");
+    }
+    else {
+        char mount_cmd[PATH_MAX];
+        sprintf(mount_cmd, "mount -onoatime,nodiratime,nodev %s %s", device, mount_point);
+        return __system(mount_cmd);
+    }
+}
+
 int
 ensure_root_path_mounted(const char *root_path)
 {
@@ -245,8 +259,7 @@
     }
 
     mkdir(info->mount_point, 0755);  // in case it doesn't already exist
-    if (mount(info->device, info->mount_point, info->filesystem,
-            MS_NOATIME | MS_NODEV | MS_NODIRATIME, "")) {
+    if (mount_internal(info->device, info->mount_point, info->filesystem)) {
         if (info->device2 == NULL) {
             LOGE("Can't mount %s\n(%s)\n", info->device, strerror(errno));
             return -1;