宿主机环境:
windows service 2025 数据中心版

虚拟机:ubuntu 22.04

注:
1、测试过ubuntu 24.04,但是微软官方的WSL2-Linux-Kernel暂未支持到24.04,折腾失败,用22.04可正常使用

2、暂时略过怎么安装Hyper-V的过程,网上资料很多

踩坑点:

1、Hyper-V安装Linux虚拟机,需要关闭设置=>安全=>启用安全启动
2、windows service配置直通后,可能会出现虚拟机无法启动的情况
3、出现错误:/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link,需要重新生成软连接,正文会详细讲解

步骤

1. 在 Windows 上添加 GPU 分区到虚拟机

使用管理员权限打开 PowerShell,执行下面命令。将 <vmname> 替换为 Hyper-V 虚拟机的名字。

Set-VM -VMName <vmname> -GuestControlledCacheTypes $true -LowMemoryMappedIoSpace 1GB -HighMemoryMappedIoSpace 32GB
Add-VMGpuPartitionAdapter -VMName <vmname>

执行完上面的命令后,可以在你的虚拟机执行下面的命令查看设备,如果能正确看到有设备列出,说明 GPU 分区已经添加成功了。

sudo lspci -v

2. 安装 dxgkrnl 驱动

参考 Ubuntu 21.04 VM with GPU acceleration under Hyper-V…?

创建一个脚本文件,例如 driver.sh,内容如下:

#!/bin/bash -e
BRANCH=linux-msft-wsl-5.10.y

if [ "$EUID" -ne 0 ]; then
    echo "Swithing to root..."
    exec sudo $0 "$@"
fi

apt-get install -y git dkms

git clone -b $BRANCH --depth=1 https://github.com/microsoft/WSL2-Linux-Kernel
cd WSL2-Linux-Kernel
VERSION=$(git rev-parse --short HEAD)

cp -r drivers/hv/dxgkrnl /usr/src/dxgkrnl-$VERSION
mkdir -p /usr/src/dxgkrnl-$VERSION/inc/{uapi/misc,linux}
cp include/uapi/misc/d3dkmthk.h /usr/src/dxgkrnl-$VERSION/inc/uapi/misc/d3dkmthk.h
cp include/linux/hyperv.h /usr/src/dxgkrnl-$VERSION/inc/linux/hyperv_dxgkrnl.h
sed -i 's/\$(CONFIG_DXGKRNL)/m/' /usr/src/dxgkrnl-$VERSION/Makefile
sed -i 's#linux/hyperv.h#linux/hyperv_dxgkrnl.h#' /usr/src/dxgkrnl-$VERSION/dxgmodule.c
echo "EXTRA_CFLAGS=-I\$(PWD)/inc" >> /usr/src/dxgkrnl-$VERSION/Makefile

cat > /usr/src/dxgkrnl-$VERSION/dkms.conf <<EOF
PACKAGE_NAME="dxgkrnl"
PACKAGE_VERSION="$VERSION"
BUILT_MODULE_NAME="dxgkrnl"
DEST_MODULE_LOCATION="/kernel/drivers/hv/dxgkrnl/"
AUTOINSTALL="yes"
EOF

dkms add dxgkrnl/$VERSION
dkms build dxgkrnl/$VERSION
dkms install dxgkrnl/$VERSION

注意:BRANCH 的值根据你的系统进行替换,可以执行 uname -a 查看具体需要替换的版本。

然后执行下面的命令安装驱动:

bash driver.sh

3. 从宿主机中拷贝 GPU 驱动到虚拟机

这里主要有两部分的驱动需要拷贝:

  1. 将宿主机中 xxx/Windows/System32/lxss/lib/* 的文件拷贝到虚拟机中的 /usr/lib/wsl/lib/
  2. 将宿主机中 xxx/Windows/System32/DriverStore/FileRepository/nvmdsi.inf_amd64_* 的目录拷贝到虚拟机中的 /usr/lib/wsl/drivers/

这是正常的copy的方式,当然,如果你本机已经安装了wsl,可以直接copy wsl的/usr/lib/wsl/直接到虚拟机中的/usr/lib/wsl/

copy完成后修改驱动的权限:

chmod -R 0555 /usr/lib/wsl

4. 配置动态链接库搜索路径并更新

直接copy过来的libcuda.so.1软链接是不能使用的,需要删除重新生成软连接

sudo rm /usr/lib/wsl/lib/libcuda.so.1
sudo ln -s libcuda.so /usr/lib/wsl/lib/libcuda.so.1

之后配置动态链接库搜索路径并更新

echo "/usr/lib/wsl/lib" > /etc/ld.so.conf.d/ld.wsl.conf
ldconfig

5. 重启虚拟机

【重启,到这没报错就重启虚拟机】
重启后执行下面的命令,查看能否正常输出:

ls -l /dev/dxg
/usr/lib/wsl/lib/nvidia-smi

如果输出正常的话,说明 GPU 直通成功了。(也可以将 nvidia-smi 直接软连接到 /usr/bin/ 目录下,这样就可以直接输入 nvidia-smi 执行)




参考资料:

https://blog.vogelcs.com/2024/05/21/Windows%E4%B8%8B%E7%9B%B4%E9%80%9AGPU%E8%AE%BE%E5%A4%87%E5%88%B0Hyper-V%E7%9A%84Ubuntu%E8%99%9A%E6%8B%9F%E6%9C%BA/

【hyper-v虚拟机安装ubuntu,免费开源linux桌面操作系统,详细安装教程】 https://www.bilibili.com/video/BV1QG411e7pn/?share_source=copy_web&vd_source=a8cb3aa675ec9bad747e8b96437b52da

【虚拟机打游戏,Hyper-V使用独立显卡教程】 https://www.bilibili.com/video/BV1o84y1y7i3/?share_source=copy_web&vd_source=a8cb3aa675ec9bad747e8b96437b52da

标签: none

已有 4 条评论

  1. 文章中的实用建议和操作指南,让读者受益匪浅,值得珍藏。

  2. 作者的布局谋篇匠心独运,让读者在阅读中享受到了思维的乐趣。

  3. 新盘首开 新盘首开 征召客户!!!

  4. 2025年10月新盘 做第一批吃螃蟹的人coinsrore.com
    新车新盘 嘎嘎稳 嘎嘎靠谱coinsrore.com
    新车首发,新的一年,只带想赚米的人coinsrore.com
    新盘 上车集合 留下 我要发发 立马进裙coinsrore.com
    做了几十年的项目 我总结了最好的一个盘(纯干货)coinsrore.com
    新车上路,只带前10个人coinsrore.com
    新盘首开 新盘首开 征召客户!!!coinsrore.com
    新项目准备上线,寻找志同道合的合作伙伴coinsrore.com
    新车即将上线 真正的项目,期待你的参与coinsrore.com
    新盘新项目,不再等待,现在就是最佳上车机会!coinsrore.com
    新盘新盘 这个月刚上新盘 新车第一个吃螃蟹!coinsrore.com

添加新评论