aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/lantiq
diff options
context:
space:
mode:
authorThomas Nixon <tom@tomn.co.uk>2018-03-03 15:06:53 +0000
committerMathias Kresin <dev@kresin.me>2018-03-18 22:22:39 +0100
commit8c88e23b99cca002c883b89d06e4b582a1b45e94 (patch)
treebcce4be0ea5095727244b35ca825cda5777b064d /target/linux/lantiq
parentac1c31c2595a7af3bc5bdf97d48b85278fb0eeff (diff)
downloadupstream-8c88e23b99cca002c883b89d06e4b582a1b45e94.tar.gz
upstream-8c88e23b99cca002c883b89d06e4b582a1b45e94.tar.bz2
upstream-8c88e23b99cca002c883b89d06e4b582a1b45e94.zip
lantiq: fix DM200 boot with fake uImage headers
The latest bootloader versions load the firmware into memory and call `chk_dniimg` (defined in Netgear GPL release), which expects to find three consecutive block-aligned uImages. Add two fake uImage headers after the kernel to fool this check. This wastes up to 128k of space for alignment. The alternative would be to put the rootfs in a second uImage, but this would limit the firmware size to 0x710000 (the number of bytes loaded and verified by the bootloader) instead of 0x7b0000 (the size of the firmware partition). Signed-off-by: Thomas Nixon <tom@tomn.co.uk>
Diffstat (limited to 'target/linux/lantiq')
-rw-r--r--target/linux/lantiq/image/Makefile4
1 files changed, 4 insertions, 0 deletions
diff --git a/target/linux/lantiq/image/Makefile b/target/linux/lantiq/image/Makefile
index e6fbc1dbf8..3541ca8b54 100644
--- a/target/linux/lantiq/image/Makefile
+++ b/target/linux/lantiq/image/Makefile
@@ -584,6 +584,10 @@ TARGET_DEVICES += bt_homehub-v5a
define Device/netgear_dm200
DEVICE_DTS := DM200
IMAGES := sysupgrade.bin factory.img
+ IMAGE/sysupgrade.bin := append-kernel | \
+ pad-offset 64k 64 | append-uImage-fakeroot-hdr | \
+ pad-offset 64k 64 | append-uImage-fakeroot-hdr | \
+ append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
IMAGE/factory.img := $$(IMAGE/sysupgrade.bin) | netgear-dni
IMAGE_SIZE := 7872k
DEVICE_TITLE := Netgear DM200