From 445d37383a7db5f1a1870b86c2ccf46449ef0a01 Mon Sep 17 00:00:00 2001 From: mofeng <3285338098@qq.com> Date: Sat, 16 Dec 2023 16:46:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- install.sh | 159 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 110 insertions(+), 49 deletions(-) diff --git a/install.sh b/install.sh index 41964fae..9941105f 100755 --- a/install.sh +++ b/install.sh @@ -1,9 +1,29 @@ -PYVER=$(python3 -V) -ARCH=$(uname -m) -CURRENTWD=$PWD -echo $PYVER -echo $ARCH +#!/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} @@ -17,69 +37,110 @@ update-alternative(){ 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 +} -if [[ "$PYVER" != *"3.10"* && $(which python3.10) != *"python"* ]]; then - echo "您似乎没有安装 Python 3.10!" - exit -else - update-alternative -fi +#修改设备树文件 +change-device-tree(){ + cp -f./patch/meson8b-onecloud.dtb /boot/dtb/meson8b-onecloud.dtb + echo "设备树文件覆盖成功!" +} -cp ./patch/meson8b-onecloud.dtb /boot/dtb/meson8b-onecloud.dtb && echo "设备树文件覆盖成功!" - -if [ -f "./installed.txt" ]; then - 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)?" +#覆盖引导分区 +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) - 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 - 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 "补丁应用成功!" + echo -e "\e[0;30m已跳过覆盖UBoot分区!\e[0;37m" ;; 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 "换源成功!" 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安装成功!" + dpkg -i ./fruity-pikvm_0.2_armhf.deb >> ./log.txt + systemctl enable kvmd-vnc + echo "PiKVM安装成功!" cd $CURRENTWD - 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 "补丁应用成功!" + 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 -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 \ No newline at end of file