[openwrt/openwrt] realtek: build ZyXEL vendor firmware compatible initramfs
LEDE Commits
lede-commits at lists.infradead.org
Sun Jan 24 12:12:51 EST 2021
ynezz pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/1fb413e6579a34a0040b526e681298909dfaa5ac
commit 1fb413e6579a34a0040b526e681298909dfaa5ac
Author: Bjørn Mork <bjorn at mork.no>
AuthorDate: Sat Jan 23 11:08:12 2021 +0100
realtek: build ZyXEL vendor firmware compatible initramfs
Append a device specific version trailer used by the stock
firmware upgrade application to validate firmwares.
The trailer contains a list of ZyXEL firmware version
numbers, which includes a four letter hardware identifier.
The stock web UI requires that the current hardware matches
one of the listed versions, and that the version number is
larger than a model specific minimum value. The minimum
version varies between V1.00 and V2.60 for the currently
known GS1900 models. The number is not used anywhere else
to our knowlege, and has no direct relation to the version
info in the u-image header. We can therefore use an
arbitrary value larger than V2.60.
The stock firmware upgrade application will only load and
flash the part of the file specified in the u-image header,
regardless of file size. It can therefore not be used to
flash images with an appended rootfs. There is therefore no
need to include the trailer in other images than the
initramfs. This prevents accidentally bricking by attempts
to flash other images from the stock web UI.
Stock images support all models in the series, listing
all of them in the version trailer. OpenWrt provide model
specific images. We therefore only list the single supported
hardware identifier for each image. This eliminates the risk
of flashing the wrong OpenWrt image from stock web UI.
OpenWrt can be installed from stock firmware in two steps:
1) flash OpenWrt initramfs image from stock web gui
2) boot OpenWrt and sysupgrade to a squasfs image
The OpenWrt squashfs image depends on a static partition
map in the DTS. It can only be installed to the "firmware"
partition. This partition is labeled "RUNTIME1" in u-boot
and in stock firmware, and is referred to as "image 0" in
the stock flash management tool. The OpenWrt initramfs
can be installed and run from either partitions. But if
you want to keep stock irmware in the spare system partition,
then you must make sure stock firmware is installed to the
"RUNTIME2" partition referred to as "image 1" in the stock
web UI. And the initial OpenWrt initramfs must be flashed
to "RUNTIME1"/"image 0".
The stock flash management application supports direct
selection of both which partition to flash and which
partition to boot next. This allows software controlled
"dual-boot" between OpenWrt and stock firmware, without
using console access to u-boot. u-boot use the "bootpartition"
variable stored in the second u-boot environment to select
which of the two system partitions to boot. This variable
is set by the stock flash management application, by direct
user input. It can also be set in OpenWrt using e.g
fw_setsys bootpartition 1
to select "RUNTIME2"/"image 1" as default, assuming a
stock firmware version is installed in that partition.
Signed-off-by: Bjørn Mork <bjorn at mork.no>
---
target/linux/realtek/image/Makefile | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/target/linux/realtek/image/Makefile b/target/linux/realtek/image/Makefile
index c05c504ec4..8ad7ad1b5d 100644
--- a/target/linux/realtek/image/Makefile
+++ b/target/linux/realtek/image/Makefile
@@ -7,6 +7,14 @@ include $(INCLUDE_DIR)/image.mk
KERNEL_LOADADDR = 0x80000000
KERNEL_ENTRY = 0x80000400
+define Build/zyxel-vers
+ ( echo VERS;\
+ for hw in $(1); do\
+ echo -n "V9.99($$hw.0) | ";\
+ date -d @$(SOURCE_DATE_EPOCH) +%m/%d/%Y;\
+ done ) >> $@
+endef
+
define Device/Default
PROFILES = Default
KERNEL := kernel-bin | append-dtb | gzip | uImage gzip
@@ -70,6 +78,7 @@ define Device/zyxel_gs1900-10hp
DEVICE_VENDOR := ZyXEL
DEVICE_MODEL := GS1900-10HP
UIMAGE_MAGIC := 0x83800000
+ KERNEL_INITRAMFS := kernel-bin | append-dtb | gzip | zyxel-vers AAZI | uImage gzip
endef
TARGET_DEVICES += zyxel_gs1900-10hp
@@ -81,6 +90,7 @@ define Device/zyxel_gs1900-8hp-v1
DEVICE_VARIANT := v1
DEVICE_PACKAGES += lua-rs232
UIMAGE_MAGIC := 0x83800000
+ KERNEL_INITRAMFS := kernel-bin | append-dtb | gzip | zyxel-vers AAHI | uImage gzip
endef
TARGET_DEVICES += zyxel_gs1900-8hp-v1
@@ -92,6 +102,7 @@ define Device/zyxel_gs1900-8hp-v2
DEVICE_VARIANT := v2
DEVICE_PACKAGES += lua-rs232
UIMAGE_MAGIC := 0x83800000
+ KERNEL_INITRAMFS := kernel-bin | append-dtb | gzip | zyxel-vers AAHI | uImage gzip
endef
TARGET_DEVICES += zyxel_gs1900-8hp-v2
More information about the lede-commits
mailing list