2cac31223d
On Mikrotik SPI NOR devices, the firmware partition must be erased when flashing from stock firmware, otherwise leftover bits (in particular a kernel signature) can trigger a boot loop. When booted from initramfs (the only way to install OpenWRT on these devices), this patch unconditionally erases the firmware partition in the do_upgrade() stage for all supported SPI NOR devices. This is forward-ported fromed49d0876
and20452a8db
Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
48 lines
1018 B
Bash
48 lines
1018 B
Bash
# Copyright (C) 2011 OpenWrt.org
|
|
|
|
PART_NAME=firmware
|
|
|
|
REQUIRE_IMAGE_METADATA=1
|
|
platform_check_image() {
|
|
return 0
|
|
}
|
|
|
|
RAMFS_COPY_BIN='fw_printenv fw_setenv nandwrite'
|
|
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
|
|
|
|
platform_do_upgrade_mikrotik_nand() {
|
|
CI_KERNPART=none
|
|
|
|
local fw_mtd=$(find_mtd_part kernel)
|
|
fw_mtd="${fw_mtd/block/}"
|
|
[ -n "$fw_mtd" ] || return
|
|
|
|
local board_dir=$(tar tf "$1" | grep -m 1 '^sysupgrade-.*/$')
|
|
board_dir=${board_dir%/}
|
|
[ -n "$board_dir" ] || return
|
|
|
|
mtd erase kernel
|
|
tar xf "$1" ${board_dir}/kernel -O | nandwrite -o "$fw_mtd" -
|
|
|
|
nand_do_upgrade "$1"
|
|
}
|
|
|
|
platform_do_upgrade() {
|
|
local board=$(board_name)
|
|
|
|
case "$board" in
|
|
mikrotik,routerboard-493g|\
|
|
mikrotik,routerboard-921gs-5hpacd-15s|\
|
|
mikrotik,routerboard-922uags-5hpacd|\
|
|
mikrotik,routerboard-sxt-5nd-r2)
|
|
platform_do_upgrade_mikrotik_nand "$1"
|
|
;;
|
|
*)
|
|
# NOR devices: erase firmware if booted from initramfs
|
|
[ -z "$(rootfs_type)" ] && mtd erase firmware
|
|
|
|
default_do_upgrade "$1"
|
|
;;
|
|
esac
|
|
}
|