榨干 ARM 小主机性能: PVE ARM 搭建指南
得益于佛西大佬的项目,让 PVE ARM 的搭建如此简单
一、前言
- 设备:Radxa Rock 5b+ (16GB)
- 系统:Armbian 25.2.2 Bookworm Minimal
- 网络环境:校园网,会讲到校园网环境多设备问题的解决方案,如果你希望在 PVE ARM 中部署 OpenWRT 并开启无线网卡,可以参考这篇文章
二、环境搭建
以下内容默认你基本熟悉 Linux 系统,并且已经安装 Debian 或 Debian 类系统:
sudo nano /etc/hosts
将文件内容修改为类似以下格式:
127.0.0.1 localhost.localdomain localhost
192.168.7.7 rock-5b-plus.proxmox.com rock-5b-plus
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
其中,192.168.7.7 是你的主机的内网 IP 地址,可以通过 ip a 命令来获取:
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
3: enP4p65s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr0 state UP group default qlen 1000
link/ether 00:e0:4c:0b:03:04 brd ff:ff:ff:ff:ff:ff
6: enx6c1ff721bebe: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr1 state UP group default qlen 1000
link/ether 6c:1f:f7:21:be:be brd ff:ff:ff:ff:ff:ff
7: wlP2p33s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether a8:e2:91:43:83:a2 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.249/24 metric 600 brd 192.168.0.255 scope global dynamic wlP2p33s0
valid_lft 81722sec preferred_lft 81722sec
inet6 240e:469:208:2dfb:aae2:91ff:fe43:83a2/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 86114sec preferred_lft 14114sec
inet6 fe80::aae2:91ff:fe43:83a2/64 scope link
valid_lft forever preferred_lft forever
8: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:e0:4c:0b:03:04 brd ff:ff:ff:ff:ff:ff
inet6 fe80::2e0:4cff:fe0b:304/64 scope link
valid_lft forever preferred_lft forever
9: vmbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 6c:1f:f7:21:be:be brd ff:ff:ff:ff:ff:ff
inet 192.168.7.7/24 scope global vmbr1
valid_lft forever preferred_lft forever
inet6 fe80::6e1f:f7ff:fe21:bebe/64 scope link
valid_lft forever preferred_lft forever
例如我的无线网卡 wlP2p33s0 的 IP 地址为 192.168.0.249 ,由于后续要配置 OpenWrt,我将 OpenWrt 的地址设置为 192.168.7.1 ,所以我将我的 IP 设置为 OpenWrt 同一网段下的 192.168.7.7 ,你可以根据自己的实际情况进行设置
rock-5b-plus 和 rock-5b-plus.proxmox.com 为你的主机名和自定义域名,主机名请根据自己的实际情况配置,自定义域名请随意
三、安装 PVE ARM
1. 切换为 root 账号
sudo -i
2. 添加 PVE ARM 仓库
echo 'deb [arch=arm64] https://mirrors.apqa.cn/proxmox/debian/pve bookworm port'>/etc/apt/sources.list.d/pveport.list
curl -L https://mirrors.apqa.cn/proxmox/debian/pveport.gpg -o/etc/apt/trusted.gpg.d/pveport.gpg
3. 更新仓库和系统
apt update && apt full-upgrade -y
4. 安装 PVE ARM 软件包
apt install proxmox-ve postfix open-iscsi ifupdown2
执行完毕后,请重启主机,然后访问你的主机内网 IP 地址的 8006 端口即可进入管理界面

对于 Rockchip(瑞芯微)的芯片要进行一些额外操作:
apt download pve-edk2-firmware-aarch64=3.20220526-rockchip
dpkg -i pve-edk2-firmware-aarch64_3.20220526-rockchip_all.deb
四、安装 OpenWrt 路由
1. 构建自定义镜像
我使用的是 ImmortalWrt 镜像,在 ImmortalWrt Firmware Selector 构建自定义镜像,也可以在 /targets/armsr/armv8 目录下下载 qcow2 格式的预构建镜像
2. 配置 PVE 网络
将你的所有有线网卡添加到网桥(Proxmox VE 不支持无线网卡桥接):
在 数据中心 -> rock-5b-plus -> 系统 -> 网络 中点击 创建 -> Linux Bridge 来进行桥接:

注意:图片中的 CIDR 和 网关可以不配置,配置后你就可以通过有线连接到管理界面
3. 在 PVE 中配置 OpenWrt 虚拟机
- 点击右上角创建虚拟机 ,勾选打开高级模式
- 名称随意,其余保持默认,点击下一步

- 操作系统选择 不使用任何介质,点击下一步
- BIOS 选择
OVMF (UEFI),其余保持默认,点击下一步 - 磁盘直接删掉,不需要使用,点击下一步
- CPU 数量根据实际情况进行设定,要科学上网的话建议配置为 2 核心,其余的设置为 1 核心即可
注意要将 CPU 绑定到物理核心上,因为 PVE 不支持大小核调度,例如我希望将 OpenWrt 的CPU 绑定到物理核心的 CPU 6 和 CPU 7 上,则填写 6-7 ,如果你需要将 CPU 绑定到 5 和 7 上,则填写 5,7 即可

- 内存填写 2048 就绰绰有余了
- 网络选择你之前配置的 WAN 口
- 点击创建,注意不要勾选创建后启动
- 创建后点击刚刚创建好的虚拟机 -> 硬件 ,添加一个网络设备,将之前桥接好的 LAN 口全部接入到 OpenWrt 中
- 添加一个串行端口,配置保持默认
- 删除一些不必要的硬件,比如说 CD 驱动器,完整的硬件配置类似以下图片:

- 点击启动虚拟机,控制台选择
xterm.js,这样你就可以实现复制粘贴命令了
4. OpenWrt 路由设置
此时,理论上你已经可以通过访问之前设置好的网关地址来访问 OpenWrt 的 Web 管理界面了,默认的网关地址是 192.168.1.1,如果访问不了,大概率是你的网口绑定错误,可以通过修改配置文件来修复:
请先登录 OpenWrt 的终端,然后输入以下命令:
vi /etc/config/network
你的配置文件类似以下内容:
config interface 'loopback'
option device 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fdbf:4cc:823a::/48'
option packet_steering '1'
config device
option name 'br-lan' # LAN 口网桥,用于聚合多个 LAN 口
option type 'bridge'
list ports 'eth1' # 修改为电脑连接到小主机的网口
config interface 'lan'
option device 'br-lan'
option proto 'static'
option ipaddr '192.168.7.1'
option netmask '255.255.255.0'
option ip6assign '60'
list dns '223.5.5.5'
config interface 'wan'
option device 'eth0' # 修改为连接上级路由的网口
option proto 'dhcp'
config interface 'wan6'
option device 'eth0' # 修改为连接上级路由的网口
option proto 'dhcpv6'
option reqaddress 'force'
option reqprefix 'auto'
option norelease '1'
请修改 wan 和 wan6 的 device,将它修改为你的 WAN 口,我这里是 eth0
请修改 br-lan 的 ports,将它修改为你的 LAN 口,我这里是 eth1 ,LAN 口建议暂时只设置为目前电脑连接到小主机的那个网口,后续其它网口通过 Luci 界面添加避免错误
进入 Web 界面后,可以下载 luci-app-openclash 来使用代理,相较于 ShellCrash 来说,有图形化界面、可以多个订阅一键切换且有更多界面可以自定义,但是稳定性不如 ShellCrash 好
关于校园网部分,可以参考这篇文章,大家可以根据自己学校的情况进行调整,例如我们学校只进行了 TTL 检测和时间戳检测。另外,依靠修改 UA 的方式会大大增加网络延迟,同时可能导致游戏进不去,若是迫不得已,建议不要使用
关于 OpenWrt 的配置,网络上的教程已经铺天盖地了,再次就不再赘述了
五、结语
Proxmox VE 提供了各种各样的玩法,接下来我会教大家如何在 Proxmox VE 中配置一些硬件的直通,例如 RK3588 的编解码器直通虚拟机,以及 Proxmox VE 与 Docker 兼容的配置方案,大家敬请期待!