前言

之所以有这么一篇内容,是由于之前购入了一台联想 910 Q 准系统,配齐配件后想当一个学习 All in One 的平台。因为有直通的念头,所以找遍网上的教程,学习了一番,然后再记录下来,分享给大家。

更新源

由于我是新装的 PVEPVE 7 安装后默认配置的 apt 软件源是官方默认的,国内使用性能不佳,所以先更新一下软件源,这里我替换为了 清华大学 TUNA 协会 提供的国内镜像源,速度是有一个较大的提升。

替换 apt 软件源

更新证书

先更新一下证书,否则可能由于证书不可用导致 https 无法使用,进而无法下载所有软件。

apt install apt-transport-https ca-certificates

由于我是直接在 PVEroot 账户上操作的,所以不需要提权,如果你是使用其他账户操作,可能需要先提权后在执行上述命令,以下均默认 root 账户操作。

替换通用软件源

首先替换通用软件源, PVE 是基于 DebianLinux 系统,而 Debian 的软件源配置文件是 /etc/apt/sources.list,备份后将其中内容修改为以下即可:

先备份,

mv /etc/apt/sources.list /etc/apt/sources.list.bak

新建并编辑,

vim /etc/apt/sources.list

复制下面的内容,并保存。

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free

deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free

替换 PVE 软件源

之后替换 PVE 软件源,PVE 镜像默认的 PVE 软件源配置文件是 /etc/apt/sources.list.d/pve-enterprise.list ,备份后将其中内容替换为以下即可:

先备份,

mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak

新建并编辑,

vim /etc/apt/sources.list.d/pve-enterprise.list

复制下面的内容,并保存。

deb https://mirrors.tuna.tsinghua.edu.cn/proxmox/debian bullseye pve-no-subscription

更新软件

最后更新下,

apt update && apt upgrade -y

PVE 直通核显

配置环境

  • PVE 版本:PVE 7.2-7
  • 关键软件包版本:pve-qemu-kvm=6.1.1-2
  • 虚拟机 Windows 11 版本:zh-cn_windows_11_21 H 2_VOL_x 64

此处参考教程直通了 NVME 固态硬盘,将 pve-qemu-kvm 由 6.2.0-10 降级至 6.1.1-2,因为我后来并未直通硬盘,所以较新版本无任何影响。

硬件平台及 BIOS 设置

因为参考的主要文章是针对 Legacy 启动的,所以本文也是基于此而生。

  • M 910 Q 准系统
  • Inter I 5 8400 魔改

BIOS 设置

首先确保 VT-D 是启用的状态,然后要开启 CSM 即兼容模块,打开 Legacy 启动。 BIOS 设置

PVE 直通设置

正式进入正题,这里我参考了多个教程后修改成的我自己的方式,因为有些设置在我的设备中出现了各种各样的问题,所以能看到我这个内容的要学会变通。

开启底层的硬件直通功能

首先进入 PVEshell 界面,编辑 /etc/default/grub,这里我使用的是 vim,可能有些比我更小白的朋友输入命令不管用,那就是没安装,可以使用 nano,大佬就忽略吧。 编辑 /etc/default/grub

vim /etc/default/grub

找到:

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

修改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off,vesafb:off"

直通参数

此处,

  • iommu 开启直通分组
  • efifb:off 禁用 efi 启动的显示设备
  • vesafb:off 禁用 legacy 启动的显示设备

更新 grub 配置文件

update-grub

加载模块

编辑 /etc/modules

vim /etc/modules

该文件是空白的,直接复制进去即可,具体每个是什么意思,我也暂时没找到解释。

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

模块参数

禁用 PVE 系统加载显卡驱动

因为 PVE 启动时会尝试加载显卡驱动,为了避免 PVE 占用显卡,需要阻止 PVE 的显卡驱动加载。

添加黑名单

编辑 /etc/modprobe.d/pve-blacklist.conf

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

添加内容,

blacklist snd_hda_intel
blacklist snd_hda_codec_hdmi
blacklist i915

屏蔽参数

由于我的平台仅有核显,所以未添加英伟达等黑名单,若是需直通独显,可能还需添加其他相关设备。

查找显卡的设备 ID 并添加直通

查看显卡及声卡设备 ID

lspci -n | grep -E "0300|0403"

其中 0300 代表显卡,0403 代表声卡,如下所示,UHD 630 的硬件 ID8086:3e92

00:02.0 0300: 8086:3e92
00:1f.3 0403: 8086:a2f0

添加直通组

找到显卡后记下硬件 ID 编辑 /etc/modprobe.d/vfio.conf

vim /etc/modprobe.d/vfio.conf

添加内容,硬件 ID需注意替换为自己的。

options vfio-pci ids=8086:3e92

添加 options 防止 VM 死机

编辑 /etc/modprobe.d/kvm.conf

vim /etc/modprobe.d/kvm.conf
options kvm ignore_msrs=1

不过好像并无作用,没成功的过程中,我的设备该死机还是会死机。

更新内核并重启 PVE 虚拟机

update-initramfs -u -k all

输入命令检查模块是否加载成功

lsmod | grep vfio
root@bing6:~# lsmod | grep vfio
vfio_pci               16384  0
vfio_pci_core          73728  1 vfio_pci
vfio_virqfd            16384  1 vfio_pci_core
irqbypass              16384  2 vfio_pci_core,kvm
vfio_iommu_type1       40960  0
vfio                   45056  2 vfio_pci_core,vfio_iommu_type1

返回成功。

Win 虚拟机设置

新建虚拟机

新建虚拟机,显卡默认,机型默认 i 440 fxBIOS 默认 SeaBIOS,开启 Qemu 代理,CPU 开启 NUMA,确认。 转到虚拟机设置的硬件,添加两块 CD/DVD 驱动器,挂载 Windows 系统安装 ISO 镜像,

https://github.com/AveYo/MediaCreationTool.bat

以及 VirtIO 驱动 ISO 镜像

https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/

安装系统

开机装系统,安装驱动,关机。

虚拟机参数配置

编辑 /etc/pve/qemu-server/<VMID>.conf

vim /etc/pve/qemu-server/<VMID>. conf

首行添加内容,

Args: -set device. Hostpci 0. X-igd-gms=1

直通参数 2

此处需尤为注意,首行代码各教程均有不同方案,我试过多个方案,均无法正常直通。

由于本人小白水平,也无法搞清具体代码是什么意思,为什么需这样设置,所以尝试多次才确认此方案在我机器上可正常使用,不代表看到文章的所有人都适用。

添加直通 PCI 设备

转到虚拟机设置的硬件, 添加直通核显 添加直通核显 添加直通声卡 添加直通声卡 添加直通 USB 添加直通_USB

上述 PCI 设备添加完成后,将显示由默认改为,改完若 PVE 已经连接显示器,启动虚拟机即可在物理显示器中正常使用。

注意,此时PVE 的控制台,由于更改了显示模式,会导致 VNC 无法连接,暂无解决方法。

最后值得注意的是,虚拟机的睡眠休眠需检查是否关闭。

End