blob: e9268cf6d2394247c09cf5d3262b6dd732bcc046 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
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
}
|