diff --git a/building.sh b/building.sh
index 3c4f3e59..3bde1a34 100755
--- a/building.sh
+++ b/building.sh
@@ -652,7 +652,7 @@ xm550() {
 # hi3516cv200                   # testing..
 # hi3518ev200                   # testing..
 # hi3518ev200_domsip            # DomSip
-hi3518ev200_hs303             # OpenIPC
+# hi3518ev200_hs303             # OpenIPC
 #
 # hi3516av100                   # OpenIPC
 # hi3516av100_ultimate          # OpenIPC_ultimate version
diff --git a/general/overlay/init b/general/overlay/init
index b80be2c1..b293f766 100755
--- a/general/overlay/init
+++ b/general/overlay/init
@@ -5,8 +5,8 @@ on_exit()
   mountpoint -q /proc && umount /proc
   exec /sbin/init $*
 }
-trap on_exit 0
 
+trap on_exit 0
 
 mount -t proc proc /proc || exit
 grep -q overlay /proc/filesystems || exit
@@ -14,20 +14,24 @@ grep -q overlay /proc/filesystems || exit
 if grep -q ubifs /proc/cmdline; then
   mount -t ubifs ubi0:rootfs_data /overlay
 else
-mount -t jffs2 /dev/$(awk -F ':' '/rootfs_data/ {print $1}' /proc/mtd | sed 's/mtd/mtdblock/') /overlay || \
-  mount -t ubifs ubi0:rootfs_data /overlay || mount -t tmpfs tmpfs /overlay || exit
+  mtdblkdev=`awk -F ':' '/rootfs_data/ {print $1}' /proc/mtd | sed 's/mtd/mtdblock/'`
+  mtdchrdev=`grep 'rootfs_data' /proc/mtd | cut -d: -f1`
+  mount -t jffs2 /dev/${mtdblkdev} /overlay
+  
+  if [ $? -ne 0 ] || { dmesg | grep "jffs2.*: Magic bitmask.*not found" > /dev/null 2>&1; } then
+	echo "jffs2 health check error, format required!"
+	flash_eraseall -j /dev/${mtdchrdev}
+    mount -t jffs2 /dev/${mtdblkdev} /overlay || mount -t tmpfs tmpfs /overlay || exit
+  fi
 fi
 
 if grep -q overlayfs /proc/filesystems; then
-  mount -t overlayfs overlayfs -o lowerdir=/,upperdir=/overlay,ro /mnt \
-    || { umount /overlay; exit; }
+  mount -t overlayfs overlayfs -o lowerdir=/,upperdir=/overlay,ro /mnt || { umount /overlay; exit; }
 else
   overlay_rootdir=/overlay/root
   overlay_workdir=/overlay/work
   mkdir -p ${overlay_rootdir} ${overlay_workdir}
-  mount -t overlay overlay \
-        -o lowerdir=/,upperdir=${overlay_rootdir},workdir=${overlay_workdir} /mnt \
-    || { umount /overlay; exit; }
+  mount -t overlay overlay -o lowerdir=/,upperdir=${overlay_rootdir},workdir=${overlay_workdir} /mnt || { umount /overlay; exit; }
 fi
 
 pivot_root /mnt /mnt/rom