Do not unmount on wipe unless needed. Add reboot binary. Restart recovery process for Galaxy S.
diff --git a/Android.mk b/Android.mk
index ddb2012..d6bfb19 100644
--- a/Android.mk
+++ b/Android.mk
@@ -18,6 +18,10 @@
ui.c \
verifier.c
+LOCAL_SRC_FILES += \
+ reboot.c \
+ setprop.c
+
ifndef BOARD_HAS_NO_MISC_PARTITION
LOCAL_SRC_FILES += \
firmware.c \
@@ -36,7 +40,7 @@
LOCAL_FORCE_STATIC_EXECUTABLE := true
-RECOVERY_VERSION := ClockworkMod Recovery v2.5.0.1
+RECOVERY_VERSION := ClockworkMod Recovery v2.5.0.4
LOCAL_CFLAGS += -DRECOVERY_VERSION="$(RECOVERY_VERSION)"
RECOVERY_API_VERSION := 2
LOCAL_CFLAGS += -DRECOVERY_API_VERSION=$(RECOVERY_API_VERSION)
@@ -138,7 +142,7 @@
include $(BUILD_EXECUTABLE)
-RECOVERY_LINKS := amend busybox flash_image dump_image mkyaffs2image unyaffs erase_image nandroid
+RECOVERY_LINKS := amend busybox flash_image dump_image mkyaffs2image unyaffs erase_image nandroid reboot
# nc is provided by external/netcat
SYMLINKS := $(addprefix $(TARGET_RECOVERY_ROOT_OUT)/sbin/,$(RECOVERY_LINKS))
diff --git a/killrecovery.sh b/killrecovery.sh
index 90f43e6..4c15f0b 100755
--- a/killrecovery.sh
+++ b/killrecovery.sh
@@ -6,4 +6,11 @@
kill $(ps | grep /sbin/adbd)
kill $(ps | grep /sbin/recovery)
+# On the Galaxy S, the recovery comes test signed, but the
+# recovery is not automatically restarted.
+if [ -f /init.smdkc110.rc ]
+then
+ /sbin/recovery &
+fi
+
exit 1
\ No newline at end of file
diff --git a/nandroid.c b/nandroid.c
index e3a2bb4..35ad641 100644
--- a/nandroid.c
+++ b/nandroid.c
@@ -228,10 +228,12 @@
}
ui_print("Restoring %s...\n", name);
+ /*
if (0 != (ret = ensure_root_path_unmounted(root))) {
ui_print("Can't unmount %s!\n", mount_point);
return ret;
}
+ */
if (0 != (ret = format_root_device(root))) {
ui_print("Error while formatting %s!\n", root);
return ret;
diff --git a/recovery.c b/recovery.c
index fea1e7d..ce4405b 100644
--- a/recovery.c
+++ b/recovery.c
@@ -536,6 +536,10 @@
return amend_main(argc, argv);
if (strstr(argv[0], "nandroid"))
return nandroid_main(argc, argv);
+ if (strstr(argv[0], "reboot"))
+ return reboot_main(argc, argv);
+ if (strstr(argv[0], "setprop"))
+ return setprop_main(argc, argv);
return busybox_driver(argc, argv);
}
__system("/sbin/postrecoveryboot.sh");
diff --git a/roots.c b/roots.c
index df49cc3..474ea1d 100644
--- a/roots.c
+++ b/roots.c
@@ -345,7 +345,7 @@
LOGW("format_root_device: can't resolve \"%s\"\n", root);
return -1;
}
- if (info->mount_point != NULL) {
+ if (info->mount_point != NULL && info->device == g_mtd_device) {
/* Don't try to format a mounted device.
*/
int ret = ensure_root_path_unmounted(root);