REQUIRE_IMAGE_METADATA=1
MTDSYSFS=/sys/class/mtd
-gemini_do_platform_upgrade() {
+gemini_check_redboot_parts() {
MTD1OF=`cat ${MTDSYSFS}/mtd1/offset`
MTD2OF=`cat ${MTDSYSFS}/mtd2/offset`
MTD3OF=`cat ${MTDSYSFS}/mtd3/offset`
echo "MTD3 has wrong name, aborting" >&2
exit 1
fi
+}
+
+gemini_do_platform_upgrade() {
echo "Extract the three firmware parts"
- tar xvfz "$1"; rm "$1"
- sync
echo 3 > /proc/sys/vm/drop_caches
echo "COMMENCING UPGRADE. BE PATIENT, THIS IS NOT FAST!"
- echo "Upgrade Kern partition (kernel part 1, $2 erase blocks)"
- mtd write zImage Kern
+ KFSZ=$(tar xfz "$1" zImage -O | wc -c)
+ echo "Upgrade Kern partition (kernel part 1, size ${KFSZ})"
+ tar xfz "$1" zImage -O | mtd write - Kern
[ $? -ne 0 ] && exit 1
- echo "Upgrade Ramdisk partition (kernel part 2, $3 erase blocks)"
- mtd write rd.gz Ramdisk
+ RFSZ=$(tar xfz "$1" rd.gz -O | wc -c)
+ echo "Upgrade Ramdisk partition (kernel part 2, size ${RFSZ})"
+ tar xfz "$1" rd.gz -O | mtd write - Ramdisk
[ $? -ne 0 ] && exit 1
- echo "Upgrade Application partition (rootfs, $4 erase blocks)"
- mtd write hddapp.tgz Application
+ AFSZ=$(tar xfz "$1" hddapp.tgz -O | wc -c)
+ echo "Upgrade Application partition (rootfs, size ${AFSZ})"
+ tar xfz "$1" hddapp.tgz -O | mtd write - Application
[ $? -ne 0 ] && exit 1
}
;;
itian,sq201|\
storlink,gemini324)
- gemini_do_platform_upgrade "$1" 16 48 48
+ gemini_check_redboot_parts "$1" 16 48 48
+ gemini_do_platform_upgrade "$1"
;;
raidsonic,ib-4220-b)
- gemini_do_platform_upgrade "$1" 24 48 48
+ gemini_check_redboot_parts "$1" 24 48 48
+ gemini_do_platform_upgrade "$1"
;;
esac
}