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
