如何在以 Windows 11 为主机、以 Ubuntu 22.10 为客户操作系统并使用 qemu-kvm 虚拟化 FreeBSD 的 WSL2 上实现 GPU 直通

如何在以 Windows 11 为主机、以 Ubuntu 22.10 为客户操作系统并使用 qemu-kvm 虚拟化 FreeBSD 的 WSL2 上实现 GPU 直通

经过一周的努力,我刚刚按我想要的方式配置了我的 WSL2 子系统:我启用了 ZFS 支持,我可以直接从 Ubuntu 命令行启动图形应用程序;我在 Ubuntu 中安装了 nvidia 驱动程序和 CUDA 库,最后我配置了 qemu/kvm 和 virt-manager,以便可以在 Ubuntu 上虚拟化 FreeBSD。现在,问题是:我如何“告诉”FreeBSD 使用我 PC 上的一个 GPU 运行 Xorg。实际上我的系统上有两个 GPU。我默认使用的 GTX 1060(已连接我的显示器)和通常用于传递到另一个操作系统的 RTX 2080 ti。当我使用 Linux 作为主机操作系统时,我想虚拟化 Windows,并使用 qemu-kvm 和 virt-manager 在 Windows 中传递 RTX 2080 ti;当我使用 FreeBSD 作为主机操作系统时,我想使用 bhyve 将 RTX 2080 ti 传递到 Linux 客户操作系统。但是当我使用 Windows 11 作为主机操作系统并使用 Ubuntu 作为客户操作系统时,如何使用 qemu-kvm 和 virt-manager 将我的 RTX 2080 ti 传递到 FreeBSD?下面您可以看到目前在 Ubuntu 22.04 中识别的所有 PCI 设备:

# lspci
0301:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
05c0:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
117a:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
242b:00:00.0 3D controller: Microsoft Corporation Basic Render Driver
4e53:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
5dc2:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
6164:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
6251:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
7c22:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
840d:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
94be:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
ad48:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
ae16:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
af96:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
baff:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
d5cc:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio filesystem (rev 01)
d9a5:00:00.0 System peripheral: Red Hat, Inc. Virtio file system (rev 01)
de65:00:00.0 SCSI storage controller: Red Hat, Inc. Virtio console (rev 01)
fd8d:00:00.0 3D controller: Microsoft Corporation Basic Render Driver

唯一可以使用的两个虚拟图形适配器如下:

 242b:00:00.0 3D controller: Microsoft Corporation Basic Render Driver
 fd8d:00:00.0 3D controller: Microsoft Corporation Basic Render Driver

我已经尝试在 FreeBSD 中配置 Xorg,在xorg配置文件我看到的唯一一张图形“卡片”,“00:01.0 VGA 兼容控制器 RedHat QXL 半虚拟显卡“ :

1

像这样 :

2

不幸的是它不被接受为有效的显卡:

3

我应该怎么做才能在 FreeBSD 上运行一个可用的图形环境?也许我应该尝试通过这两个图形适配器之一

242b:00:00.0 3D controller: Microsoft Corporation Basic Render Driver
fd8d:00:00.0 3D controller: Microsoft Corporation Basic Render Driver

在 virt-manager 中它们就像是物理显卡?我非常怀疑它是否可以这样工作。

无论如何,这些是我的系统上的物理 GPU:

4

两者都可以在 Windows 11 和 Ubuntu 上识别:

# nvidia-smi

+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 536.40                 Driver Version: 536.40       CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                     TCC/WDDM  | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce GTX 1060 3GB  WDDM  | 00000000:01:00.0  On |                  N/A |
| 57%   41C    P2              25W / 120W |    710MiB /  3072MiB |      0%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+
|   1  NVIDIA GeForce RTX 2080 Ti   WDDM  | 00000000:02:00.0 Off |                  N/A |
| 31%   40C    P8              21W / 250W |     74MiB / 11264MiB |      0%              |
+_________________________________________+______________________+______________________|

一些背景知识:

Windows 版本 = Windows 11 PRO 版本 10.0.22000.2176

WSL2 版本 = 1.3.11.0

内核版本 = 5.15.90.2-3-microsoft-standard

发行版 = Ubuntu 22.10

版本内核:5.15.90.2-3

版本 WSLg:1.0.54

版本 MSRDC:1.2.4240

版本 Direct3D:1.608.2-61064218

版本 DXCore:10.0.25880.1000-230602-1350.main

相关内容