设备:wyse5070,多加了一个网口, 为了软路由
虚拟化平台:Proxmox VE,版本8.2.2
当前虚拟机:openwrt、win10、LXC
所有涉及到的文件在文章末尾
参考资料:
PVE直通核显给WIN11直出画面到显示器J4125软路由
VLOG | PVE直通核显给WIN11直出画面到显示器J4125软路由
主要注意点(如果已经尝试过了,失败了,直接看下面的重点):
1、wyse5070的cpu是j4105,不是j4125,但是核显是相同的,文件都是通用的
2、vbios提取失败,我是失败了的,直接用的郑羊羊咩的窝,文章中提供的,另一个群友提供的。
文件解压了把它放到/usr/share/kvm中,改名为j4125.rom(需要与下面配置文件的修改对应)
3、PVE里WIN10虚拟机:QEMU要开启,机型i440fx
4、核显硬件的添加通过修改配置文件来:
在pve的Shell里,编辑win10虚拟机配置文件(100改成对应虚拟机的编号):
vim /etc/pve/qemu-server/100.conf
添加:
args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=1 -set device.hostpci0.x-igd-opregion=on
修改/添加:
hostpci0: 0000:00:02,legacy-igd=1,romfile=j4125.rom
5、win10核显驱动一定要用26.20.100.7262这个版本,否则设备管理器里会出现黄色三角形
6、如果已经安装了高版本的显卡驱动,可以用DDU卸载
详细步骤:
1、打开PVE节点的shell,输入命令:
nano /etc/default/grub
#将GRUB_CMDLINE_LINUX_DEFAULT="quiet"修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"
intel_iommu=on
:启用Intel平台的IOMMU功能(用于PCIe设备直通,如GPU、网卡等)。video=efifb:off
:禁用EFI帧缓冲区(FrameBuffer),避免宿主机和虚拟机争抢显卡资源。
nano 编辑器(PVE 默认)
- 保存并退出:
按下 Ctrl + O → 按 Enter 确认保存 → 再按 Ctrl + X 退出。 - 直接退出(不保存):
按下 Ctrl + X → 如果文件已修改,会提示是否保存,按 N 放弃保存。
修改完成之后更新grub
update-grub
2、加载内核模块
nano /etc/modules
添加以下模块
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
3、添加驱动到PVE黑名单
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915
4、查找核显和声卡id
命令:
lspci
可以看到:
00:02.0 VGA compatible controller: Intel Corporation GeminiLake [UHD Graphics 600] (rev 06)
00:0e.0 Audio device: Intel Corporation Celeron/Pentium Silver Processor High Definition Audio (rev 06)
核显和声卡的PCIE ID 为00:02.0 00:0e.0 取前两位数就是00:02 00:0e
查询对应硬件ID:
lspci -n -s 00:02 #查询显卡 00:02 以上获取的ID
lspci -n -s 00:0e #查询声卡 00:0e 以上获取的ID
从以上可以查询到显卡硬件ID为8086:3185 声卡硬件ID为8086:3198
00:02.0 0300: 8086:3185 (rev 03)
00:0e.0 0403: 8086:3198 (rev 03)
5、填上以上ID,添加直通组。
配置 VFIO-PCI 内核模块参数,以便将特定的 PCI 设备(通过 Vendor ID 和 Device ID 指定)绑定到 vfio-pci
驱动,从而实现 PCI 设备直通(Passthrough) 给虚拟机(VM)。
nano /etc/modprobe.d/vfio.conf
多个设备,ids后面每个设备之间用,隔开
options vfio-pci ids=8086:3185,8086:3198
6、添加options防止VM死机
该命令是用于配置 KVM(Kernel-based Virtual Machine) 的内核模块参数,让 KVM 忽略虚拟机(VM)对未实现的 MSR(Model-Specific Register)的访问,从而避免某些虚拟机(如 Windows 10/11)因 MSR 访问错误而崩溃或蓝屏(BSOD)。
nano /etc/modprobe.d/kvm.conf
options kvm ignore_msrs=1
7、更新内核并重启PVE虚拟机
update-initramfs -u
8、重启完成后,输入命令检查模块是否加载成功
lsmod | grep vfio
看到如下输入界面:
_Pci 57344 0
_virqfd 16384 1 vfio_pci
_ypass 16384 1 vfio_pci,kvm
_iommu_typel 36864 0
36864 2 vfio_iommu_typel,vfio_pci
9、配置直通
显卡的直通:
在pve的Shell里,编辑win10虚拟机配置文件(100改成对应虚拟机的编号):
vim /etc/pve/qemu-server/100.conf
添加:
args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=1 -set device.hostpci0.x-igd-opregion=on
修改/添加:
hostpci0: 0000:00:02,legacy-igd=1,romfile=j4125.rom
声卡的直通:
pve管理页面-win10-硬件-添加-pci设备-原始设备-highdefinetion audio等字样的设备,勾选所有设备
10、修改显示为 无
pve管理页面-win10-硬件-显示-无
vbios文件:
J4125.rom: https://url50.ctfile.com/f/63872950-1490079194-6db803
(访问密码: 1421)
显卡驱动文件下载:
Intel-UHD-Graphics-Driver_11XKD_WIN_26.20.100.7262_A06_04
(访问密码: 1421)
驱动卸载工具DDU:
DDU v18.0.8.2
(访问密码: 1421)
KVM虚拟化Windows驱动集合
virtio-win-0.1.266
(访问密码: 1421)