1.设备正常工作的BIOS 设置基础
启用 VT-d
禁用 CSM
ACS Enable # 如果存在,设置为已启用(自动不起作用)
启用 4G解码 4G Decoding
禁用 Resizable BAR/Smart Access Memory智能访问内存 #(如果启用,AMD GPUS(Vega 及更高版本)会遇到“代码 43 错误”)
启用 IOMMU # 如果存在,用于 AMD 主板
将主显示器设置为 CPU/iGPU (如果您的 CPU 有 iGPU)
预分配内存为 64M
新建的虚拟机BIOS设置为OVMF(它是开源的UEFI实现)
开启IOMMU支持
vi /etc/default/grub
#Intel处理器: GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt initcall_blacklist=sysfb_init initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction pci=nommconf video=efifb:off" #AMD处理器: GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt initcall_blacklist=sysfb_init initcall_blacklist=sysfb_init pcie_acs_override=downstream,multifunction pci=nommconf video=efifb:off"
更新grub并重启
update-grub reboot
验证iommu是否生效
dmesg | grep -e IOMMU # 如果没有输出,则说明有问题。你应该看到这样的东西;“DMAR: IOMMU enabled”
添加所需的系统模块(驱动)
echo "vfio" >> /etc/modules echo "vfio_iommu_type1" >> /etc/modules echo "vfio_pci" >> /etc/modules echo "vfio_virqfd" >> /etc/modules update-initramfs -u -k all
添加模块(驱动)黑名单(即让GPU设备在下次系统启动之后不使用这些驱动,把设备腾出来给vfio驱动用)
Intel核显:
echo "blacklist snd_hda_intel" >> /etc/modprobe.d/pve-blacklist.conf echo "blacklist snd_hda_codec_hdmi" >> /etc/modprobe.d/pve-blacklist.conf echo "blacklist i915" >> /etc/modprobe.d/pve-blacklist.conf
A卡:
echo "blacklist radeon" >> /etc/modprobe.d/pve-blacklist.conf
N卡
echo "blacklist nvidia" >> /etc/modprobe.d/pve-blacklist.conf echo "blacklist nvidiafb" >> /etc/modprobe.d/pve-blacklist.conf echo "blacklist nouveau" >> /etc/modprobe.d/pve-blacklist.conf echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
更新内核并重启
update-initramfs -u reboot
https://zhuanlan.zhihu.com/p/435195451
https://imacos.top/2023/07/31/pci/
作者:Rakutens
链接:https://www.jianshu.com/p/bf519b4f1950
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://sg.hqyman.cn/post/9644.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~