PVE8直接升9脚本
本脚本不提供任何形式的保证。使用本脚本所造成的一切风险由您自行承担。
本脚本可以PVE8直升PVE9,复制粘贴本页面代码推荐用nano pve9.sh粘贴保存,在通过chmod +x pve9.sh赋予权限
代码部分:
#!/bin/bash
BLUE='\033[0;34m'
NC='\033[0m' # No Color
logo() {
clear
echo -e "${BLUE} ____ _ ____ _ _ ${NC}"
echo -e "${BLUE} / ___| __ __ ___ _ __ __| | ___ _ __ ___ __ _ _ __ / ___| | | ___ _ _ __| |${NC}"
echo -e "${BLUE} \\___ \\ \\ \\ /\\ / / / _ \\ | '__| / _\` | / __| | '_ \` _ \\ / _\` | | '_ \\ | | | | / _ \\ | | | | / _\` |${NC}"
echo -e "${BLUE} ___) | \\ V V / | (_) | | | | (_| | \\__ \\ | | | | | | | (_| | | | | | | |___ | | | (_) | | |_| | | (_| |${NC}"
echo -e "${BLUE} |____/ \\_/\\_/ \\___/ |_| \\__,_| |___/ |_| |_| |_| \\__,_| |_| |_| \\____| |_| \\___/ \\__,_| \\__,_|${NC}"
echo -e "${BLUE} ${NC}"
echo -e "\n"
}
show_ad() {
website_title="【剑客云】BGP多线、高性能联机服务器: http://awacode.top"
echo -e "========================================================================================================================"
echo -e " $website_title"
echo -e "========================================================================================================================"
echo ""
}
optimize_pve8() {
echo "--- 步骤 1: 优化 PVE8 环境 ---"
echo "此步骤将删除旧的软件源配置并替换为基于 Debian Bookworm 的国内镜像源。"
read -p "确定要继续吗? (y/n): " confirm
if [ "$confirm" != "y" ]; then
echo "操作已取消。"
return
fi
dir="/etc/apt/sources.list.d/"
file="/etc/apt/sources.list"
if [ -d "$dir" ]; then
echo "正在删除目录 $dir..."
rm -rf "$dir"
echo "目录已删除。"
else
echo "目录 $dir 不存在,跳过删除。"
fi
echo "正在替换 $file 的内容..."
cat > "$file" <<EOF
deb https://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian-security bookworm-security main
deb https://mirrors.ustc.edu.cn/proxmox/debian bookworm pve-no-subscription
EOF
echo "文件内容已替换。"
echo "正在更新软件源..."
apt update
echo "正在更新软件包 (apt dist-upgrade)..."
echo "请注意:此过程可能需要一些时间。"
apt dist-upgrade -y
echo "--- PVE8 环境优化完成! ---"
read -p "按任意键返回主菜单..."
}
pre_upgrade_prep() {
echo "--- 步骤 2: 升级前准备 (微码 & sysctl) ---"
echo "正在检测 CPU 类型..."
cpu_vendor=$(grep -m 1 "vendor_id" /proc/cpuinfo | awk '{print $3}')
microcode_pkg=""
if [ "$cpu_vendor" == "GenuineIntel" ]; then
echo "检测到 Intel CPU。"
microcode_pkg="intel-microcode"
elif [ "$cpu_vendor" == "AuthenticAMD" ]; then
echo "检测到 AMD CPU。"
microcode_pkg="amd64-microcode"
else
echo "未能自动识别 CPU 厂商 ($cpu_vendor)。跳过微码安装步骤。"
fi
if [ -n "$microcode_pkg" ]; then
read -p "(可选但推荐)是否要安装 CPU 微码包 ($microcode_pkg)? (y/n): " confirm
if [ "$confirm" == "y" ]; then
echo "正在安装 $microcode_pkg..."
apt install "$microcode_pkg" -y
echo "$microcode_pkg 安装完成。"
else
echo "跳过安装 CPU 微码。"
fi
fi
echo ""
sysctl_conf="/etc/sysctl.conf"
echo "正在检查 sysctl 配置..."
if [ -s "$sysctl_conf" ] && grep -q -v -E "^\s*#|^\s*$" "$sysctl_conf"; then
echo "----------------------------------------------------------------"
echo "重要提醒:检测到您的 /etc/sysctl.conf 文件中包含有效配置。"
echo "在 Debian 12 (Trixie) 中,推荐将自定义 sysctl 配置放入 /etc/sysctl.d/ 目录下的 .conf 文件中。"
echo "建议您手动将 /etc/sysctl.conf 中的配置迁移到一个新文件中,例如:/etc/sysctl.d/99-custom.conf"
echo "迁移后,请确保原 /etc/sysctl.conf 文件为空或只包含注释。"
echo "----------------------------------------------------------------"
else
echo "未在 /etc/sysctl.conf 中检测到有效的自定义配置,无需操作。"
fi
echo ""
echo "--- 升级前准备完成! ---"
read -p "按任意键返回主菜单..."
}
check_environment() {
echo "--- 步骤 3: 检查升级环境 ---"
echo "将运行 'pve8to9' 工具来检查系统是否准备好升级到 Proxmox VE 9。"
echo "请仔细阅读检查结果,确保所有项目都通过或警告可以被安全忽略。"
read -p "确定要继续吗? (y/n): " confirm
if [ "$confirm" != "y" ]; then
echo "操作已取消。"
return
fi
pve8to9 --full
echo "--- 环境检查完成! ---"
read -p "按任意键返回主菜单..."
}
upgrade_to_pve9() {
echo "--- 步骤 4: 升级到 PVE9 ---"
echo "警告:这是最后一步!此操作会将您的系统升级到 Proxmox VE 9。"
echo "请确保您已经完成了备份,并且步骤3的环境检查没有严重问题。"
read -p "您确定要开始升级吗? 这是一个不可逆的操作! (y/n): " confirm
if [ "$confirm" != "y" ]; then
echo "升级已取消。"
return
fi
echo "正在将软件源更新到 Debian Trixie (PVE9)..."
file="/etc/apt/sources.list"
cat > "$file" <<EOF
deb https://mirrors.ustc.edu.cn/debian/ trixie main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian/ trixie-updates main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian/ trixie-backports main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian-security trixie-security main
deb https://mirrors.ustc.edu.cn/proxmox/debian trixie pve-no-subscription
EOF
echo "软件源已更新。"
echo "正在刷新软件源列表 (apt update)..."
apt update
echo "正在开始完整的分发版升级 (apt dist-upgrade)..."
echo "这个过程将会非常耗时,请耐心等待,不要中断!"
apt dist-upgrade -y
echo "--- Proxmox VE 9 升级完成! ---"
echo "强烈建议您现在重启系统以应用所有更新。"
read -p "按任意键返回主菜单..."
}
main_menu() {
while true; do
logo
show_ad
echo " Proxmox VE 8 -> 9 升级助手"
echo " 请按顺序执行以下步骤:"
echo ""
echo " 1. 优化 PVE8 环境 (更新源和软件包)"
echo " 2. 升级前准备 (可选安装CPU微码, 检查sysctl)"
echo " 3. 检查升级环境 (运行 pve8to9)"
echo " 4. 执行升级到 PVE9"
echo " 0. 退出脚本"
echo ""
read -p "请输入您的选择 [1-4, 0]: " choice
case $choice in
1)
optimize_pve8
;;
2)
pre_upgrade_prep
;;
3)
check_environment
;;
4)
upgrade_to_pve9
;;
0)
echo "感谢使用,再见!"
exit 0
;;
*)
echo "无效输入,请重新选择。"
sleep 2
;;
esac
done
}
main_menu