更新脚本

This commit is contained in:
mofeng 2023-12-16 16:46:04 +08:00
parent 039d4c6946
commit 445d37383a

View File

@ -1,9 +1,29 @@
PYVER=$(python3 -V) #!/bin/bash
ARCH=$(uname -m)
CURRENTWD=$PWD
echo $PYVER
echo $ARCH
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(){ update-alternative(){
counter=2 counter=2
for i in {1..9} for i in {1..9}
@ -17,69 +37,110 @@ update-alternative(){
done done
update-alternatives --install /usr/bin/python3 python3 $(which python3.10) 1 update-alternatives --install /usr/bin/python3 python3 $(which python3.10) 1
update-alternatives --set python3 $(which python3.10) 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
}
if [[ "$PYVER" != *"3.10"* && $(which python3.10) != *"python"* ]]; then #修改设备树文件
echo "您似乎没有安装 Python 3.10" change-device-tree(){
exit cp -f./patch/meson8b-onecloud.dtb /boot/dtb/meson8b-onecloud.dtb
else echo "设备树文件覆盖成功!"
update-alternative }
fi
cp ./patch/meson8b-onecloud.dtb /boot/dtb/meson8b-onecloud.dtb && echo "设备树文件覆盖成功!" #覆盖引导分区
override-uboot(){
if [ -f "./installed.txt" ]; then echo -e "\e[0;31m是否选择跳过按下重置键时的玩客云USB线刷检测\e[1;31mY/\e[1;32mN\e[0;31m\e[0;37m"
echo "检测到存在安装One-KVM记录"
else
#此为危险操作会覆盖MBR分区请在没有自行分区前执行否则会丢失分区数据系统无法启动
gzip -dc ./patch/Boot_SkipUSBBurning.gz | dd of=/dev/mmcblk1 && echo "覆盖引导成功!"
echo kvmd ALL=\(ALL\) NOPASSWD: /usr/bin/long_press_gpio420,/usr/bin/short_press_gpio420 >> /etc/sudoers
fi
if [ -f "./installed.txt" ]; then
echo "您似乎已经安装fruity-pikvm_0.2_armhf.deb是否覆盖安装,此操作不会影响后续文件修改操作Y/N"
read USERYN read USERYN
case $USERYN in case $USERYN in
N | n) N | n)
echo "跳过安装fruity-pikvm_0.2_armhf.deb" gzip -dc ./patch/Boot_SkipUSBBurning.gz | dd of=/dev/mmcblk1
echo -e "\e[0;30m覆盖引导成功\e[0;37m"
;; ;;
*) *)
rm /etc/kvmd/nginx/ssl/server.crt echo -e "\e[0;30m已跳过覆盖UBoot分区\e[0;37m"
rm /etc/kvmd/nginx/ssl/server.key
echo "正在安装PiKVM......"
dpkg -i ./fruity-pikvm_0.2_armhf.deb >> ./log.txt && systemctl enable kvmd-vnc && echo "PiKVM安装成功"
cp ./patch/chinese.patch /usr/share/kvmd/web/ && cd /usr/share/kvmd/web/ && patch -s -p0 < chinese.patch
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 "补丁应用成功!"
;; ;;
esac esac
else }
#安装依赖软件
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 "换源成功!" 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......" 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 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......" echo "正在安装PiKVM......"
dpkg -i ./fruity-pikvm_0.2_armhf.deb >> ./log.txt && systemctl enable kvmd-vnc && echo "PiKVM安装成功" dpkg -i ./fruity-pikvm_0.2_armhf.deb >> ./log.txt
systemctl enable kvmd-vnc
echo "PiKVM安装成功"
cd $CURRENTWD cd $CURRENTWD
cp ./patch/chinese.patch /usr/share/kvmd/web/ && cd /usr/share/kvmd/web/ && patch -s -p0 < chinese.patch cp -f ./patch/long_press_gpio420 /usr/bin && cp -f ./patch/short_press_gpio420 /usr/bin
cd $CURRENTWD chmod +x /usr/bin/long_press_gpio420 && chmod +x /usr/bin/short_press_gpio420
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 "GPIO-420脚本移动成功"
echo "补丁应用成功!" #此处还要屏蔽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 fi
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脚本移动成功"
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
echo "One-KVM V0.4" >> installed.txt
ipaddr=`ip addr | grep "scope global" | awk '{print $2}' |awk -F/ '{print $1}'`
echo -e "内网访问地址为:\nhttp://$ipaddr\nhttps://$ipaddr"
echo "机器已执行重启命令请手动给玩客云重新上电拔插电源然后就可以开始使用One-KVM了"
check-environment
override-uboot
change-device-tree
install-dependencies
install-pikvm
add-patches
show-info
reboot reboot