mirror of
https://github.com/hzyitc/openwrt-redmi-ax3000.git
synced 2025-12-17 17:03:27 +00:00
mediatek: filogic: wax220: support factory image
Enable building a factory image which can be flashed through the OEM
firmware's web interface. It seems that the web interface requires a
minimum file size of 10MiB, otherwise it will not accept the image.
The update image is a regular sysupgrade tarball packed in a Netgear
encrypted image. The Netgear encrypted image is the same as used in
WAX202 or WAX206, including the encryption keys and IV.
This adds a script which creates the rootfs_data volume on first
startup. This is required since the OEM firmware's sysupgrade scripts
do not create such a paritition. Note that any script ordered after
70_initramfs_test will not get executed on initramfs. Hence this new
script 75_rootfs_prepare won't create the rootfs_data volume when
using the recovery initramfs.
Also, this deletes the kernel_backup and rootfs_backup volumes in case
we have to create the rootfs_data volumes. This makes sure that
OpenWrt is the actual backup firmware instead of the stock firmware.
References in WAX220 GPL source:
https://www.downloads.netgear.com/files/GPL/WAX220-V1.0.2.8-gpl-src.tar.gz
* package/base-files/files/lib/upgrade/nand.sh:186
Creation of rootfs_data is disabled
* Uboot-upstream/board/mediatek/common/ubi_helper.c
Automatic creation of UBI backup volumes
Signed-off-by: Stefan Agner <stefan@agner.ch>
(cherry picked from commit fa9d977f97)
This commit is contained in:
parent
99d9519bac
commit
16aecc12c2
@ -0,0 +1,35 @@
|
|||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later OR BSD-2-Clause
|
||||||
|
|
||||||
|
rootfs_create() {
|
||||||
|
local blocks
|
||||||
|
|
||||||
|
blocks=$(cat /sys/class/ubi/ubi0/avail_eraseblocks)
|
||||||
|
[ -z "$blocks" ] && {
|
||||||
|
echo "Failed to read amount of available erase blocks" >&2
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
# Delete after getting available blocks: Make sure enough space is
|
||||||
|
# left to recreate these volumes.
|
||||||
|
ubirmvol /dev/ubi0 -N kernel_backup
|
||||||
|
ubirmvol /dev/ubi0 -N rootfs_backup
|
||||||
|
|
||||||
|
# Use 90% of remaining flash size for "rootfs_data"
|
||||||
|
ubimkvol /dev/ubi0 -n 20 -N rootfs_data --lebs $((blocks / 100 * 90))
|
||||||
|
mknod -m 0600 /dev/ubi0_20 c 250 21
|
||||||
|
}
|
||||||
|
|
||||||
|
rootfs_prepare() {
|
||||||
|
case $(board_name) in
|
||||||
|
netgear,wax220)
|
||||||
|
if ! ubinfo /dev/ubi0 -N rootfs_data &>/dev/null; then
|
||||||
|
echo "Creating \"rootfs_data\" UBI volume"
|
||||||
|
rootfs_create
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
boot_hook_add preinit_main rootfs_prepare
|
||||||
@ -225,18 +225,20 @@ endef
|
|||||||
TARGET_DEVICES += h3c_magic-nx30-pro
|
TARGET_DEVICES += h3c_magic-nx30-pro
|
||||||
|
|
||||||
define Device/netgear_wax220
|
define Device/netgear_wax220
|
||||||
DEVICE_VENDOR := Netgear
|
DEVICE_VENDOR := NETGEAR
|
||||||
DEVICE_MODEL := WAX220
|
DEVICE_MODEL := WAX220
|
||||||
DEVICE_DTS := mt7986b-netgear-wax220
|
DEVICE_DTS := mt7986b-netgear-wax220
|
||||||
DEVICE_DTS_DIR := ../dts
|
DEVICE_DTS_DIR := ../dts
|
||||||
|
NETGEAR_ENC_MODEL := WAX220
|
||||||
|
NETGEAR_ENC_REGION := US
|
||||||
DEVICE_PACKAGES := kmod-mt7986-firmware mt7986-wo-firmware
|
DEVICE_PACKAGES := kmod-mt7986-firmware mt7986-wo-firmware
|
||||||
IMAGES := sysupgrade.bin
|
KERNEL_INITRAMFS_SUFFIX := -recovery.itb
|
||||||
KERNEL_IN_UBI := 1
|
IMAGE_SIZE := 32768k
|
||||||
KERNEL := kernel-bin | lzma | \
|
|
||||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb
|
|
||||||
KERNEL_INITRAMFS := kernel-bin | lzma | \
|
|
||||||
fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb with-initrd | pad-to 64k
|
|
||||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||||
|
IMAGES += factory.img
|
||||||
|
# Padding to 10M seems to be required by OEM web interface
|
||||||
|
IMAGE/factory.img := sysupgrade-tar | \
|
||||||
|
pad-to 10M | check-size | netgear-encrypted-factory
|
||||||
endef
|
endef
|
||||||
TARGET_DEVICES += netgear_wax220
|
TARGET_DEVICES += netgear_wax220
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user