ath79: mikrotik: check RouterBOOT version matching sysupgrade image

Check if the uploaded image matches the version of RouterBOOT before
proceeding with sysupgrade on MikroTik devices with NOR flash.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
This commit is contained in:
Daniel Golle 2025-09-23 17:44:35 +01:00
parent 502e6253a1
commit 318f07c231

View File

@ -3,7 +3,48 @@
PART_NAME=firmware
REQUIRE_IMAGE_METADATA=1
platform_check_image_mikrotik_nor() {
local bootfwver bootfwmajor
local bootentry="$(dd bs=10 skip=1 count=1 if="$1" 2>/dev/null | xargs -0)"
read -r bootfwver < /sys/firmware/mikrotik/hard_config/booter_version
bootfwmajor="${bootfwver%%.*}"
if [ "$((bootfwmajor))" = 0 ]; then
v "invalid RouterBOOT version"
return 1
elif [ "$bootfwmajor" -le 6 ] && [ "$bootentry" != "kernel" ]; then
v "RouterBOOT 6 and earlier requires ELF-in-YAFFS image"
return 1
elif [ "$bootfwmajor" -ge 7 ] && [ "$bootentry" != "bootimage" ]; then
v "RouterBOOT 7 and later requires NPK-in-YAFFS image"
return 1
fi
return 0
}
platform_check_image() {
case "$board" in
mikrotik,routerboard-2011uias-2hnd|\
mikrotik,routerboard-493g|\
mikrotik,routerboard-911g-5hpacd|\
mikrotik,routerboard-911g-xhpnd|\
mikrotik,routerboard-912uag-2hpnd|\
mikrotik,routerboard-921gs-5hpacd-15s|\
mikrotik,routerboard-922uags-5hpacd|\
mikrotik,routerboard-951g-2hnd|\
mikrotik,routerboard-951ui-2hnd|\
mikrotik,routerboard-sxt-5nd-r2)
return 0
;;
*)
platform_check_image_mikrotik_nor "$1"
return $?
;;
esac
return 0
}