AC2100/upgrade.sh

84 lines
2.2 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
# ImmortalWrt 软路由一键升级脚本
# 用法: curl -fsSL <此脚本的raw地址> -o /tmp/upgrade.sh && sh /tmp/upgrade.sh
FIRMWARE_URL="https://git.stickrouter.com/mike/AC2100/raw/branch/main/x86.img.gz"
FIRMWARE_FILE="/tmp/x86.img.gz"
echo "=========================================="
echo " ImmortalWrt 固件升级脚本"
echo "=========================================="
echo ""
echo "固件地址: $FIRMWARE_URL"
echo "下载路径: $FIRMWARE_FILE"
echo ""
echo "[1/4] 正在下载固件..."
rm -f "$FIRMWARE_FILE"
RETRY=0
MAX_RETRY=5
MIN_SIZE=10000000
while [ $RETRY -le $MAX_RETRY ]; do
if [ $RETRY -gt 0 ]; then
echo "$RETRY 次续传重试..."
sleep 3
fi
wget -c -O "$FIRMWARE_FILE" "$FIRMWARE_URL"
if [ -s "$FIRMWARE_FILE" ]; then
CURRENT_SIZE=$(ls -l "$FIRMWARE_FILE" | awk '{print $5}')
else
CURRENT_SIZE=0
fi
if [ "$CURRENT_SIZE" -ge "$MIN_SIZE" ]; then
break
fi
RETRY=$((RETRY+1))
done
if [ ! -s "$FIRMWARE_FILE" ] || [ "$(ls -l "$FIRMWARE_FILE" | awk '{print $5}')" -lt "$MIN_SIZE" ]; then
echo ""
echo "!! 下载失败或文件不完整(已重试 $MAX_RETRY 次),请检查网络连接或固件地址是否正确"
exit 1
fi
echo ""
echo "[2/4] 下载完成,检查文件..."
if [ ! -s "$FIRMWARE_FILE" ]; then
echo "!! 文件为空或不存在,下载可能已损坏"
exit 1
fi
FILESIZE=$(ls -l "$FIRMWARE_FILE" | awk '{print $5}')
echo "文件大小: $FILESIZE 字节"
if [ "$FILESIZE" -lt 10000000 ]; then
echo "!! 文件大小异常偏小 (小于 10MB),可能下载不完整或链接返回了错误页面"
echo "!! 为安全起见,已中止刷机流程"
exit 1
fi
echo ""
echo "[3/4] 校验固件与设备兼容性..."
sysupgrade -T "$FIRMWARE_FILE"
if [ $? -ne 0 ]; then
echo "!! 固件校验未通过,已中止刷机"
echo "!! 如确认固件无误,可手动执行: sysupgrade -v $FIRMWARE_FILE"
exit 1
fi
echo ""
echo "[4/4] 校验通过5 秒后开始刷机(全新安装,不保留旧配置)..."
echo "!! 刷机过程中请勿断电,设备将自动重启"
echo "!! 刷机后 LAN IP、密码等将恢复为固件编译时的默认值"
sleep 5
sysupgrade -n -v "$FIRMWARE_FILE"