diff options
author | Thomas Nixon <tom@tomn.co.uk> | 2018-03-03 15:06:53 +0000 |
---|---|---|
committer | Mathias Kresin <dev@kresin.me> | 2018-03-18 22:22:39 +0100 |
commit | 8c88e23b99cca002c883b89d06e4b582a1b45e94 (patch) | |
tree | bcce4be0ea5095727244b35ca825cda5777b064d | |
parent | ac1c31c2595a7af3bc5bdf97d48b85278fb0eeff (diff) | |
download | upstream-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>
-rw-r--r-- | target/linux/lantiq/image/Makefile | 4 |
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 |