######################################## KVM ######################################## 安装 **************************************** 执行下面的代码:: dnf install -y qemu-kvm virt-manager gpasswd -a $USER libvirt gpasswd -a $USER kvm VirtIO **************************************** VirtIO 是一个增强虚拟机 IO 的工具,同时还提供了粘贴板的双向同步和屏幕自由缩放。对于虚拟机而言,Linux 需要从包管理器中安装特定的驱动,Windows 需要前往 Fedora_ 下载并安装驱动,MacOS 对 VirtIO 的支持有限。 以网卡为例,只需要进入 virt-manager 中将 NIC 的设备型号设置为 virtio 即可。对于磁盘而言,安装分区必须要在安装过程中选择为 virtio 并在安装过程中加载需要的驱动(例如 Windows) .. _Fedora: https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso GVT-g **************************************** GVT-g 是 Intel 的一项虚拟显卡功能,可以将一个物理显卡虚拟成多个显卡并供给虚拟机使用 1. 添加内核参数 ``i915.enable_gvt=1 kvm.ignore_msrs=1 intel_iommu=igfx_off`` 2. 创建文件 :file:`/etc/modules-load.d/kvmgt.conf` 并写入内容 *kvmgt* 后重启 3. 重启后执行 ``ls /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/`` 不应当为空 4. 根据 指导_ 创建 rc.local 文件并写入一下内容 :: #!/bin/bash echo "97709d2e-39ff-11ec-bf01-54b203028f37" > "/sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_4/create" 5. 打开虚拟机的 xml 文件(例如使用 sudo virsh edit win10)并在 devices 字段中添加以下内容 ::
之后打开虚拟机,可以看到设备管理器中有一个 Intel GPU,等待 Win10 安装完驱动即可。 .. important:: 使用 GVT-g 后虚拟机会黑屏,需要使用诸如 VNC 的远程桌面 .. seealso:: - `Fedora启动时加载内核模块 `_ - `Intel_GVT-g `_ - `GVTg Setup Guide `_ - `PCI 经由 OVMF 直通 `_ .. _指导: https://www.codeleading.com/article/75563269454/ 硬件加速 **************************************** 开启硬件加速的完整步骤为: #. 在显卡处选择 VirtIO,并勾选 *3D 加速* #. 在显示协议 Spice 处设置监听类型为无,并勾选 OpenGL。之后下面的显卡选择集成显卡 #. 在虚拟机安装 VirtIO 驱动 第二步是最关键的。之所以如此设置是因为: - Spice 只支持本地加速,不支持网络。因此监听类型需要设置为无 - 对于笔记本而言,OpenGL 的显卡两个都需要试试才行 .. important:: 将显卡设置为 VirtIO 会导致鼠标漂移。解决的办法是将其设置为 QXL,但是这样就没办法使用硬件加速了 显卡直通 **************************************** 显卡直通需要以下几个步骤: #. 将 :command:`intel_iommu=on iommu=pt` 添加到内核参数 #. 编辑 :file:`/etc/modprobe.d/vfio.conf` 文件,并写入 :command:`options vfio-pci ids=10de:2560,10de:228e` 其中 ids 的值是由逗号分割的 PCI ID,可以使用 :command:`lspci -nn | grep NVIDIA` 查看 .. hint:: 如果编辑文件的方式不行,那么也可以通过内核参数 :command:`pci-sub.ids=` 实现 #. 编辑 :file:`/etc/modules-load.d/vfio.conf` 并写入以下内容 :: vfio_pci vfio vfio_iommu_type1 vfio_virqfd #. 使用 dracut -f --kver \`uname -r\` 将模块写入 initramfs .. note:: 经过此步骤重启后,使用 :command:`lspci -v | grep -A30 'NVIDIA'` 查看信息可以看到 :: 01:00.0 VGA compatible controller: NVIDIA Corporation GA106M [GeForce RTX 3060 Mobile / Max-Q] (rev a1) (prog-if 00 [VGA controller]) ... Kernel driver in use: vfio-pci 也就是说 NVIDIA 的驱动变成了 vfio-pci。这时, **显卡已经被隔离,不能再被宿主机使用** #. 在 KVM 的设置中直接将显卡对应的 PCI 设备分配个虚拟机即可。当然,虚拟机需要安装对应的驱动 .. seealso:: - `KVM + PCI Passthrough - 简书 `_ Spice 文件共享 **************************************** 实际上,Spice 使用的是 WebDav 进行文件共享。要使用此功能,需要: 1. `下载 `_ Spice WebDav Guest 工具并在客户机上安装 2. 宿主机安安装 spice-webdavd,并启动 spice-webdavd.service 服务 3. 虚拟机的 XML 文件配置中添加以下内容: .. code-block:: xml ...... ...... 4. 使用 virt-viewer -a virt_name 连接到虚拟机,并在偏好中设置需要共享的文件 .. note:: 由于 WebDav 自身的局限性,要打开一个文件需要先将文件完整地下载下来