[LEDE-DEV] How to install factory image when kernel mtd is to small for uImage ?

por at oranjevos.nl por at oranjevos.nl
Tue Jul 25 05:49:54 PDT 2017


l.s.

I am preparing a port of LEDE to the Engenius ENH200EXT (and ENH200, ENH500EXT, ENH500) and the stock mtd layout has a kernel mtd of just 1024k; the LEDE uImage is 1287k. The result is that once rebooted after the stock firmware has installed the LEDE factory image, u-boot finds that the kernel is bad ("Verifying Checksum ...    Bad Data CRC") and will continue to boot the stock failsafe image.

The stock u-boot environment defines in bootargs as MTD layout as:
	256k(u-boot),64k(u-boot-env),320k(custom),1024k(kernel),4928k(rootfs),15 36k(failsafe),64k(ART)
(the MTD "custom" is only used by the stock firma when upgrading to temporarily store the old config)

When this layout is changed before booting the stock (failsafe) to:
	256k(u-boot),64k(u-boot-env),1344k(kernel),4928k(rootfs),15 36k(failsafe),64k(ART)
then the installed LEDE factory image boots alright (when the u-boot variable "bootcmd" is accordingly set to "bootm 0x9F050000").

The stock installer script (/etc/fwupgrade.sh) calls a few hooks, among those "before-upgrade.sh" if present in the factory image (actually a tar.gz archive), that would allow changing the MTD layout definition in the u-boot environment, but that layout will only take effect after a reboot.

So the question is:
How can the current effective runtime MTD layout used by the kernel be changed ?

Other suggestions are also welcome.
Regards,
-- 
Paul Oranje



More information about the Lede-dev mailing list