ath79: remove 'fakeroot' for Senao devices
By using the same custom kernel header magic
in both OKLI lzma-loader, DTS, and makefile
this hack is not necessary anymore
However, "rootfs" size and checksum
must now be supplied by the factory.bin image
through a script that is accepted by the OEM upgrade script.
This is because Senao OEM scripts assume a squashfs header exists
at the offset for the original "rootfs" partition
which is actually the kernel + rootfs in this implementation,
and takes size value from the header that would be there with hexdump,
but this offset is now the uImage header instead.
This frees up 1 eraseblock
previously used by the "fakeroot" partition
for bypassing the OEM image verification.
Also, these Senao devices with a 'failsafe' partition
and the tar-gz factory.bin platform would otherwise require
flashing the new tar-gz sysupgrade.bin afterward.
So this also prevents having to flash both images
when starting from OEM or 'failsafe'
the OEM upgrade script verifies the header magic numbers,
but only the first two bytes.
Example:
[ "${magic_word_kernel}" = "2705" ] &&
[ "${magic_word_rootfs}" = "7371" -o "${magic_word_rootfs}" = "6873" ] &&
errcode="0"
therefore picked the magic number
0x73714f4b
which is
'sqOK'
Signed-off-by: Michael Pratt <mcpratt@pm.me>
(cherry picked from commit 4a0cc5d4ef)
This commit is contained in:
committed by
Petr Štetiar
parent
1f6ec4b29e
commit
64d845ef02
@@ -15,7 +15,7 @@
|
||||
|
||||
partition@0 {
|
||||
compatible = "openwrt,uimage", "denx,uimage";
|
||||
openwrt,ih-magic = <IH_MAGIC_OKLI>;
|
||||
openwrt,ih-magic = <0x73714f4b>;
|
||||
label = "firmware";
|
||||
reg = <0x0 0x0>;
|
||||
};
|
||||
@@ -64,15 +64,9 @@
|
||||
reg = <0xb0000 0xf0000>;
|
||||
};
|
||||
|
||||
partition@1a0000 {
|
||||
label = "fakeroot";
|
||||
reg = <0x1a0000 0x10000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
fwconcat0: partition@1b0000 {
|
||||
fwconcat0: partition@1a0000 {
|
||||
label = "fwconcat0";
|
||||
reg = <0x1b0000 0x4c0000>;
|
||||
reg = <0x1a0000 0x4d0000>;
|
||||
};
|
||||
|
||||
partition@670000 {
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
partition@0 {
|
||||
compatible = "openwrt,uimage", "denx,uimage";
|
||||
openwrt,ih-magic = <IH_MAGIC_OKLI>;
|
||||
openwrt,ih-magic = <0x73714f4b>;
|
||||
label = "firmware";
|
||||
reg = <0x0 0x0>;
|
||||
};
|
||||
@@ -68,15 +68,9 @@
|
||||
reg = <0x0b0000 0x170000>;
|
||||
};
|
||||
|
||||
partition@220000 {
|
||||
label = "fakeroot";
|
||||
reg = <0x220000 0x010000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
fwconcat0: partition@230000 {
|
||||
fwconcat0: partition@220000 {
|
||||
label = "fwconcat0";
|
||||
reg = <0x230000 0xbc0000>;
|
||||
reg = <0x220000 0xbd0000>;
|
||||
};
|
||||
|
||||
partition@df0000 {
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
partition@0 {
|
||||
compatible = "openwrt,uimage", "denx,uimage";
|
||||
openwrt,ih-magic = <IH_MAGIC_OKLI>;
|
||||
openwrt,ih-magic = <0x73714f4b>;
|
||||
label = "firmware";
|
||||
reg = <0x0 0x0>;
|
||||
};
|
||||
@@ -66,15 +66,9 @@
|
||||
reg = <0x0b0000 0x170000>;
|
||||
};
|
||||
|
||||
partition@220000 {
|
||||
label = "fakeroot";
|
||||
reg = <0x220000 0x010000>;
|
||||
read-only;
|
||||
};
|
||||
|
||||
fwconcat0: partition@230000 {
|
||||
fwconcat0: partition@220000 {
|
||||
label = "fwconcat0";
|
||||
reg = <0x230000 0xb40000>;
|
||||
reg = <0x220000 0xb50000>;
|
||||
};
|
||||
|
||||
partition@d70000 {
|
||||
|
||||
@@ -3,30 +3,37 @@ DEVICE_VARS += SENAO_IMGNAME
|
||||
# This needs to make /tmp/_sys/sysupgrade.tgz an empty file prior to
|
||||
# sysupgrade, as otherwise it will implant the old configuration from
|
||||
# OEM firmware when writing rootfs from factory.bin
|
||||
# rootfs size and checksum is taken from a squashfs header
|
||||
# the header does not exist, therefore, supply the size and md5
|
||||
define Build/senao-tar-gz
|
||||
-[ -f "$@" ] && \
|
||||
mkdir -p $@.tmp && \
|
||||
touch $@.tmp/failsafe.bin && \
|
||||
echo '#!/bin/sh' > $@.tmp/before-upgrade.sh && \
|
||||
echo ': > /tmp/_sys/sysupgrade.tgz' >> $@.tmp/before-upgrade.sh && \
|
||||
echo -n $$(( $$(cat $@ | wc -c) / 4096 * 4096 )) > $@.len && \
|
||||
dd if=$@ bs=$$(cat $@.len) count=1 | md5sum - | cut -d ' ' -f 1 > $@.md5 && \
|
||||
echo '#!/bin/sh' > $@.tmp/after-upgrade.sh && \
|
||||
printf 'fw_setenv rootfs_size 0x%08x\n' $$(cat $@.len) >> $@.tmp/after-upgrade.sh && \
|
||||
printf 'fw_setenv rootfs_checksum %s\n' $$(cat $@.md5) >> $@.tmp/after-upgrade.sh && \
|
||||
$(CP) $(KDIR)/loader-$(DEVICE_NAME).uImage \
|
||||
$@.tmp/openwrt-$(word 1,$(1))-uImage-lzma.bin && \
|
||||
$(CP) $@ $@.tmp/openwrt-$(word 1,$(1))-root.squashfs && \
|
||||
$(TAR) -cp --numeric-owner --owner=0 --group=0 --mode=a-s --sort=name \
|
||||
$(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)") \
|
||||
-C $@.tmp . | gzip -9n > $@ && \
|
||||
rm -rf $@.tmp
|
||||
rm -rf $@.tmp $@.len $@.md5
|
||||
endef
|
||||
|
||||
define Device/senao_loader_okli
|
||||
KERNEL := kernel-bin | append-dtb | lzma | uImage lzma -M 0x4f4b4c49
|
||||
KERNEL := kernel-bin | append-dtb | lzma | uImage lzma -M 0x73714f4b
|
||||
LOADER_KERNEL_MAGIC := 0x73714f4b
|
||||
LOADER_TYPE := bin
|
||||
COMPILE := loader-$(1).bin loader-$(1).uImage
|
||||
COMPILE/loader-$(1).bin := loader-okli-compile
|
||||
COMPILE/loader-$(1).uImage := append-loader-okli $(1) | pad-to 64k | lzma | \
|
||||
uImage lzma
|
||||
IMAGES += factory.bin
|
||||
IMAGE/factory.bin := append-squashfs-fakeroot-be | pad-to $$$$(BLOCKSIZE) | \
|
||||
append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | \
|
||||
IMAGE/factory.bin := append-kernel | pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | \
|
||||
check-size | senao-tar-gz $$$$(SENAO_IMGNAME)
|
||||
endef
|
||||
|
||||
@@ -994,8 +994,8 @@ define Device/engenius_eap1200h
|
||||
DEVICE_VENDOR := EnGenius
|
||||
DEVICE_MODEL := EAP1200H
|
||||
DEVICE_PACKAGES := ath10k-firmware-qca988x-ct kmod-ath10k-ct
|
||||
IMAGE_SIZE := 11520k
|
||||
LOADER_FLASH_OFFS := 0x230000
|
||||
IMAGE_SIZE := 11584k
|
||||
LOADER_FLASH_OFFS := 0x220000
|
||||
SENAO_IMGNAME := ar71xx-generic-eap1200h
|
||||
endef
|
||||
TARGET_DEVICES += engenius_eap1200h
|
||||
@@ -1006,8 +1006,8 @@ define Device/engenius_eap300-v2
|
||||
DEVICE_VENDOR := EnGenius
|
||||
DEVICE_MODEL := EAP300
|
||||
DEVICE_VARIANT := v2
|
||||
IMAGE_SIZE := 12032k
|
||||
LOADER_FLASH_OFFS := 0x230000
|
||||
IMAGE_SIZE := 12096k
|
||||
LOADER_FLASH_OFFS := 0x220000
|
||||
SENAO_IMGNAME := senao-eap300v2
|
||||
endef
|
||||
TARGET_DEVICES += engenius_eap300-v2
|
||||
@@ -1017,8 +1017,8 @@ define Device/engenius_eap600
|
||||
SOC := ar9344
|
||||
DEVICE_VENDOR := EnGenius
|
||||
DEVICE_MODEL := EAP600
|
||||
IMAGE_SIZE := 12032k
|
||||
LOADER_FLASH_OFFS := 0x230000
|
||||
IMAGE_SIZE := 12096k
|
||||
LOADER_FLASH_OFFS := 0x220000
|
||||
SENAO_IMGNAME := senao-eap600
|
||||
endef
|
||||
TARGET_DEVICES += engenius_eap600
|
||||
@@ -1054,8 +1054,8 @@ define Device/engenius_ecb600
|
||||
SOC := ar9344
|
||||
DEVICE_VENDOR := EnGenius
|
||||
DEVICE_MODEL := ECB600
|
||||
IMAGE_SIZE := 12032k
|
||||
LOADER_FLASH_OFFS := 0x230000
|
||||
IMAGE_SIZE := 12096k
|
||||
LOADER_FLASH_OFFS := 0x220000
|
||||
SENAO_IMGNAME := senao-ecb600
|
||||
endef
|
||||
TARGET_DEVICES += engenius_ecb600
|
||||
@@ -1067,8 +1067,8 @@ define Device/engenius_ens202ext-v1
|
||||
DEVICE_MODEL := ENS202EXT
|
||||
DEVICE_VARIANT := v1
|
||||
DEVICE_PACKAGES := rssileds
|
||||
IMAGE_SIZE := 12032k
|
||||
LOADER_FLASH_OFFS := 0x230000
|
||||
IMAGE_SIZE := 12096k
|
||||
LOADER_FLASH_OFFS := 0x220000
|
||||
SENAO_IMGNAME := senao-ens202ext
|
||||
endef
|
||||
TARGET_DEVICES += engenius_ens202ext-v1
|
||||
@@ -1080,8 +1080,8 @@ define Device/engenius_enstationac-v1
|
||||
DEVICE_MODEL := EnStationAC
|
||||
DEVICE_VARIANT := v1
|
||||
DEVICE_PACKAGES := ath10k-firmware-qca988x-ct kmod-ath10k-ct rssileds
|
||||
IMAGE_SIZE := 11520k
|
||||
LOADER_FLASH_OFFS := 0x230000
|
||||
IMAGE_SIZE := 11584k
|
||||
LOADER_FLASH_OFFS := 0x220000
|
||||
SENAO_IMGNAME := ar71xx-generic-enstationac
|
||||
endef
|
||||
TARGET_DEVICES += engenius_enstationac-v1
|
||||
|
||||
@@ -37,8 +37,8 @@ define Device/engenius_eap350-v1
|
||||
DEVICE_VENDOR := EnGenius
|
||||
DEVICE_MODEL := EAP350
|
||||
DEVICE_VARIANT := v1
|
||||
IMAGE_SIZE := 4864k
|
||||
LOADER_FLASH_OFFS := 0x1b0000
|
||||
IMAGE_SIZE := 4928k
|
||||
LOADER_FLASH_OFFS := 0x1a0000
|
||||
SENAO_IMGNAME := senao-eap350
|
||||
endef
|
||||
TARGET_DEVICES += engenius_eap350-v1
|
||||
@@ -49,8 +49,8 @@ define Device/engenius_ecb350-v1
|
||||
DEVICE_VENDOR := EnGenius
|
||||
DEVICE_MODEL := ECB350
|
||||
DEVICE_VARIANT := v1
|
||||
IMAGE_SIZE := 4864k
|
||||
LOADER_FLASH_OFFS := 0x1b0000
|
||||
IMAGE_SIZE := 4928k
|
||||
LOADER_FLASH_OFFS := 0x1a0000
|
||||
SENAO_IMGNAME := senao-ecb350
|
||||
endef
|
||||
TARGET_DEVICES += engenius_ecb350-v1
|
||||
@@ -62,8 +62,8 @@ define Device/engenius_enh202-v1
|
||||
DEVICE_MODEL := ENH202
|
||||
DEVICE_VARIANT := v1
|
||||
DEVICE_PACKAGES := rssileds
|
||||
IMAGE_SIZE := 4864k
|
||||
LOADER_FLASH_OFFS := 0x1b0000
|
||||
IMAGE_SIZE := 4928k
|
||||
LOADER_FLASH_OFFS := 0x1a0000
|
||||
SENAO_IMGNAME := senao-enh202
|
||||
endef
|
||||
TARGET_DEVICES += engenius_enh202-v1
|
||||
|
||||
Reference in New Issue
Block a user