mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 15:02:32 +00:00
ath79: rework Netgear nand devices image recipe
In Netgear u-boot GPL code, nand devices uses this formula to locate the
rootfs offset.
offset = (((128 + KERNEL_SIZE) / BLOCK_SIZE) + 1) * BLOCK_SIZE;
Howerver, WNDR4500 source code incorrectly define the nand block size to
64k. In some cases, it causes u-boot can't get the correct rootfs offset,
which result in boot failure. This patch workaround it by padding kernel
size to (128k * n - 128 - 1). The additional char '\0' is used to ensure
the (128 + KERNEL_SIZE) can't be divided by the BLOCK_SIZE.
Fixes: https://github.com/openwrt/openwrt/issues/13050
Fixes: 3c1512a25d
("ath79: optimize the firmware recipe for Netgear NAND devices")
Tested-by: Yousaf <yousaf465@gmail.com>
Signed-off-by: Shiji Yang <yangshiji66@qq.com>
This commit is contained in:
parent
f3eb998e7e
commit
0f9b8aa3f5
@ -285,7 +285,7 @@ define Device/meraki_mr18
|
||||
endef
|
||||
TARGET_DEVICES += meraki_mr18
|
||||
|
||||
# fake rootfs is mandatory, pad-offset 64 equals (1 * uimage_header)
|
||||
# fake rootfs is mandatory, pad-offset 129 equals (2 * uimage_header + '\0')
|
||||
define Device/netgear_ath79_nand
|
||||
DEVICE_VENDOR := NETGEAR
|
||||
DEVICE_PACKAGES := kmod-usb2 kmod-usb-ledtrig-usbport
|
||||
@ -293,8 +293,9 @@ define Device/netgear_ath79_nand
|
||||
BLOCKSIZE := 128k
|
||||
PAGESIZE := 2048
|
||||
IMAGE_SIZE := 25600k
|
||||
KERNEL := kernel-bin | append-dtb | lzma | uImage lzma | \
|
||||
pad-offset $$(BLOCKSIZE) 64 | append-uImage-fakehdr filesystem $$(UIMAGE_MAGIC)
|
||||
KERNEL := kernel-bin | append-dtb | lzma | \
|
||||
pad-offset $$(BLOCKSIZE) 129 | uImage lzma | pad-extra 1 | \
|
||||
append-uImage-fakehdr filesystem $$(UIMAGE_MAGIC)
|
||||
IMAGES := sysupgrade.bin factory.img
|
||||
IMAGE/factory.img := append-kernel | pad-to $$$$(KERNEL_SIZE) | \
|
||||
append-ubi | check-size | netgear-dni
|
||||
|
Loading…
Reference in New Issue
Block a user