老羊机上手PVE虚拟化:为FPGA测试做准备
写在前面
我有台2017年配的i5-8400旧主机,一直闲置,最近想利用起来,装一个飞牛OS,因为偶尔需要测试FPGA板卡的PCIE金手指连接,所以还需要win10,双系统不方便,那就装个PVE(Proxmox VE)虚拟化平台,既能跑飞牛NAS,又能跑Win10测试环境,还能预留PCIE槽给FPGA板卡直通。
这篇文章记录一下整个安装配置过程,主要是PCIE直通这块儿踩了点坑,做个备忘。
硬件配置
- CPU: i5-8400(6核,带UHD 630核显)
- 主板: 微星B360M迫击炮
- 内存: 16G DDR4
- 存储:
- 三星960 EVO 250G NVMe(装PVE系统)
- 西数2TB机械盘(留给NAS)
- 电源: 500W
关键是主板支持VT-d,能做PCIE直通。
一、BIOS设置
开机按Del进BIOS,微星这块板子设置位置有点特别:
1. 开启虚拟化
进入高级模式(F7):
- OC → CPU特性 → Intel虚拟化技术 → 启用
- OC → CPU特性 → Intel VT-D技术 → 启用
注意微星主板VT-D藏在OC菜单里,别找错地方。
2. 核显设置
- Settings → 高级 → 集成显卡配置
- 集成显卡多显示器 → 启用
- 第一显卡 → 选择IGD(核显优先)
这样核显给PVE宿主机用,x16槽留给将来的FPGA板卡或独显。
3. PCIE设置(可选)
- Settings → 高级 → PCI子系统设置
- Above 4G Decoding → 启用
保存退出。
二、安装PVE系统
1. 制作启动盘
- 从Proxmox官网下载最新ISO(我装的是9.1)
- 用Ventoy做启动盘
- 插U盘重启,选UEFI启动
进Ventoy后选Normal Mode启动PVE的ISO。
2. 安装过程
按提示走:
- 磁盘:选250G固态,文件系统默认ext4
- 地区时区:Country选China,时区Asia/Shanghai
- 密码:设置root密码(务必记住)
- 网络:
- IP:192.168.1.100(改成你的网段)
- 网关:192.168.1.1
- DNS:192.168.1.1
5-10分钟装完,拔U盘重启。
三、配置IOMMU直通
这部分是核心,也是踩坑最多的地方。
1. 开启IOMMU
root登录命令行:
| |
找到这一行:
| |
改成:
| |
保存后更新:
| |
2. 加载VFIO模块
注意:PVE 9.1不用 /etc/modules 了,改用 /etc/modules-load.d/ 目录。
| |
添加这三行(PVE 8以后不需要vfio_virqfd):
| |
保存后更新:
| |
3. 验证配置
重启后检查:
IOMMU是否开启:
| |
看到 DMAR: IOMMU enabled 就成功了。
VFIO模块是否加载:
| |
应该能看到:
| |
设备识别:
| |
能看到核显UHD 630就OK。
4. 查看IOMMU分组
这步很关键,确认设备能否独立直通:
| |
我的分组情况:
- Group 0: 核显 UHD 630(00:02.0)
- Group 8: 板载网口 Intel I219-V(00:1f.6)
- Group 9: NVMe固态(01:00.0)
重点:x16槽现在是空的,等插FPGA板卡时会单独出现在新的IOMMU组,到时直接配置直通就行。
四、访问Web管理界面
配置完成后,浏览器访问:
| |
用户名:root
密码:安装时设的那个
踩过的坑
1. modules配置文件路径错误
一开始按老教程改 /etc/modules,结果系统提示这文件已被 /etc/modules-load.d/ 替代。
教训:PVE 9.1用的是systemd模块加载机制,要在 /etc/modules-load.d/ 创建.conf文件。
2. pvesh命令报错
执行 pvesh get /nodes/pve/hardware/pci 时报错。后来发现直接用 lspci 更简单可靠。
3. BIOS设置位置不同
微星B360M迫击炮的VT-D在"OC"菜单,不在"Advanced"里。不同主板厂商布局差异大,得自己翻。
当前状态
PVE系统装好了,IOMMU配置完成,接下来可以:
- 创建飞牛NAS虚拟机(板载网口+2T机械盘直通)
- 创建Win10虚拟机(用虚拟硬件,性能够用)
- x16槽预留给FPGA板卡或独显
核显稳定输出PVE画面,CPU和内存占用都不高,老机器又能再战几年。