image: add cameo-factory command
authorSebastian Kemper <sebastian_ml@gmx.net>
Sat, 1 Dec 2018 18:13:50 +0000 (19:13 +0100)
committerChristian Lamparter <chunkeey@gmail.com>
Sun, 16 Dec 2018 23:21:34 +0000 (00:21 +0100)
This command enables factory image generation for Cameo boards. On
upgrade the vendor firmware will check the size of the provided image
and if a specific string is located at the end of the binary.
cameo-factory will generate an image that the vendor firmware accepts.

Tested on a D-Link DIR-825 C1 with vendor firmwares 3.01 and 3.04.

Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
include/image-commands.mk

index ac724d20ac4e1f9bafcfad8ea55fec1cc4fed5a9..63539bad0808c01fed3811f70b3857a33385c346 100644 (file)
@@ -44,6 +44,18 @@ define Build/buffalo-dhp-image
        mv $@.new $@
 endef
 
+# blow up binary to given size and put a given string at its end:
+# cameo-factory <size[k]> <string>
+define Build/cameo-factory
+       factory_stamp=$(word 2,$(1)); \
+       ((reduced_size=$(subst k,*1024,$(word 1,$(1)))-$${#factory_stamp})); \
+       ( \
+               dd if=$@ bs=$$reduced_size conv=sync; \
+               echo -n $$factory_stamp; \
+       ) > $@.new && \
+       mv $@.new $@
+endef
+
 define Build/eva-image
        $(STAGING_DIR_HOST)/bin/lzma2eva $(KERNEL_LOADADDR) $(KERNEL_LOADADDR) $@ $@.new
        mv $@.new $@