forked from mofeng-git/One-KVM
-
Notifications
You must be signed in to change notification settings - Fork 0
/
install.sh
executable file
·146 lines (127 loc) · 4.67 KB
/
install.sh
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
137
138
139
140
141
142
143
144
145
146
#!/bin/bash
ARCH=$(uname -m)
MACHINE=$(uname -o -s -r -m)
PYVER=$(python3 -V)
CURRENTWD=$PWD
FIND_FILE="/etc/sudoers"
FIND_STR="short_press_gpio420"
#检查架构和Python版本
check-environment(){
echo -e "\e[0;32m设备名称:$MACHINE\nPython版本:$PYVER\e[0;37m"
if [ARCH!="armv7l"];then
echo -e "\e[0;31m暂不支持$MACHINE架构以外的设备!\n退出脚本!\e[0;37m"
exit
fi
if [[ "$PYVER" != *"3.10"* && $(which python3.10) != *"python"* ]]; then
echo -e "\e[0;31m您似乎没有安装 Python 3.10!\n退出脚本!\e[0;37m"
exit
else
update-alternative
fi
}
#使用Python3.10版本
update-alternative(){
counter=2
for i in {1..9}
do
bindir=$(which python3.$i)
if [[ $bindir == *"bin"* ]]; then
echo $i $bindir
update-alternatives --install /usr/bin/python3 python3 $bindir $counter
let counter++
fi
done
update-alternatives --install /usr/bin/python3 python3 $(which python3.10) 1
update-alternatives --set python3 $(which python3.10)
}
#删除SSL证书
delete-ssl(){
if [ -f "/etc/kvmd/nginx/ssl/server.crt" ] || [ -f "/etc/kvmd/nginx/ssl/server.key" ]; then
echo -e "\e[0;30m正在删除SSL证书!\e[0;37m"
rm /etc/kvmd/nginx/ssl/server.crt
rm /etc/kvmd/nginx/ssl/server.key
fi
}
#修改设备树文件
change-device-tree(){
cp -f./patch/meson8b-onecloud.dtb /boot/dtb/meson8b-onecloud.dtb
echo "设备树文件覆盖成功!"
}
#覆盖引导分区
override-uboot(){
echo -e "\e[0;31m是否选择跳过按下重置键时的玩客云USB线刷检测?(\e[1;31mY/\e[1;32mN\e[0;31m)\e[0;37m"
read USERYN
case $USERYN in
N | n)
gzip -dc ./patch/Boot_SkipUSBBurning.gz | dd of=/dev/mmcblk1
echo -e "\e[0;30m覆盖引导成功!\e[0;37m"
;;
*)
echo -e "\e[0;30m已跳过覆盖UBoot分区!\e[0;37m"
;;
esac
}
#安装依赖软件
install-dependencies(){
bash <(curl -sSL https://gitee.com/SuperManito/LinuxMirrors/raw/main/ChangeMirrors.sh) --source mirrors.tuna.tsinghua.edu.cn --updata-software false --web-protocol http && echo "换源成功!"
echo "正在安装依赖软件nginx tesseract-ocr tesseract-ocr-eng janus libevent-dev libgpiod-dev tesseract-ocr-chi-sim......"
apt install -y nginx tesseract-ocr tesseract-ocr-eng janus libevent-dev libgpiod-dev tesseract-ocr-chi-sim >> ./log.txt
}
#安装PiKVM
install-pikvm(){
delete-ssl
echo "正在安装PiKVM......"
dpkg -i ./fruity-pikvm_0.2_armhf.deb >> ./log.txt
systemctl enable kvmd-vnc
echo "PiKVM安装成功!"
cd $CURRENTWD
cp -f ./patch/long_press_gpio420 /usr/bin && cp -f ./patch/short_press_gpio420 /usr/bin
chmod +x /usr/bin/long_press_gpio420 && chmod +x /usr/bin/short_press_gpio420
echo "GPIO-420脚本移动成功!"
#此处还要屏蔽hw.py温度获取报错
cp -f ./patch/hw.py /usr/local/lib/python3.10/kvmd-packages/kvmd/apps/kvmd/info/
chmod +x /usr/local/lib/python3.10/kvmd-packages/kvmd/apps/kvmd/info/hw.py
cp -f ./config/main.yaml /etc/kvmd/ && cp -f ./config/override.yaml /etc/kvmd/
echo "配置文件替换成功!"
kvmd -m >> ./log.txt
}
#应用补丁
add-patches(){
if [ -f `grep -c "$FIND_STR" $FIND_FILE` -ne '1' ]; then
echo kvmd ALL=\(ALL\) NOPASSWD: /usr/bin/long_press_gpio420,/usr/bin/short_press_gpio420 >> /etc/sudoers
fi
if[ ! -f /usr/local/lib/python3.10/kvmd-packages/3.198msd.patch ];then
cd $CURRENTWD
cp ./patch/3.198msd.patch /usr/local/lib/python3.10/kvmd-packages/ && cd /usr/local/lib/python3.10/kvmd-packages/ && patch -s -p0 < 3.198msd.patch
echo "MSD补丁应用成功!"
fi
if[ ! -f /usr/local/lib/python3.10/kvmd-packages/chinese.patch ];then
cd $CURRENTWD
cp./patch/chinese.patch /usr/share/kvmd/web/ && cd /usr/share/kvmd/web/ && patch -s -p0 < chinese.patch
echo "中文补丁应用成功!"
else
#此处还要先恢复中文补丁再应用新补丁
echo "中文补丁应用成功!"
fi
echo -e "ENABLE=true\nMIN_SPEED=1536000\nMAX_SPEED=1536000\nGOVERNOR=performance" > /etc/default/cpufrequtils
service cpufrequtils restart
}
show-info(){
echo "One-KVM V0.5" >> installed.txt
ipaddr=`ip addr | grep "scope global" | awk '{print $2}' |awk -F/ '{print $1}'`
echo -e "内网访问地址为:\nhttp://$ipaddr\nhttps://$ipaddr"
echo "机器已重启,等待10秒然后拔插电源,One-KVM就安装完成了!"
}
if [ -f "./installed.txt" ]; then
echo "\e[0;31m检测到存在安装One-KVM记录!"
else
#此为危险操作,会覆盖MBR分区,请在没有自行分区前执行,否则会丢失分区数据系统无法启动!
fi
check-environment
override-uboot
change-device-tree
install-dependencies
install-pikvm
add-patches
show-info
reboot