2024-07-12 16:59:39 +08:00
|
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
|
|
|
|
if [ $(id -u) != "0" ]; then
|
|
|
|
|
|
echo "Error: You must be root to run this script, please use root user"
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
2024-09-29 20:11:22 +08:00
|
|
|
|
disks=$(lsblk -dno NAME,SIZE | grep -E '^sd|^vd|^nvme')
|
2024-07-12 16:59:39 +08:00
|
|
|
|
|
2024-09-29 20:11:22 +08:00
|
|
|
|
disk_count=$(echo "$disks" | wc -l)
|
2024-07-12 16:59:39 +08:00
|
|
|
|
|
2024-09-29 20:11:22 +08:00
|
|
|
|
if [ "$disk_count" -eq 1 ]; then
|
|
|
|
|
|
target_disk=$(echo "$disks" | awk '{print $1}')
|
2024-09-29 20:35:33 +08:00
|
|
|
|
echo "[INFO] 检测到一个磁盘:/dev/$target_disk"
|
2024-09-29 20:11:22 +08:00
|
|
|
|
else
|
2024-09-29 20:35:33 +08:00
|
|
|
|
echo "[INFO] 检测到多个磁盘,请选择目标磁盘:"
|
2024-09-29 20:11:22 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
index=1
|
|
|
|
|
|
echo "$disks" | while read -r disk; do
|
|
|
|
|
|
echo "$index) $disk"
|
|
|
|
|
|
index=$((index + 1))
|
|
|
|
|
|
done
|
|
|
|
|
|
|
2024-09-29 20:35:33 +08:00
|
|
|
|
read -p "[INFO] 请输入目标磁盘的数字编号: " disk_choice
|
2024-09-29 20:11:22 +08:00
|
|
|
|
if ! echo "$disk_choice" | grep -qE '^[0-9]+$'; then
|
2024-09-29 20:35:33 +08:00
|
|
|
|
echo "[ERROR] 无效输入,必须为数字"
|
2024-09-29 20:11:22 +08:00
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
target_disk=$(echo "$disks" | sed -n "${disk_choice}p" | awk '{print $1}')
|
|
|
|
|
|
if [ -z "$target_disk" ]; then
|
2024-09-29 20:35:33 +08:00
|
|
|
|
echo "[ERROR] 无效的选择"
|
2024-09-29 20:11:22 +08:00
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
2024-09-29 20:35:33 +08:00
|
|
|
|
|
|
|
|
|
|
echo
|
|
|
|
|
|
echo "[INFO] 你选择的目标磁盘是:/dev/$target_disk"
|
2024-07-12 16:59:39 +08:00
|
|
|
|
fi
|
|
|
|
|
|
|
2024-09-29 20:11:22 +08:00
|
|
|
|
# 是否使用 ghproxy 加速
|
2024-09-29 20:35:33 +08:00
|
|
|
|
read -p "[INFO] 是否使用 ghproxy 加速下载固件? (y/n): " use_ghproxy
|
2024-09-29 20:11:22 +08:00
|
|
|
|
if [ "$use_ghproxy" = "y" ] || [ "$use_ghproxy" = "Y" ]; then
|
2024-09-29 20:35:33 +08:00
|
|
|
|
echo "[INFO] 将使用 ghproxy 进行下载加速"
|
2024-09-29 20:11:22 +08:00
|
|
|
|
GH_PROXY_PREFIX="https://mirror.ghproxy.com/"
|
2024-07-12 16:59:39 +08:00
|
|
|
|
else
|
2024-09-29 20:35:33 +08:00
|
|
|
|
echo "[INFO] 不使用 ghproxy 加速"
|
2024-09-29 20:11:22 +08:00
|
|
|
|
GH_PROXY_PREFIX=""
|
2024-07-12 16:59:39 +08:00
|
|
|
|
fi
|
|
|
|
|
|
|
2024-09-29 20:11:22 +08:00
|
|
|
|
# 选择是否 efi
|
2024-07-12 17:05:12 +08:00
|
|
|
|
efi_mode=0
|
|
|
|
|
|
if [ -d /sys/firmware/efi ]; then
|
2024-09-29 20:11:22 +08:00
|
|
|
|
efi_mode=1
|
2024-09-29 20:35:33 +08:00
|
|
|
|
echo "[INFO] 你的固件支持 efi"
|
2024-07-12 17:05:12 +08:00
|
|
|
|
fi
|
|
|
|
|
|
|
2024-09-29 20:11:22 +08:00
|
|
|
|
# 添加 ghproxy
|
2024-09-29 20:43:13 +08:00
|
|
|
|
AMD64_EFI_SYSUP="${GH_PROXY_PREFIX}https://github.com/miaoermua/CatWrt/releases/download/v24.9/CatWrt.v24.9.amd64-squashfs-combined-efi.img.gz"
|
|
|
|
|
|
AMD64_BIOS_SYSUP="${GH_PROXY_PREFIX}https://github.com/miaoermua/CatWrt/releases/download/v24.9/CatWrt.v24.9.amd64-squashfs-combined.img.gz"
|
2024-07-12 16:59:39 +08:00
|
|
|
|
|
2024-09-29 20:11:22 +08:00
|
|
|
|
firmware_url=$([ "$efi_mode" -eq 1 ] && echo "$AMD64_EFI_SYSUP" || echo "$AMD64_BIOS_SYSUP")
|
2024-07-12 16:59:39 +08:00
|
|
|
|
|
2024-09-29 20:11:22 +08:00
|
|
|
|
# 下载固件
|
2024-07-12 16:59:39 +08:00
|
|
|
|
firmware_file="/tmp/catwrt_sysupgrade.img.gz"
|
2024-09-29 20:11:22 +08:00
|
|
|
|
wget --timeout=30 --tries=3 -O "$firmware_file" "$firmware_url"
|
|
|
|
|
|
if [ $? -ne 0 ] || [ ! -f "$firmware_file" ]; then
|
2024-09-29 20:35:33 +08:00
|
|
|
|
echo "[ERROR] 固件下载失败"
|
2024-07-12 16:59:39 +08:00
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
2024-09-29 21:06:11 +08:00
|
|
|
|
# 解压固件
|
|
|
|
|
|
echo "[INFO] 解压固件..."
|
|
|
|
|
|
gunzip -f "$firmware_file"
|
|
|
|
|
|
firmware_file="/tmp/catwrt_sysupgrade.img"
|
|
|
|
|
|
|
|
|
|
|
|
if [ ! -f "$firmware_file" ]; then
|
|
|
|
|
|
echo "[ERROR] 固件解压失败"
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
echo "[INFO] 固件已解压到 $firmware_file 即将使用 dd 命令覆写 /dev/$target_disk"
|
2024-09-29 20:35:33 +08:00
|
|
|
|
echo "[INFO] 此操作将永久删除所有数据,无法恢复。按 [ENTER] 回车键继续,或按 [Ctrl]+[C] 终止操作"
|
2024-07-12 16:59:39 +08:00
|
|
|
|
read -r
|
|
|
|
|
|
|
2024-09-29 20:11:22 +08:00
|
|
|
|
# 写入固件
|
2024-09-29 21:12:21 +08:00
|
|
|
|
dd if="$firmware_file" of="/dev/$target_disk" bs=4M
|
2024-09-29 20:35:33 +08:00
|
|
|
|
|
2024-07-12 16:59:39 +08:00
|
|
|
|
|
2024-09-29 20:37:01 +08:00
|
|
|
|
echo "Successful!"
|
|
|
|
|
|
echo
|
|
|
|
|
|
echo "固件覆写成功,重启后使用 cattools 配置 CatWrt"
|
|
|
|
|
|
echo
|
2024-07-12 17:02:13 +08:00
|
|
|
|
echo "重启后可使用 cattools 命令配置 CatWrt,或者自行配置"
|
2024-09-29 20:37:01 +08:00
|
|
|
|
echo "默认 IP: 192.168.1.4"
|
|
|
|
|
|
echo "默认密码: password"
|
|
|
|
|
|
echo
|
2024-07-12 16:59:39 +08:00
|
|
|
|
reboot
|