当前位置: 首页 > news >正文

在线重装 Proxmox VE

前言

重装了一下服务器的系统,博客炸了三天,还被人发现了😓,真成事故了。还是提前实验实操过的,刷机需谨慎啊!😧

本文将详细讲述如何在无法连接服务器 IPMI 的情况下,仅通过 VNC 和 SSH 完成在线重装 Proxmox VE。

⚠️ 操作警告

重装过程中务必确保网络连接稳定,避免因断网导致系统损坏。

建议提前备份重要数据,以防意外丢失。

操作前请确认已掌握基本的 Linux 命令行操作技能。

正文开始

自托管 Netboot.xyz(境外服务器可跳过此步骤)

简介

https://github.com/netbootxyz/netboot.xyz

Netboot.xyz 是一个开源的网络引导工具,允许用户通过网络启动各种操作系统安装程序或实用工具。它整合了多个发行版的网络安装镜像,无需下载完整的ISO文件即可进行系统安装。主要特点包括:

  • 支持主流Linux发行版(如Ubuntu、Debian、CentOS等)

  • 可通过PXE或iPXE启动

  • 支持自定义启动菜单

但是由于 Netboot.xyz 官方是托管在 GitHub 上的,国内访问可能较慢或不稳定,所以本次重装选择了自托管 Netboot.xyz 用于加载镜像。

自托管

可以选择在自己别的服务器上部署,我这里选择使用 https://cnb.cool 的云开发环境。

直接在终端里运行 Docker Cli 启动:

docker run -d \--name=netbootxyz \-e NGINX_PORT=80          `# 托管资产的 NGINX 服务器端口` \-e WEB_APP_PORT=3000      `# Web 配置界面端口`\-p 3000:3000 \-p 80:80 \-v ./config:/config       `# 配置文件` \-v ./assets:/assets       `# 资产文件` \--restart unless-stopped \ghcr.io/netbootxyz/netbootxyz

启动后添加端口转发 803000

托管静态文件

进入管理面板(3000 端口映射的页面):

切换到 Local Assets 选项卡,搜索 proxmox-ve,点击 Select All,进行 Pull Selected

修改配置

切换到 Menus 选项卡,点击修改 boot.cfg 文件:

  • 第 8 行:set boot_domain boot.netboot.xyz/2.0.87 改为 aj5ceuh2p9-80.cnb.run/menus (前面的域名为映射 80 端口的域名)

  • 第 14 行:isset ${live_endpoint} || set live_endpoint https://github.com/netbootxyz 改为 isset ${live_endpoint} || set live_endpoint https://aj5ceuh2p9-80.cnb.run (域名为映射 80 端口的域名)

点击 Save Config

复制配置到托管文件

在终端中运行:rm -rf ./assets/menus/ && cp -r ./config/menus/ ./assets/ 使配置公开生效。

配置 IPXE 启动项

Legacy BIOS

登陆需要重装的服务器的 SSH,安装 ipxe:apt update && apt install -y ipxe

可以查看 ipxe 的启动项:

自定义 ipxe 启动脚本并放到 /boot/ipxe.ipxe (注意修改成你自己的网络配置和引导菜单链接):

cat >> /boot/ipxe.ipxe << EOF
#!ipxeecho 正在设置静态 IP 地址...
set net0/ip 192.168.22.1
set net0/netmask 255.255.252.0
set net0/gateway 192.168.20.10
set dns 223.5.5.5echo 激活网卡接口 net0...
ifopen net0 || goto net_failedecho 加载远程引导菜单...
chain --autofree https://aj5ceuh2p9-80.cnb.run/menus/menu.ipxe || goto chain_failedexit:net_failed
echo 无法打开网卡接口!
sleep 3:chain_failed
echo 加载远程菜单失败,请检查网络或URL
sleep 3
EOF

修改开机启动菜单配置:

# 设置默认启动项为 iPXE(对应 grub.cfg 中的 menuentry --id ipxe)
sed -i 's/^GRUB_DEFAULT=.*/GRUB_DEFAULT="ipxe"/' /etc/default/grub# 启用 GRUB 菜单显示(menu 模式,允许用户选择)
sed -i 's/^GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=menu/' /etc/default/grub# 设置菜单等待时间为 20 秒
sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=20/' /etc/default/grub# 更新 grub 配置文件(生成 /boot/grub/grub.cfg)
update-grub

⛔️ 警告:部分 ipxe 可能不支持 https,遇到无法启动的情况建议使用 ip+http 托管

⚠️ 注意:部分旧版 Legacy BIOS 在后续的安装过程中会报内存不足错误,切换到 UEFI 引导即可。

UEFI

从 UEFI 启动时无法外挂脚本,所以采用将脚步编译到 IPXE 中的方式

  • 保存脚本到文件 embed.ipxe

    cat > embed.ipxe <<‘EOF’
    #!ipxe

    echo 正在设置静态 IP 地址…
    set net0/ip 192.168.22.1
    set net0/netmask 255.255.252.0
    set net0/gateway 192.168.20.10
    set dns 223.5.5.5

    echo 激活网卡接口 net0…
    ifopen net0 || goto net_failed

    echo 加载远程引导菜单…
    chain --autofree https://aj5ceuh2p9-80.cnb.run/menus/menu.ipxe || goto chain_failed

    exit

    :net_failed
    echo 无法打开网卡接口!
    sleep 3

    :chain_failed
    echo 加载远程菜单失败,请检查网络或URL
    sleep 3
    EOF

  • 编译 ipxe UEFI 启动镜像

    apt update
    apt install git build-essential binutils gcc-multilib liblzma-dev

    git clone https://github.com/ipxe/ipxe.git
    cd ipxe/src
    make bin-x86_64-efi/ipxe.efi EMBED=…/…/embed.ipxe

  • 部署启动镜像

    mkdir -p /boot/efi/EFI/ipxe
    cp bin-x86_64-efi/ipxe.efi /boot/efi/EFI/ipxe/bootx64.efi

  • 执行 lsblk -f 查看分区列表:

    root@11:~# lsblk -f
    NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
    sda
    ├─sda1
    ├─sda2 ext4 1.0 edc913e8-760d-4406-b17c-a20f2d5b52a4 809.1M 10% /boot
    ├─sda3 vfat FAT32 E22E-7291 992.9M 1% /boot/efi
    └─sda4 ext4 1.0 219f02c2-a9cd-42d1-a1fc-56117148e90d 3.1T 0%

可知当前 EFI 分区在 /dev/sda3

  • 添加 EFI 启动项( EFI 分区为 /dev/sda3)

    efibootmgr -c -d /dev/sda -p 3 -L “iPXE” -l ‘\EFI\ipxe\bootx64.efi’

    输出结果:

    root@pve:~# efibootmgr -c -d /dev/sda -p 3 -L “iPXE” -l ‘\EFI\ipxe\bootx64.efi’
    BootCurrent: 0002
    Timeout: 0 seconds
    BootOrder: 0001,0002,2003,2001,2002,0003
    Boot0000* EFI Network 0 for IPv4 (28-A6-DB-25-8F-45) PciRoot(0x0)/Pci(0x2,0x0)/Pci(0x0,0x0)/MAC(28a6db258f45,1)/IPv4(0.0.0.00.0.0.0,0,0)RC
    Boot0001* Ubuntu HD(3,GPT,bfe393e6-c9a5-4549-bbfd-df5db074e6e7,0x201000,0x1f4000)/File(\EFI\ubuntu\grubx64.efi)
    Boot0002* UEFI System HD(3,GPT,bfe393e6-c9a5-4549-bbfd-df5db074e6e7,0x201000,0x1f4000)/File(\EFI\BOOT\Bootx64.efi)RC
    Boot0003* iPXE HD(3,GPT,bfe393e6-c9a5-4549-bbfd-df5db074e6e7,0x201000,0x1f4000)/File(\EFI\ipxe\bootx64.efi)
    Boot2001* EFI USB Device RC
    Boot2002* EFI DVD/CDROM RC
    Boot2003* EFI Network RC

  • 调整启动顺序

由上述输出可见 0003 为新添加的 iPXE 启动项,使用 -o 选项将其调整到第一个

efibootmgr -o 0003,0001,0002,2003,2001,2002
  • 重启

安装

进入 Linux Network Installs (64-bit) ,翻页找到 Proxmox,选择 Proxmox VE 8.4-1 进行安装。

然后会进入下载,拉取 vmlinuxinitrdproxmox.iso 等文件,耐心等待即可。

拉取完成后会进入 Proxmox VE 的安装页面,正常安装即可。

http://www.xdnf.cn/news/1105021.html

相关文章:

  • DeepSeek模型分析及其在AI辅助蛋白质工程中的应用-文献精读148
  • C语言文件读写操作详解:fgetc与feof函数的应用
  • RestTemplate动态修改请求的url
  • C++前缀和与差分的深度探索
  • 信号量机制
  • Python-正则表达式-信息提取-滑动窗口-数据分发-文件加载及分析器-浏览器分析-学习笔记
  • Windows GNU Radio避坑
  • 【牛客刷题】dd爱科学1.0
  • 计算机网络第三章(6)——数据链路层《网桥交换机》
  • PHT-CAD 笔记
  • 深入MyBatis:CRUD操作与高级查询实战
  • Visual Studio Code 的 settings.json 配置指南
  • K8s Service 终极解析:源码、性能、故障排查全攻略
  • 深入解析 TCP 连接状态与进程挂起、恢复与关闭
  • ROS1学习第三弹
  • Web安全 - 基于 SM2/SM4 的前后端国产加解密方案详解
  • Web安全-Linux基础-01-初识Linux
  • 牛客周赛 Round 99
  • 每日算法刷题Day45 7.11:leetcode前缀和3道题,用时1h40min
  • 浏览器重绘与重排
  • LDO选型
  • # Day31 Java方法02 方法的定义和调用
  • netdxf—— CAD c#二次开发之(netDxf 处理 DXF 文件)
  • Apache Cloudberry 向量化实践(三)重塑表达式构建路径:Gandiva 优化实战
  • Java外包怎么选?这几点不注意,项目可能血亏!
  • CompletableFuture 详解
  • ICCV2025接收论文速览(1)
  • OpenCV多种图像哈希算法的实现比较
  • 代码随想录|图论|10水流问题
  • 项目捷报 | 冠捷科技泰国工厂THA MES项目成功验收!TPV国际化布局再添里程碑!