summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package/openwrt/jffs2root.c4
-rw-r--r--package/openwrt/mtd.c6
-rw-r--r--package/openwrt/openwrt.mk4
-rwxr-xr-xtarget/default/target_skeleton/etc/preinit11
-rw-r--r--target/jffs2/jffs2root.mk4
5 files changed, 17 insertions, 12 deletions
diff --git a/package/openwrt/jffs2root.c b/package/openwrt/jffs2root.c
index 2ff37fdad..77519a4a6 100644
--- a/package/openwrt/jffs2root.c
+++ b/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/package/openwrt/mtd.c b/package/openwrt/mtd.c
index ff104c657..296bf4b63 100644
--- a/package/openwrt/mtd.c
+++ b/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/package/openwrt/openwrt.mk b/package/openwrt/openwrt.mk
index 765f511d6..bc6e97e60 100644
--- a/package/openwrt/openwrt.mk
+++ b/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/target/default/target_skeleton/etc/preinit b/target/default/target_skeleton/etc/preinit
index 01df20583..6507d2319 100755
--- a/target/default/target_skeleton/etc/preinit
+++ b/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/target/jffs2/jffs2root.mk b/target/jffs2/jffs2root.mk
index 5e9380821..5a0259b27 100644
--- a/target/jffs2/jffs2root.mk
+++ b/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 \