Author: blogic
Date: 2014-12-03 15:32:32 +0100 (Wed, 03 Dec 2014)
New Revision: 43505

Added:
   trunk/package/system/procd/files/nand-preinit.sh
Modified:
   trunk/package/system/procd/Makefile
Log:
procd: firstboot nand/ubi takeover support

it is now possible to flash a initramfs kernel and a sysupgrade tar file inside 
the ubi partition. on first boot, the takeover script will find the tar file, 
extract and finally sysupgrade it. this allows us to flash owrt/ubi images in a 
2 phase setup using ODM webuis that are not ubi aware. this is needed by some 
mediatek and brokencom devices.

Signed-off-by: John Crispin <[email protected]>

Modified: trunk/package/system/procd/Makefile
===================================================================
--- trunk/package/system/procd/Makefile 2014-12-03 09:17:28 UTC (rev 43504)
+++ trunk/package/system/procd/Makefile 2014-12-03 14:32:32 UTC (rev 43505)
@@ -43,6 +43,13 @@
   TITLE:=OpenWrt sysupgrade nand helper
 endef
 
+define Package/procd-nand-firstboot
+  SECTION:=utils
+  CATEGORY:=Utilities
+  DEPENDS:=procd-nand
+  TITLE:=OpenWrt firstboot nand helper
+endef
+
 define Package/procd/config
 menu "Configuration"
        depends on PACKAGE_procd
@@ -85,5 +92,12 @@
        $(INSTALL_DATA) ./files/nand.sh $(1)/lib/upgrade/
 endef
 
+define Package/procd-nand-firstboot/install
+       $(INSTALL_DIR) $(1)/lib/preinit
+
+       $(INSTALL_DATA) ./files/nand-preinit.sh 
$(1)/lib/preinit/60-nand-firstboot.sh
+endef
+
 $(eval $(call BuildPackage,procd))
 $(eval $(call BuildPackage,procd-nand))
+$(eval $(call BuildPackage,procd-nand-firstboot))

Added: trunk/package/system/procd/files/nand-preinit.sh
===================================================================
--- trunk/package/system/procd/files/nand-preinit.sh                            
(rev 0)
+++ trunk/package/system/procd/files/nand-preinit.sh    2014-12-03 14:32:32 UTC 
(rev 43505)
@@ -0,0 +1,17 @@
+#!/bin/sh
+# Copyright (C) 2014 OpenWrt.org
+
+nand_takeover() {
+       . /lib/upgrade/nand.sh
+       mtd=$(find_mtd_index "$CI_UBIPART")
+       local file_type="$(identify $2)"
+       mtd -l 400 dump /dev/mtd$mtd > /tmp/takeover.hdr
+       MAGIC=$(dd if=/tmp/takeover.hdr bs=1 skip=261 count=5 2> /dev/null)
+       SIZE=$(printf "%d" 0x$(dd if=/tmp/takeover.hdr bs=4 count=1 2> 
/dev/null | hexdump -v -n 4 -e '1/1 "%02x"'))
+       [ "$MAGIC" = "ustar" ] && {
+               mtd -l $((SIZE + 4))  dump /dev/mtd$mtd | dd bs=1 skip=4 
of=/tmp/sysupgrade.tar
+               nand_do_upgrade_stage2 /tmp/sysupgrade.tar
+       }
+}
+
+boot_hook_add initramfs nand_takeover
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to