为 Hyper-V 上的 Linux VM 配置 3D 加速
WSL2 默认已经使用了 GPU 半虚拟化(GPU-PV)来进行 3D 加速,GPU-PV 是 RemoteFX 的替代品,但是 GPU-PV 在 Hyper-V 虚拟机启用却比较复杂,Windows 的教程已经有人写了,所以分享下 Hyper-V Linux 虚拟机配置 GPU-PV 的教程。
原文来自:https://www.mbrjun.cn/archives/493/
《为 Hyper-V 上的 Linux VM 配置 3D 加速 - MBRjun博客》
WSL2 默认已经使用了 GPU 半虚拟化(GPU-PV)来进行 3D 加速,GPU-PV 是 RemoteFX 的替代品,但是 GPU-PV 在 Hyper-V 虚拟机启用却比较复杂,Windows 的教程已经有人写了,所以分享下 Hyper-V Linux 虚拟机配置 GPU-PV 的教程
准备
- 一个 Hyper-V Linux 虚拟机,内核版本是 5.15 或 6.0 或 6.1,内核头已安装
- 一个 WSL 2 虚拟机(提取驱动用,提取后可删除,尽量和 Hyper-V 虚拟机使用相同的操作系统)
- Windows 10 最新版本或 Windows 11,x86/x86-64 架构(似乎 ARM 做不到,我没测试)
测试环境
我会使用我喜欢的环境进行测试,如果你正在使用相同的环境,应该可以直接照抄我的命令,如果你正在使用其他发行版或其他硬件,操作步骤可能会有差别
- Windows 11 22H2
- Arch Linux VM,内核:linux-lts
- NVIDIA GeForce RTX 4070 Ti
HV 虚拟机设置
1 - 关闭动态内存
开启动态内存后,GPU-PV 不能正常工作,所以直接为虚拟机设置足够的内存和 swap 并禁用动态内存,这一步骤应该比较简单
2 - 添加 GPU-PV 硬件
首先确保虚拟机已关机,然后按下 Win+X(或右键开始菜单),选择任意一个:
- 命令提示符(管理员)
- PowerShell(管理员)
- 终端(管理员)
- terminal admin
在弹出的窗口中输入这三行命令,每一行结束后,都请按 Enter 键
pwsh
Set-VM -VMName <vmname> -GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 1GB -HighMemoryMappedIoSpace 32GB
Add-VMGpuPartitionAdapter -VMName <vmname>
其中 <vmname>
替换为你虚拟机的名称。
完成此步骤后,打开虚拟机并执行 lspci
命令,检查 GPU-PV 设备是否已经成功安装
如果输出中包含 b98b:00:00.0 3D controller: Microsoft Corporation Basic Render Driver
,则说明已正确安装设备
驱动安装
3 - WSL 驱动
进入 WSL 的终端,运行命令:
tar -cvf - /usr/lib/wsl | zstd -T0 > drivers.tzst
将 drivers.tzst
拷贝至 Hyper-V 虚拟机根目录(使用任何你喜欢的方式),然后解压:
unzstd drivers.tzst
tar xvf drivers.tar
然后复制驱动到 /lib
:
cp /usr/lib/wsl/lib/* /usr/lib
如果是 NVIDIA 显卡,还需要额外安装 nvidia-smi
:
cp /usr/lib/wsl/lib/nvidia-smi /usr/bin
4 - 安装 DirectX 驱动
GPU-PV Linux 使用的 DirectX 驱动名为 dxgkrnl
,直接使用 makepkg
进行安装:
cd /tmp
git clone https://github.com/MBRjun/dxgkrnl-dkms-lts
cd dxgkrnl-dkms-lts
makepkg -si
modprobe dxgkrnl
- 仅适用于 6.0 或 6.1 内核,如果是 5.15 内核,可以直接尝试 yay -Sy dxgkrnl-dkms-git 其他内核你需要自己搬驱动
5 - 安装 mesa
pacman -Sy mesa mesa-utils
6 - 检查是否成功安装
完成上面五个步骤,需要先重启系统
ls /dev/dxg -l
lspci -v
如果 /dev/dxg
存在,则 DX 驱动
已正常安装
crw-rw-rw- 1 root root 10, 119 Aug 26 18:24 /dev/dxg
b98b:00:00.0 3D controller: Microsoft Corporation Basic Render Driver
Physical Slot: 600853645
Flags: bus master, fast devsel, latency 0, NUMA node 0
Capabilities: [40] Null
Kernel driver in use: dxgkrnl
Kernel modules: dxgkrnl
7 - 检查 NVIDIA 显卡信息和 CUDA 信息
运行 nvidia-smi
:
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)