diff --git a/openwrt/package/openwrt/jffs2root.c b/openwrt/package/openwrt/jffs2root.c index 2ff37fdad3..77519a4a6f 100644 --- a/openwrt/package/openwrt/jffs2root.c +++ b/openwrt/package/openwrt/jffs2root.c @@ -84,11 +84,13 @@ int main(int argc, char **argv) if (argc > 1 && !strcmp(argv[1],"--move")) { if (ptr->offsets[1] >= ptr->len) { printf("Partition already moved outside trx\n"); +#if 0 } else if (ptr->offsets[1] & 0x0001ffff) { printf("Partition does not start on a block boundary\n"); +#endif } else { init_crc32(); - bzero((void *)((int)ptr + ptr->len), (size_t)(len - ptr->len)); + //bzero((void *)((int)ptr + ptr->len), (size_t)(len - ptr->len)); ptr->len = ptr->offsets[1]; ptr->crc32 = crc32buf((void *) &(ptr->flag_version), ptr->len - offsetof(struct trx_header, flag_version)); msync(ptr,len,MS_SYNC|MS_INVALIDATE); diff --git a/openwrt/package/openwrt/mtd.c b/openwrt/package/openwrt/mtd.c index ff104c6575..296bf4b63a 100644 --- a/openwrt/package/openwrt/mtd.c +++ b/openwrt/package/openwrt/mtd.c @@ -140,11 +140,7 @@ mtd_erase(const char *mtd) mtdEraseInfo.start < mtdInfo.size; mtdEraseInfo.start += mtdInfo.erasesize) { - if(ioctl(fd, MEMUNLOCK, &mtdEraseInfo)) { - fprintf(stderr, "Could not unlock MTD device: %s\n", mtd); - close(fd); - exit(1); - } + ioctl(fd, MEMUNLOCK, &mtdEraseInfo); if(ioctl(fd, MEMERASE, &mtdEraseInfo)) { fprintf(stderr, "Could not erase MTD device: %s\n", mtd); close(fd); diff --git a/openwrt/package/openwrt/openwrt.mk b/openwrt/package/openwrt/openwrt.mk index 765f511d65..bc6e97e602 100644 --- a/openwrt/package/openwrt/openwrt.mk +++ b/openwrt/package/openwrt/openwrt.mk @@ -112,7 +112,7 @@ openwrt-mtd-clean: OPENWRT_JFFS2ROOT_SOURCE=package/openwrt/jffs2root.c OPENWRT_JFFS2ROOT_TARGET_BINARY:=sbin/jffs2root -$(TARGET_DIR)/$(OPENWRT_JFFS2ROOT_TARGET_BINARY): +$(TARGET_DIR)/$(OPENWRT_JFFS2ROOT_TARGET_BINARY): openwrt $(TARGET_CC) -o $(TARGET_DIR)/$(OPENWRT_JFFS2ROOT_TARGET_BINARY) $(OPENWRT_JFFS2ROOT_SOURCE) openwrt-jffs2root: $(TARGET_DIR)/$(OPENWRT_JFFS2ROOT_TARGET_BINARY) @@ -160,7 +160,7 @@ SSTRIP=$(OPENWRT_SSTRIP_TARGET) linksys: linksys-shared linksys-nvram linksys-wlconf -openwrt: linksys openwrt-mtd openwrt-trx openwrt-addpattern openwrt-jffs2root openwrt-sstrip +openwrt: linksys openwrt-mtd openwrt-trx openwrt-addpattern openwrt-sstrip openwrt-dirclean: linksys-shared-dirclean linksys-nvram-dirclean linksys-wlconf-dirclean diff --git a/openwrt/target/default/target_skeleton/etc/preinit b/openwrt/target/default/target_skeleton/etc/preinit index 01df205831..6507d2319c 100755 --- a/openwrt/target/default/target_skeleton/etc/preinit +++ b/openwrt/target/default/target_skeleton/etc/preinit @@ -8,8 +8,15 @@ if [ $(cat /proc/sys/reset) = 1 ] ; then while :; do { echo $(((X=(X+1)%8)%2)) > /proc/sys/diag; sleep $((X==0)); } done & else mount | grep jffs2 >&- - if [ $? = 0 ] && [ $(cat /proc/mtd | wc -l) = 6 ] ; then - jffs2root --move && reboot + if [ $? = 0 ] ; then + mtd unlock rootfs + [ $(cat /proc/mtd | wc -l) = 6 ] && { + echo 5 > /proc/sys/diag + mtd unlock OpenWrt + mtd erase OpenWrt + jffs2root --move + } + mount -o remount,rw /dev/root / else mtd unlock mtd4 mount -t jffs2 /dev/mtdblock/4 /jffs diff --git a/openwrt/target/jffs2/jffs2root.mk b/openwrt/target/jffs2/jffs2root.mk index 5e9380821b..5a0259b27c 100644 --- a/openwrt/target/jffs2/jffs2root.mk +++ b/openwrt/target/jffs2/jffs2root.mk @@ -44,11 +44,11 @@ jffs2root-dirclean: rm -rf $(MTD_DIR) ifeq ($(strip $(BR2_TARGET_ROOTFS_JFFS2)),y) -TARGETS+=openwrt-image +TARGETS+=openwrt-jffs2root openwrt-image ROOTFS=jffs2 JFFS2FLAGS=-a $(JFFS2_BLOCK_SIZE) -openwrt-image: openwrt +openwrt-image: openwrt @make jffs2root openwrt-code.bin TAG=W54G \ EXTRAVERSION=$(EXTRAVERSION)-JFFS2-4M JFFS2_BLOCK_SIZE=0x10000 @make jffs2root openwrt-code.bin TAG=W54S \