前言
这几天在研究j4125的软路由,想打造一套all in one 的家庭多媒体主机。主要想做软路由+ htpc + nas + 智能网关 + webserver 五合一。 但是 想着win11(htpc载体)虚拟机画面直出通过hdmi到电视。然后直通网卡给软路由 。让2.5g网卡发挥他最大的性能。 刚开始方案用exsi虚拟机做载体,发觉win11核显虽然能直通,但是无法通过hdmi输出。只是装了个op(软路由)用过了一段时间后(这段时间研究pve虚拟机),转pve虚拟机了。后面我会简单说下exsi 和 pve各自的优缺点。现在回归正题。
步骤一 启动内核IOMMU支持
打开PVE节点的shell,输入命令:
nano /etc/default/grub
将GRUB_CMDLINE_LINUX_DEFAULT="quiet"修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"
修改完成之后更新grub
update-grub
加载内核模块
nano /etc/modules
添加以下模块
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
步骤二 添加驱动到PVE黑名单
nano /etc/modprobe.d/blacklist.conf
添加驱动
blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915
步骤三 查找核显和声卡id
输入命令
lspci
我的核显和声卡的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
步骤五 填上以上ID,添加直通组。多个设备,ids后面每个设备之间用,隔开
nano /etc/modprobe.d/vfio.conf
options vfio-pci ids=8086:3185,8086:3198
步骤六 添加options防止VM死机
nano /etc/modprobe.d/kvm.conf
options kvm ignore_msrs=1
步骤七 更新内核并重启PVE虚拟机
update-initramfs -u
步骤八 重启完成后,输入命令检查模块是否加载成功
lsmod | grep vfio
看到以上输出画面说明加载成功 直通前提的步骤到此结束。接下来就是虚拟机的操作了
步骤九 创建Windows11虚拟机
这个过程我简略点。需要注意的地方
以上虚拟机建立完成。然后后面的逻辑大致就是先通过控制台安装好win11之后 ,进入系统。安装好核显驱动包(在断网情况下安装)。核显驱动包如果需要的话可在下方留言。
驱动安装完后。关闭win11虚拟机。 回去虚拟机硬件设置的显示选项双击编辑改成无,添加pci设备加入声卡直通。
至此直通设置完毕,插上hdmi 接入你的显示器。我这边就不上图了。
pve与 esxi对比
esxi
优点:稳定性自然不用说,商用针对企业,半壁江山是他的。但是直通方面的灵活性比较差。
缺点:如果对直通有高度diy的用户,不推荐这个,否者很难折腾。
pve
优点:灵活,基于debian系统。本身就是一个debian 你可以在里面做任何debian可以做的事情。直通方面的灵活度很高。
缺点: 稳定性相对esxi差点。就令我吐槽的点是虚拟机每次关机有时候会锁死。需要重试很多次。
Q.E.D.