我的输出:
$ inxi -G
Graphics:
Device-1: Microsoft Basic Render Driver driver: dxgkrnl v: 2.0.1
Display: wayland server: Microsoft Corporation X.org driver: gpu: dxgkrnl
resolution: 1: 1920x1080~60Hz 2: 1920x1080~60Hz
OpenGL: renderer: llvmpipe (LLVM 13.0.1 256 bits)
v: 4.5 Mesa 23.0.0-devel (git-4b077ffb98)
$ lspci -v |grep -A8 VGA
lspci: Unable to load libkmod resources: error -2
系统 :
- 华硕 ZenBook UX325EA Windows 11
- WSL2 Ubuntu 22.04 Jammy
- 英特尔 i7 第 11 代 / 英特尔 Iris Xe 显卡
答案1
正如评论中提到的,当 Ubuntu 在 WSL2 下运行时,您实际上并没有安装(大多数1 )硬件驱动程序。
WSL2 是多种技术的有趣组合:
WSL2 本身是一个“托管虚拟机”。作为最终用户,我们实际上并不与虚拟机本身交互。由于它无论如何都是虚拟化的,我们很少会在其中安装硬件驱动程序。例如,在与 VirtualBox 交互时,您会安装 VirtualBox 显示驱动程序,并且主持人操作系统提供硬件显示驱动程序。
您的 Ubuntu 发行版在该 VM 内的“容器”内运行,使用命名空间和 cgroup。这类似于 Docker 和其他容器技术的工作方式。同样,在容器内,我们很少安装硬件驱动程序。容器依赖于主机 VM(在本例中为 WSL2)的内核和驱动程序(在本例中为虚拟 WSL2 驱动程序)。
图形功能通过 WSLg 提供,它实际上使用 RDP 协议在虚拟 RDP 会话中显示 Wayland 和 X 应用程序,WSL 会自动从 Windows 连接到该会话。正如您可能想象的那样,视窗您的硬件的显示驱动程序正在用于此功能。
GPU 计算任务由 WSL2 处理直接机器学习(对于 Nvidia 来说,还有 CUDA)库,这些库在启动时会“注入”到发行版(容器)中。如果我理解正确的话,在 WSL2 上编写 ML 任务是通过 DirectML 完成的,该技术使用 TensorFlow(1 和 2)和 PyTorch 实现。根据微软文档:
该软件包可加速 AMD、Intel 和 NVIDIA GPU 上的工作流程。
再次,这是通过视窗GPU 驱动程序,在 WSL2 中运行的 DirectML 库知道如何在 Linux 实现和 Windows 主机驱动程序之间代理数据。
脚注:
1 USB 驱动程序可以例外。WSL2 支持 USB/IP,允许 USB 设备从 Windows 主机共享到 Linux 发行版。在这种情况下,设备的实际硬件驱动程序必须在 Linux 中可用。