ath79: mikrotik: check RouterBOOT version matching sysupgrade image
Some checks failed
Build Kernel / Build all affected Kernels (push) Waiting to run
Build all core packages / Build all core packages for selected target (push) Waiting to run
Build host tools / Build host tools for linux and macos based systems (push) Waiting to run
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled

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 PART_NAME=firmware
REQUIRE_IMAGE_METADATA=1 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() { 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 return 0
} }