updata.sh
4.0 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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
#! /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 "____更新步骤____"
# u3和u3d增加一个移库步骤,用于适配新的音频库
if [ ! -d " /home/audio/alsa-lib_output/share/alsa" ]; then
echo "新音频库 alsa 文件夹不存在,正在创建..."
mkdir /home
mkdir /home/audio
mkdir /home/audio/alsa-lib_output
mkdir /home/audio/alsa-lib_output/share
mkdir /home/audio/alsa-lib_output/share/alsa
echo "alsa 文件夹已创建"
cp /usr/share/alsa/alsa.conf /home/audio/alsa-lib_output/share/alsa/
echo "alsa.conf 文件已复制"
echo "____解除静音____"
amixer sset -c 0 'Headphone' 30% unmute
else
echo "alsa 文件夹已存在"
fi
#1、更新app
mv /root/Package/app/ffmpeg /bin/ #将滤波器移动到bin目录
mv /root/Package/app/ffprobe /bin/ #将app移动到usr/bin目录
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____";