目录

DXGKRNL驱动文件笔记

wslg和wsl的gpu compute引入了hyperv的dxgkrnl模组,这玩意需要win上面wddm驱动安装时释放的文件作为linux端的资源。wsl默认会挂载这些文件:
https://cdn.nlark.com/yuque/0/2022/png/368236/1652756169586-fe38c574-90b8-416d-b206-43895da5cdc6.png#clientId=u590eccaa-e7da-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=69&id=uccfe20ef&margin=%5Bobject%20Object%5D&name=image.png&originHeight=69&originWidth=596&originalType=binary&ratio=1&rotation=0&showTitle=false&size=6337&status=done&style=none&taskId=ucd8058d8-9dda-41ca-a8c0-ef90075c70a&title=&width=596
为了在hyperv里面也能用上这个功能,我们需要将这些文件也挂在进hyper-v虚拟机。
解决方案其实有很多,可以直接从wsl里面scp,或者可以尝试smb。但是我采用的是新建vhdx虚拟磁盘拷贝文件然后挂载的方案。

新建虚拟磁盘

使用hyperv向导即可,然后使用磁盘管理工具将其格式化成ntfs,fat系列不支持软连接。

拷贝文件

双击虚拟磁盘,假设我们虚拟磁盘盘符是H

1
2
3
C:\Windows\System32\DriverStore\FileRepository -> H:\drivers

C:\Windows\System32\lxss\lib -> h:\lib

建立软链接(CUDA only)

这里有个小问题,wsl里面经常会有
ldconfig: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link这个报错,这是因为C:\Windows\System32\lxss\lib下libcuda并不是软连接的问题,
解决方案:

1
2
3
4
5
rm libcuda.so.1
rm libcuda.so

mklink libcuda.so.1 libcuda.so.1.1 
mklink libcuda.so libcuda.so.1.1 

挂载

使用您熟悉的方式在linux vm里挂载至相应目录。
然后需要更改ldconfig的路径配置,参考wsl里的配置文件即可。

Linux VM侧

/etc/ld.so.conf.d/wsl.conf中加入

1
/usr/lib/wsl/lib

然后建立一个软连接

1
sudo ln -s /usr/lib/wsl/lib/libd3d12core.so /lib/libD3D12Core.so

参考资料

https://gist.github.com/OlfillasOdikno/f87a4444f00984625558dad053255ace