X-Git-Url: https://git.archive.openwrt.org/?p=openwrt.git;a=blobdiff_plain;f=target%2Flinux%2Fsocfpga%2Fbase-files%2Flib%2Fupgrade%2Fsockit.sh;fp=target%2Flinux%2Fsocfpga%2Fbase-files%2Flib%2Fupgrade%2Fsockit.sh;h=e9268cf6d2394247c09cf5d3262b6dd732bcc046;hp=0000000000000000000000000000000000000000;hb=312f610ef747b095fd4de7603a3d55ae1f0f2df1;hpb=317f8a56f76bbd079fda61d7e7feff8f7bd4abdd diff --git a/target/linux/socfpga/base-files/lib/upgrade/sockit.sh b/target/linux/socfpga/base-files/lib/upgrade/sockit.sh new file mode 100644 index 0000000000..e9268cf6d2 --- /dev/null +++ b/target/linux/socfpga/base-files/lib/upgrade/sockit.sh @@ -0,0 +1,88 @@ +# +# Copyright (C) 2014-2015 OpenWrt.org +# + +BOOTPART=/dev/mmcblk0p2 +CFGPART=/dev/mmcblk0p3 + +identify_magic() { + local magic=$1 + case "$magic" in + "55424923") + echo "ubi" + ;; + "31181006") + echo "ubifs" + ;; + "68737173") + echo "squashfs" + ;; + "d00dfeed") + echo "fit" + ;; + "00000000") + echo "ext4" + ;; + "4349"*) + echo "combined" + ;; + *) + echo "unknown $magic" + ;; + esac +} + +get_magic_long_tar() { + ( tar xf $1 $2 -O | dd bs=4 count=1 | hexdump -v -n 4 -e '1/1 "%02x"') 2> /dev/null +} + +identify_tar() { + identify_magic $(get_magic_long_tar "$1" "$2") +} + +platform_do_check_sockit() { + local board=$(socfpga_board_name) + local magic_long="$(get_magic_long "$1")" + echo "magic = $magic_long" + + if [ "$magic_long" = "73797375" ] ; then + local rootfs_type="$(identify_tar "$1" sysupgrade-$board/root)" + if [ "$rootfs_type" = "ubifs" ] ; then + nand_do_platform_check $board $1 + return 0; + fi + [ "$rootfs_type" = "ext4" ] && return 0 + + echo "Unknown rootfs type $rootfs_type !" + fi + + return 1 +} + +platform_do_upgrade_sockit() { + local board=$(socfpga_board_name) + local magic_long="$(get_magic_long "$1")" + echo "magic = $magic_long" + + if [ "$magic_long" = "73797375" ] ; then + local rootfs_type="$(identify_tar "$1" sysupgrade-$board/root)" + if [ "$rootfs_type" = "ext4" ] ; then + sync + tar xf "$1" sysupgrade-$board/root -O | \ + dd of="$BOOTPART" bs=512 conv=fsync + return 0 + fi + + echo "Unknown rootfs type $rootfs_type !" + fi + + return 1 +} + +platform_copy_config() { + if [ -b "$CFGPART" ]; then + mount -o rw,noatime "$CFGPART" /mnt + cp -af "$CONF_TAR" /mnt/ + umount /mnt + fi +}