返回

老机改造:PVE虚拟化平台搭建与PCIE直通配置

老机器改造 PVE 虚拟化平台记录。详细记录 BIOS 配置、IOMMU/PCIE 直通设置、VFIO 模块加载全过程,重点解决 PVE 9.1 的配置变更和 IOMMU 分组验证。

老羊机上手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登录命令行:

1
nano /etc/default/grub

找到这一行:

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet"

改成:

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

保存后更新:

1
2
update-grub
reboot

2. 加载VFIO模块

注意:PVE 9.1不用 /etc/modules 了,改用 /etc/modules-load.d/ 目录。

1
nano /etc/modules-load.d/vfio.conf

添加这三行(PVE 8以后不需要vfio_virqfd):

1
2
3
vfio
vfio_iommu_type1
vfio_pci

保存后更新:

1
2
update-initramfs -u -k all
reboot

3. 验证配置

重启后检查:

IOMMU是否开启:

1
dmesg | grep -e DMAR -e IOMMU

看到 DMAR: IOMMU enabled 就成功了。

VFIO模块是否加载:

1
lsmod | grep vfio

应该能看到:

1
2
3
vfio_pci
vfio_iommu_type1
vfio

设备识别:

1
lspci | grep -i vga

能看到核显UHD 630就OK。

4. 查看IOMMU分组

这步很关键,确认设备能否独立直通:

1
2
3
4
5
for d in /sys/kernel/iommu_groups/*/devices/*; do 
    n=${d#*/iommu_groups/*}; n=${n%%/*}
    printf 'IOMMU Group %s ' "$n"
    lspci -nns "${d##*/}"
done

我的分组情况:

  • 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管理界面

配置完成后,浏览器访问:

1
https://192.168.1.100:8006

用户名: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配置完成,接下来可以:

  1. 创建飞牛NAS虚拟机(板载网口+2T机械盘直通)
  2. 创建Win10虚拟机(用虚拟硬件,性能够用)
  3. x16槽预留给FPGA板卡或独显

核显稳定输出PVE画面,CPU和内存占用都不高,老机器又能再战几年。

下一步

参考


🄯 2025 - 2026 DeerStar的博客· 0Days
共书写了50.5k字·共 14篇文章
本站总访问量 · 访客数

DeerStar的一些笔记
使用 Hugo 构建
主题 Stack ModIce Year 设计
🄯 Licensed Under CC BY-NC-SA 4.0