开启直通
首先有一个特别重要的事情,需要在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\"
编辑modules文件
nano /etc/modules
把这些填进去
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
kvmgt
允许不安全中断
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 -u
update-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_intel
blacklist snd_hda_codec_hdmi
blacklist 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.0
echo 1 > rom
cat rom > /usr/share/kvm/vbios.bin
echo 0 > rom
安装工具
apt install gcc make git
cd ~
git clone https://github.com/awilliam/rom-parser
cd rom-parser
make
修复id不对的问题,举个例子,按提示改成你自己的id
./rom-fixer /usr/share/kvm/vbios.bin
Valid ROM signature found @0h,
PCIR offset 40h PCIR: type 0 (x86 PC-AT), vendor: 8086, device: 15f3, class: 020000
PCIR: revision 3, vendor revision: 201
Modify vendor ID 8086? (y/n): n
Modify device ID 15f3? (y/n): y
New device ID: 3185
Overwrite device ID with 3185? (y/n): y
Valid ROM signature found @f000h, PCIR offset 1ch
PCIR: type 3 (EFI), vendor: 8086, device: 15f3, class: 000000
PCIR: revision 3, vendor revision: 902
EFI: Signature Valid, Subsystem: Boot, Machine: X64
Modify vendor ID 8086? (y/n): n
Modify device ID 15f3? (y/n): y
New device ID: 3185
Overwrite device ID with 3185? (y/n): y
Last image
ROM 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都可以修改默认的800×600
暂无评论内容