aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorTony Ambardar <itugrok@yahoo.com>2023-11-13 17:14:07 -0800
committerHauke Mehrtens <hauke@hauke-m.de>2023-11-26 18:37:20 +0100
commitcd5e0134b6bd2e34ad237d985da99c5307816c93 (patch)
treecde6aef80f55a888861d2919f952a7ff9adf5cf8 /include
parentb16e14a220fcab19e3145328057e7188f00b6a17 (diff)
downloadupstream-cd5e0134b6bd2e34ad237d985da99c5307816c93.tar.gz
upstream-cd5e0134b6bd2e34ad237d985da99c5307816c93.tar.bz2
upstream-cd5e0134b6bd2e34ad237d985da99c5307816c93.zip
image: fix Linksys image alignment and simplify footer creation
Current factory image sizes for Linksys devices are 256-byte aligned. This is not an issue writing factory images from the OpenWrt or Linksys GUIs, but can lead to failures using a TFTP client from the Linksys bootloader: NAND write: device 1 offset 0x2800000, size 0xc00100 Attempt to write to non page aligned data NAND write to offset 2800000 failed -22 0 bytes written: ERROR Simplify Linksys footer creation by migrating to a makefile build recipe, and pre-pad the footer (with 0xFF) to ensure the final image is $(PAGESIZE) aligned. Finally, remove the old linksys-image.sh script no longer needed. Linksys footer details are given below for future reference. The 256-byte footer is appended to factory images and tested by both the Linksys Upgrader (observed in EA6350v3) and OpenWrt sysupgrade. Footer format: .LINKSYS. Checked by Linksys upgrader before continuing. (9 bytes) <VERSION> Upgrade version number, unchecked so arbitrary. (8 bytes) <TYPE> Model of device, space padded (0x20). (15 bytes) <CRC> CRC checksum of factory image to flash. (8 bytes) <padding> Padding ('0' + 0x20 * 7) (8 bytes) <signature> Signature of signer, unchecked so arbitrary. (16 bytes) <padding> Padding with nulls (0x00) (192 bytes) Link: https://github.com/openwrt/openwrt/pull/11405#issuecomment-1358510123 Link: https://github.com/openwrt/openwrt/pull/11405#issuecomment-1587517739 Reported-by: Stijn Segers <foss@volatilesystems.org> Reported-by: Wyatt Martin <wawowl@gmail.com> Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
Diffstat (limited to 'include')
-rw-r--r--include/image-commands.mk13
1 files changed, 10 insertions, 3 deletions
diff --git a/include/image-commands.mk b/include/image-commands.mk
index 0f292d15ee3..7d9f93fed74 100644
--- a/include/image-commands.mk
+++ b/include/image-commands.mk
@@ -389,10 +389,17 @@ define Build/kernel-bin
endef
define Build/linksys-image
- $(TOPDIR)/scripts/linksys-image.sh \
+ let \
+ size="$$(stat -c%s $@)" \
+ pad="$(call exp_units,$(PAGESIZE))" \
+ offset="256" \
+ pad="(pad - ((size + offset) % pad)) % pad"; \
+ dd if=/dev/zero bs=$$pad count=1 | tr '\000' '\377' >> $@
+ printf ".LINKSYS.01000409%-15s%08X%-8s%-16s" \
"$(call param_get_default,type,$(1),$(DEVICE_NAME))" \
- $@ $@.new
- mv $@.new $@
+ "$$(cksum $@ | cut -d ' ' -f1)" \
+ "0" "K0000000F0246434" >> $@
+ dd if=/dev/zero bs=192 count=1 >> $@
endef
define Build/lzma