教程参考来源
教程参考B站UP主爱折腾的老高
视频link:
https://www.bilibili.com/video/BV1A94y1p7X6?spm_id_from=333.1387.homepage.video_card.click
原笔记出处:
Intel核显直通显示输出简单方法完整版无定制OVMF开机BIOS画面|爱折腾的老高博客
使用的igd文件来源:
https://github.com/gangqizai/igd

特别鸣谢
感谢gangqizai大佬提供的解决方案!
感谢小云大佬提供的技术支持!!
感谢JAZZ大佬提供的脚本支持以及核显调用查看方案!
感谢畅网微控提供的P6 N150测试平台,非常NICE!!

转载本文请注明出处,互联网开放精神,你我共享!

一、PVE安装与优化

1.1 PVE的安装简要流程

由于PVE的安装比较基础,且B站教程众多,因此不过多赘述,简要说一下安装流程。

  1. [官网下载PVE最新镜像](Download Proxmox software, datasheets, agreements
  2. [下载Ventoy](Download . Ventoy) 并刷写U盘,并将第一步镜像复制到U盘
  3. 插到主机,通电开机,根据图形化界面安装系统,等待重启
  4. 重启后输入屏幕上的ip+端口,然后更改界面语言,输入账号(root)密码进行登录。

1.2 PVE的优化

对于PVE的优化主推JAZZ 老虎大神的优化脚本:
pve_source 注册评论后即可使用,推荐直接用命令行下载运行。
主要优化的内容有:

  • 系统自带软件源替换为国内大学的镜像源并更新软件
    • 也可以直接用下面的命令一键替换
cat <<'EOF' > /etc/apt/sources.list
deb https://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
EOF

cat <<'EOF' > /etc/apt/sources.list.d/pve-enterprise.list
deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription
EOF

cat <<'EOF' > /etc/apt/sources.list.d/ceph.list
deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription
EOF
  • 修改系统DNS为国内大厂的DNS服务器,例如阿里:223.5.5.5;腾讯:119.29.29.29
  • 去除无效订阅源提醒
  • 增强PVE概要信息显示(如CPU ,核心频率,温度,硬盘等信息)
  • 【谨慎操作,建议新装PVE执行,适合系统硬盘较小的用户】移除 local-lvm 存储空间

1.3 8.3.5PVE版本降低QEMU版本

现象
更新了PVE8.3.5版后,发现原本正常的核显直通给虚拟Win的,虚拟机BIOS引导画面和进入Win后都是正常的。更新后黑屏了。

(报错:启动WIN虚拟机时,就会报错 kvm: -device vfio-pci,host=0000:00:02.0,id=hostpci0,bus=pci.0,addr=0x2,romfile=/usr/share/kvm/gen12_igd.rom: IGD device 0000:00:02.0 is unsupported in legacy mode, try SandyBridge or newer )

原因
因为8.3.5更新中包含了qemu-kvm 9.2新版,对legacy mode抛弃了,所以原本的核显直通设置legacy-igd=1 失效,会导致虚拟机BIOS引导画面没有了,并且工作不正常了。

解决方法

  1. 可以退回: apt install pve-qemu-kvm=9.1.2-3(来源于PVE官方论坛)
  2. 把i440更换为q35,去掉legacy-igd=1参数,args和vbios保持原样不动,可以正常进入虚拟Win(只是看不到虚拟机BIOS引导画面,显示黑屏一会等待Win启动),进入后第一次有可能会花屏,重启正常,核显和HDMi声音也正常。(原创:老高个人尝试)

二、核显直通

原理图(源于老高视频):
image.png

2.1 修改GRUB、添加设备黑名单

  1. grub中添加iommu

    nano /etc/default/grub
    
    #添加以下:
    GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
    

    Ctrl+S保存,Ctrl+X退出

  2. 更新grub

    update-grub
    
  3. 添加设备黑名单,阻止PVE系统本身占用设备

    nano /etc/modprobe.d/pve-blacklist.conf
    

    在里面加入

    blacklist i915
    #blacklist amdgpu
    blacklist snd_hda_intel
    options vfio_iommu_type1 allow_unsafe_interrupts=1
    

    解释:

    • 屏蔽intel核显
    • 屏蔽amd核显
    • 屏蔽声卡
    • options vfio_iommu_type1 allow_unsafe_interrupts=1(允许不安全的设备中断,必须加,在部分机型上不加此项会导致虚拟Win启动加载转圈时直接宿主PVE卡死。)
  4. 更新initramfs:

    update-initramfs -u -k all
    
  5. 重启PVE系统

    reboot
    

2.2 使用UBU提取IntelGopDriver并制作ROM,提取VBIOS

2.2.1 PVE中

  1. 更新pci设备信息,显示更多信息

    update-pciids
    
  2. 查看核显及声卡pci设备信息

    lspci -D -nn | grep VGA
    lspci -D -nn | grep Audio
    

Intel的核显和声卡ID通常为:0000:00:02.0和0000:00:1f.3

  • 供应商ID为:8086
  • N150的设备ID为:46d4
  • 声卡设备ID为:54c8
    以上信息按照显卡声卡的ID都记录好,备用

2.2.2 Windows物理主机中

1.使用UBU工具提取IntelGopDriver.efi文件

  1. 向主板厂商索要自带BIOS或者电脑官网下载

  2. 实在不行,自行备份出来(见AMI bios提取工具AFUWIN,或者fpt工具制作启动U盘进入UEFI Shell下使用fpt命令,运行fpt -d 备份名字.bin 可以备份到U盘里。)

  3. 下载UBU(UEFI BIOS Updater_v1.79.17.rar)并解压缩到UBU文件夹

  4. 用windows cmd命令行找到对应的UBU文件夹,执行 ubu.bat批处理文件

    • 小白读者可以在ubu文件夹内空白处按住Shift然后鼠标右键即可看到 在此处打开Powershell窗口的选项,点击然后在弹出的命令窗输入 .\UBU.bat
      image.png
  5. 第一次使用会弹出文件选择窗用于选择BIOS文件一般以 .bin后缀结尾
    image.png

  6. 分析结束后按任意键继续
    image.png

  7. 输入 2,再输入 s即可在Extracted\GOP\Unknown目录中找到 IntelGopDriver.efi
    image.png

    输入 2
    image.png

    输入 s
    image.png

  8. 下载edk2-BaseTools-win32-master.rar,把IntelGopDriver.efi拷贝到edk2-BaseTools-win32-master文件夹,命令行进入edk2-BaseTools-win32-master文件夹(同步骤4),运行下面的命令 (项目详见:[github](tianocore/edk2-BaseTools-win32: git-svn mirror of https://svn.code.sf.net/p/edk2-toolbinaries/code/trunk/Win32)

    EfiRom.exe -f 0x8086 -i 0xXXXX -e IntelGopDriver.efi
    

    注意以上XXXX为具体自己的核显设备ID,如N150的设备ID为:46d4
    查看反馈信息,成功后会有 IntelGopDriver.rom文件产生。

  9. 下载gangqizai大佬的项目的igd(详见[github](gangqizai/igd: Intel 核显直通 rom / Intel Integrated GPU passrough rom file for PVE)),点此下载

    • 本ROM为Intel 10-13核显直通PCI optionROM, 搭配OVMF可以实现虚拟机启动,显示器 HDMI/DP 输出画面, HDMI/DP声音正常工作
    • 本ROM使用简单,无需修改或定制OVMF,使用PVE自带即可!
    • 虚拟机启动无花屏,蓝屏。
  10. 利用第三方Shell工具如FinalShell,WinSCP、MobaXterm等,将上述 igd.romIntelGopDriver.rom上传至PVE系统的 /usr/share/kvm目录下。

2.3 创建虚拟机并配置

2.3.1 虚拟机创建

VirtIO ISO下载

名称:自定义  
光驱挂载:Win安装ISO镜像  
类型选择:windows 10/11
额外驱动:virtIO驱动
系统中显卡:无  
机型:i440fx  
BIOS:OVMF  
EFI分区:UEFI(OVMF)需要  
TPM设备:Win11需要  Win10可以不勾选
QEMU代理:勾选
磁盘:SCSI 大小100G(按需设置,或硬盘直通)  
CPU:host 核心数量4(如N150共4核,按需设置)  
内存:4G及以上(核显直通建议)  
网络:virtIO(半虚拟化或网卡直通)网卡  
点击确定

2.3.2 直通PCI设备及USB设备

添加PCI设备:

  • 添加显卡(0000:00:02.0)
  • 添加声卡(0000:00:1f.3)添加USB设备
  • 键鼠

2.3.3 配置虚拟机conf文件,添加ROM和VBIOS文件指向:

nano /etc/pve/qemu-server/虚拟机序号.conf

# 例如win10 虚拟机序号为 100
nano /etc/pve/qemu-server/100.conf

首行添加args

args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=0x2 -set device.hostpci0.x-igd-opregion=on

找到以下两处,并添加

hostpci0: 0000:00:02.0,legacy-igd=1,romfile=igd.rom
hostpci1: 0000:00:1f.3,romfile=IntelGopDriver.rom

ctrl+s,ctrl+x保存退出

注意:如果使用二合一vbios rom,以下挂载rom只需要1个。把它挂载直通的核显pci设备上即可。

2.3.4 安装win11系统

注意事项:

  • scsi格式硬盘需要安装驱动才能识别,点击浏览,找到Virto IO驱动盘,找到scsi目录,根据系统win10/11进入文件夹,选择amd64,确认,装完驱动即可正常识别硬盘。
  • 安装完系统后,进入系统首先打开Virto IO驱动盘,运行 x64.exe的驱动安装器,将驱动全部装好,然后等待核显驱动自动下载安装或者手动安装。
  • 下载并安装 Intel 智音技术的驱动。
  • 设置好休眠全部取消后关机
  • 删除Win虚拟机硬件中不需要的光驱设备
  • 重启测试核显及声卡驱动是否正常。

三、效果展示

声卡驱动正常
49b99b9d332662e8f72dd96ff6a4e30.jpg

显卡驱动正常
7456b2fd6d8f905836ddd72d1e2a225.jpg

Enjoy : )