openwrt/target/linux/ipq806x/base-files/lib/upgrade/asrock.sh
Petr Štetiar fc317a190c ipq806x: base-files: asrock: fix bootcount include
Fixes following warning message during image building process:

 Finalizing root filesystem...
 root-ipq806x/lib/upgrade/asrock.sh: line 1: /lib/functions.sh: No such file or directory
 Enabling boot
 root-ipq806x/lib/upgrade/asrock.sh: line 1: /lib/functions.sh: No such file or directory
 Enabling bootcount

Fixes #9350

Fixes: 98b86296e6 ("ipq806x: add support for ASRock G10")
Signed-off-by: Petr Štetiar <ynezz@true.cz>
2022-02-28 15:17:11 +01:00

55 lines
1.5 KiB
Bash

. "$IPKG_INSTROOT/lib/functions.sh"
asrock_bootconfig_mangle() {
local mtdnum="$(find_mtd_index 0:bootconfig)"
if [ -z "$mtdnum" ]; then
echo "cannot find bootconfig mtd partition"
return 1
fi
dd if=/dev/mtd$mtdnum of=/tmp/mtd$mtdnum bs=1k
local partition_byte="$(dd if=/tmp/mtd$mtdnum bs=1 skip=52 count=1)"
local upgrade_byte="$(dd if=/tmp/mtd$mtdnum bs=1 skip=4 count=1)"
if [ $1 = "bootcheck" ]; then
if [ ! -s $upgrade_byte ]; then
dd if=/dev/mtd$mtdnum of=/tmp/mtd$mtdnum bs=1k
printf '\x00' | dd of=/tmp/mtd$mtdnum conv=notrunc bs=1 seek=4
printf '\x00' | dd of=/tmp/mtd$mtdnum conv=notrunc bs=1 seek=56
else
return 1
fi
elif [ $1 = "sysupgrade" ]; then
printf '\x01' | dd of=/tmp/mtd$mtdnum conv=notrunc bs=1 seek=4
printf '\x01' | dd of=/tmp/mtd$mtdnum conv=notrunc bs=1 seek=56
fi
if [ -s $partition_byte ]; then
printf '\x01' | dd of=/tmp/mtd$mtdnum conv=notrunc bs=1 seek=52
else
printf '\x00' | dd of=/tmp/mtd$mtdnum conv=notrunc bs=1 seek=52
fi
mtd write /tmp/mtd$mtdnum /dev/mtd$mtdnum
return 0
}
asrock_upgrade_prepare() {
local ubidev="$( nand_find_ubi ubi )"
#Set upgrade flag. If something goes wrong, router will boot with
#factory firmware.
asrock_bootconfig_mangle 'sysupgrade'
if [ $? -ne 0 ]; then
echo "cannot find bootconfig mtd partition"
exit 1
fi
# Just delete these partitions if present and use
# OpenWrt's standard names for those.
ubirmvol /dev/$ubidev -N ubi_rootfs &> /dev/null || true
ubirmvol /dev/$ubidev -N ubi_rootfs_data &> /dev/null || true
}