@ -1,11 +1,10 @@
linksys_get_target_firmware( ) {
linksys_get_target_firmware( ) {
local cur_boot_part mtd_ubi0
local cur_boot_part mtd_ubi0
cur_boot_part = $( /usr/sbin/fw_printenv -n boot_part)
cur_boot_part = " $( /usr/sbin/fw_printenv -n boot_part) "
if [ -z " ${ cur_boot_part } " ] ; then
if [ -z " ${ cur_boot_part } " ] ; then
mtd_ubi0 = $( cat /sys/devices/virtual/ubi/ubi0/mtd_num)
mtd_ubi0 = $( cat /sys/devices/virtual/ubi/ubi0/mtd_num)
case $( e grep " ^mtd ${ mtd_ubi0 } : " /proc/mtd | cut -d '"' -f 2) in
case " $( grep -E " ^mtd ${ mtd_ubi0 } : " /proc/mtd | cut -d '"' -f 2) " in
kernel| rootfs)
kernel| rootfs)
cur_boot_part = 1
cur_boot_part = 1
; ;
; ;
@ -25,7 +24,7 @@ linksys_get_target_firmware() {
# else run bootpart2;
# else run bootpart2;
# fi
# fi
case $cur_boot_part in
case " $cur_boot_part " in
1)
1)
fw_setenv -s - <<-EOF
fw_setenv -s - <<-EOF
boot_part 2
boot_part 2
@ -55,16 +54,19 @@ linksys_get_root_magic() {
platform_do_upgrade_linksys( ) {
platform_do_upgrade_linksys( ) {
local magic_long = " $( get_magic_long " $1 " ) "
local magic_long = " $( get_magic_long " $1 " ) "
local rm_oem_fw_vols = "squashfs ubifs" # from OEM [alt_]rootfs UBI
local vol
mkdir -p /var/lock
mkdir -p /var/lock
local part_label = " $( linksys_get_target_firmware) "
local part_label = " $( linksys_get_target_firmware) "
touch /var/lock/fw_printenv.lock
touch /var/lock/fw_printenv.lock
if [ ! -n " $part_label " ] ; then
if [ -z " $part_label " ] ; then
echo "cannot find target partition"
echo "cannot find target partition"
exit 1
exit 1
fi
fi
local target_mtd = $( find_mtd_part $part_label )
local target_mtd = $( find_mtd_part " $part_label " )
[ " $magic_long " = "73797375" ] && {
[ " $magic_long " = "73797375" ] && {
CI_KERNPART = " $part_label "
CI_KERNPART = " $part_label "
@ -74,47 +76,47 @@ platform_do_upgrade_linksys() {
CI_UBIPART = "alt_rootfs"
CI_UBIPART = "alt_rootfs"
fi
fi
# remove "squashfs" vol (in case we are flashing over a stock image, which is also UBI)
local mtdnum = " $( find_mtd_index " $CI_UBIPART " ) "
local mtdnum = " $( find_mtd_index " $CI_UBIPART " ) "
if [ ! " $mtdnum " ] ; then
if [ ! " $mtdnum " ] ; then
echo " cannot find ubi mtd partition $CI_UBIPART "
echo " cannot find ubi mtd partition $CI_UBIPART "
return 1
return 1
fi
fi
local ubidev = " $( nand_find_ubi " $CI_UBIPART " ) "
local ubidev = " $( nand_find_ubi " $CI_UBIPART " ) "
if [ ! " $ubidev " ] ; then
if [ ! " $ubidev " ] ; then
ubiattach -m " $mtdnum "
ubiattach -m " $mtdnum "
sync
sync
ubidev = " $( nand_find_ubi " $CI_UBIPART " ) "
ubidev = " $( nand_find_ubi " $CI_UBIPART " ) "
fi
fi
if [ " $ubidev " ] ; then
if [ " $ubidev " ] ; then
local squash_ubivol = " $( nand_find_volume $ubidev squashfs ) "
for vol in $rm_oem_fw_vols ; do
# kill volume
ubirmvol " /dev/ $ubidev " -N " $vol " 2>/dev/null
[ " $squash_ubivol " ] && ubirmvol /dev/$ubidev -N squashfs || true
done
fi
fi
# complete std upgrade
# complete std upgrade
nand_upgrade_tar " $1 "
nand_upgrade_tar " $1 "
}
}
[ " $magic_long " = "27051956" ] && {
[ " $magic_long " = "27051956" ] && {
# This magic is for a uImage (which is a sysupgrade image)
# This magic is for a uImage (which is a sysupgrade image)
# check firmwares' rootfs types
# check firmwares' rootfs types
local oldroot = " $( linksys_get_root_magic $target_mtd ) "
local oldroot = " $( linksys_get_root_magic " $target_mtd " ) "
local newroot = " $( linksys_get_root_magic " $1 " ) "
local newroot = " $( linksys_get_root_magic " $1 " ) "
if [ " $newroot " = "55424923" -a " $oldroot " = "55424923" ] ; then
if [ " $newroot " = "55424923" ] && [ " $oldroot " = "55424923" ] ; then
# we're upgrading from a firmware with UBI to one with UBI
# we're upgrading from a firmware with UBI to one with UBI
# erase everything to be safe
# erase everything to be safe
# - Is that really needed? Won't remove (or comment) the if, because it may be needed in a future device.
# - Is that really needed? Won't remove (or comment) the if,
# because it may be needed in a future device.
#mtd erase $part_label
#mtd erase $part_label
#get_image "$1" | mtd -n write - $part_label
#get_image "$1" | mtd -n write - $part_label
echo " writing \" $1 \" UBI image to \" $part_label \" (UBI)... "
echo " writing \" $1 \" UBI image to \" $part_label \" (UBI)... "
get_image " $1 " | mtd write - $part_label
get_image " $1 " | mtd write - " $part_label "
else
else
echo " writing \" $1 \" image to \" $part_label \" "
echo " writing \" $1 \" image to \" $part_label \" "
get_image " $1 " | mtd write - $part_label
get_image " $1 " | mtd write - " $part_label "
fi
fi
}
}
}
}