updata.sh
3.2 KB
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#! /bin/bash
echo "updata.sh"
Update_PsdkPack="JZ*"
Update_Package="Package"
HardwareIdentification="HardwareIdeNum" #硬件码文件
TarPackage_second=UpgradePackage.tar.gz #二次解压包的名字
MD5saveFile=UpdateMD5num #md5文件内部的md5值文件
#得到二次解压包和md5校验文件
# 校验mp5 失败直接删除
# 获取文件的md5值
md5_File="$(md5sum "${TarPackage_second}" | cut -d ' ' -f 1)"
echo 文件的md5为:$md5_File
# 读取文件第一行并删除不可见字符
md5_save=$(sed '1s/[^[:print:]]//g' "$MD5saveFile")
echo 读取的md5为:$md5_save
# 比较md5值是否匹配
if [ "$md5_File" == "$md5_save" ]; then
echo "MD5 matches: $md5_File"
else
delete_updateFile; #删除更新文件
#mkdir /root/sdcard/MP5校验失败;
rm /root/sdcard/update_log.txt
echo "MP5校验失败" > /root/sdcard/update_log.txt
# 播报升级失败
./defeat;
exit;
fi
# 二次解压
tar -zxvf $TarPackage_second;
#标准更新
# 定义一个名为 HardwareNum 的数组
declare -a HardwareNum
echo "___识别更新用的序列号,判断该机器是否能够更新____"
# 补充添加
# 添加硬件区分
# 硬件版本号 4位
# ① 芯片型号
# ② 硬件大型改动
# ③ 硬件非通用改动
# ④ 通用改动
#1、读取硬件号
if [ ! -f /root/${HardwareIdentification} ]; then
echo "____硬件序列号不存在___"
else
# 逐行读取文件,将每一行内容保存到数组中
while read line; do
HardwareNum+=("$line")
done < /root/${HardwareIdentification}
# 打印数组的每个元素
for i in "${HardwareNum[@]}"; do
echo "$i"
done
fi
echo "____更新步骤____"
mv /root/Package/app/* /root/ #如h1start h1error等报语音程序
#2、更新配置文件
cp /root/Package/config/* /root/ #将logger.yaml移动到/root
#3、更新lib文件
mv /root/Package/lib/* /lib/ #更新lib文件
#4、更新psdk
mv /root/Package/psdk/* /root/ #更新psdk
#5、更新驱动文件kofile
mkdir /root/kofile
mv /root/Package/kofile/*.ko /root/kofile #更新ko驱动文件
#6、更新杂项
mv /root/Package/others/* /root/ #将others下的所有文件移动到root
tar xvf /root/espeak-data.tar #如果本地有海外版的压缩包 进行解压
rm /root/espeak-data.tar
#7、更新脚本文件
# 备注,由于脚本文件是执行一行行的格式 自身被覆盖不会导致出错
# 但是后续的执行后会被改变,所以即使updata.sh和up.sh被打开 也能执行mv
# 但是为了保证更新正常, up.sh的操作 最好只加不改
mv /root/Package/sh/*.sh /root/ #更新剩下的脚本
#8、更新启动文件
mv /root/Package/ProFile/profile /etc/profile #更新启动文件
mv /root/Package/ProFile/asound.conf /etc/asound.conf #更新语音配置
rm /usr/sbin/NetworkManager #删除linux上的网络管理工具
echo "____更新完成,删除文件____"
rm -rf /root/sdcard/$Update_PsdkPack #删除psdk更新包
rm -rf /root/$Update_Package #删除解压后的更新包
rm -rf /root/$TarPackage_second #删除二次更新包
rm -rf /root/$MD5saveFile; #删除md5校准文件
rm -rf /root/FactoryReset.sh
echo "___updata.sh____";