Proxmox Virtual Environment 7.1-7 J4125 UHD600
使用 PVE 7.1-7 最新版本目前全网没有任何资料,折腾了三个晚上终于成了,现在写个教程
开启直通
首先有一个特别重要的事情,需要在bios里开启vt-d,csm,并且video必须是legacy,否则直通显卡后虚拟机直接无法启动,至于pve用什么方式启动这个无所谓
nano /etc/default/grub把 GRUB_CMDLINE_LINUX_DEFAULT 那行改成这样
这是GVT模式,也就是共享模式,少部分cpu支持,但体验很好
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1 video=efifb:off"这是独占模式,都支持,但显示器没有pve的控制台输出,也只能直通个一个虚拟机
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off"nano /etc/modules把这些填进去
vfiovfio_iommu_type1vfio_pcivfio_virqfdkvmgt允许不安全中断
nano /etc/modprobe.d/iommu_unsafe_interrupts.conf把这行填进去
options vfio_iommu_type1 allow_unsafe_interrupts=1避免死机
nano /etc/modprobe.d/kvm.conf把这行填进去
options kvm ignore_msrs=1更新引导和内核,然后重启pve
update-initramfs -uupdate-grub查看核显pcie设备id,记下来,待会用到
lspci -nn从这里可以看出,核显位置是在00:02.0,并且id是8086:3185,下面的声卡同理
00:02.0 VGA compatible controller [0300]: Intel Corporation GeminiLake [UHD Graphics 600] [8086:3185] (rev 06)00:0e.0 Audio device [0403]: Intel Corporation Celeron/Pentium Silver Processor High Definition Audio [8086:3198] (rev 06上面改了GVT模式的,先看看核显支不支持GVT,这个文件夹下面有i915-GVT之类就是支持,可以同时直通给多个虚拟机同时用,并且直接在图形界面选了就行,后面不用看了
不支持的话,看上面重改/etc/default/grub换成独占模式,重启,然后继续后面的步骤
ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types添加到vfio的配置中,如果hdmi无法显示,那请去掉这条配置
nano /etc/modprobe.d/vfio.conf举个例子,两组id自己改成自己的
options vfio-pci ids=8086:3185,8086:3198屏蔽驱动
nano /etc/modprobe.d/blacklist.conf把这些填进去
blacklist snd_hda_intelblacklist snd_hda_codec_hdmiblacklist i915提取 vbios.bin
如果您也是J4125,那么你可以直接用这个改好的 j4125.zip,解压了把它放到/usr/share/kvm中,然后配置虚拟机
另外群友 心- 提供了另一个,如果你的4125怎么都不亮,可以试试这个vbios vbios_j4125.bin.zip
必须开csm并且设置成传统的video才能读出来,没有vbios大概也能用,懒的话可以先试试插HDMI能不能亮
进去核显的位置并且提取vbios,举个例子,位置换成你自己的
cd /sys/bus/pci/devices/0000:02:00.0echo 1 > rom
cat rom > /usr/share/kvm/vbios.bin
echo 0 > rom
安装工具
apt install gcc make gitcd ~git clone https://github.com/awilliam/rom-parsercd rom-parsermake修复id不对的问题,举个例子,按提示改成你自己的id
./rom-fixer /usr/share/kvm/vbios.binValid ROM signature found @0h, PCIR offset 40hPCIR: type 0 (x86 PC-AT), vendor: 8086, device: 15f3, class: 020000PCIR: revision 3, vendor revision: 201Modify vendor ID 8086? (y/n): nModify device ID 15f3? (y/n): yNew device ID: 3185Overwrite device ID with 3185? (y/n): yValid ROM signature found @f000h, PCIR offset 1chPCIR: type 3 (EFI), vendor: 8086, device: 15f3, class: 000000PCIR: revision 3, vendor revision: 902EFI: Signature Valid, Subsystem: Boot, Machine: X64Modify vendor ID 8086? (y/n): nModify device ID 15f3? (y/n): yNew device ID: 3185Overwrite device ID with 3185? (y/n): yLast imageROM checksum is invalid, fix? (y/n): y配置虚拟机
我这里是一个win10 ltsc的虚拟机,虚拟机id是100,请注意下面的命令里的虚拟机id改成你自己的
在图形界面上虚拟机硬件添加pci设备,只需要勾选PCI-Express
回到命令行,改虚拟机配置文件
nano /etc/pve/qemu-server/100.conf在显卡那条hostpci的最后加上,romfile=vbios.bin
hostpci0: 0000:00:02.0,pcie=1,romfile=vbios.bin如果上面的方法不行,那就删掉hostpci0那行,在文件最上面加上这行,并且把 显示 设置成 无,不加romfile大概也能用,可以先试试
args: -device vfio-pci,host=00:02.0,addr=0x02,x-igd-gms=1,romfile=vbios.bin然后开虚拟机装驱动就完事了,虚拟机必须是SeaBIOS的传统启动,此处显卡驱动必须得是26.20.100.7262版本的,不然就会黄三角,已经往咩咩乐园群共享传了一份,可以去下载在设备管理器手动装
测试过好了之后,去编辑把主gpu勾上,这样虚拟机的bios都会显示在显示器上了
其他
- n5105实测没法直通,通进去了也是没有任何硬件加速的,intel在驱动里下毒了
- 虚拟机里声卡明明有设备有驱动用不了,其实不是声卡驱动问题,而是要关机物理机再开机,第一次开直通的虚拟机的时候声卡就是可以用的,但是虚拟机再次开机声卡就用不了了,又是intel搞的鬼
- 顺便扯一下,在bios的 Device… -> OVMF… 中可以修改虚拟显示器的分辨率,或者使用spice都可以修改默认的800x600
如果咩咩的文章对您有帮助,您可以 请我喝牛奶