给hyper v中的Llinux GPU分区
staralt/dxgkrnl-dkms: GPU-P (dxgkrnl) on Hyper-V Linux VM with Latest Kernel
目前看来加速什么的别想了。。。大概能cuda运行。。。truenas 24是不行的。。。估计只能老版本的23.10.2 @ 6.6.44-production+truenas
我在PVE下成功了。。。安装的图形界面只有kde可以用gnome全系列各种闪退。。。
第一步
在 windows
的 powershell
中输入下面的,得是管理员模式就是 win+x
再按 a
虚拟机需要关机
$vm = "ENTER YOUR VM NAME"
# Remove current GPU-P adapter
Remove-VMGpuPartitionAdapter -VMName $vm
# Add GPU-P adapter
Add-VMGpuPartitionAdapter -VMName $vm
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionVRAM 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionVRAM 11
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionVRAM 10
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionEncode 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionEncode 11
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionEncode 10
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionDecode 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionDecode 11
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionDecode 10
Set-VMGpuPartitionAdapter -VMName $vm -MinPartitionCompute 1
Set-VMGpuPartitionAdapter -VMName $vm -MaxPartitionCompute 11
Set-VMGpuPartitionAdapter -VMName $vm -OptimalPartitionCompute 10
Set-VM -GuestControlledCacheTypes $true -VMName $vm
Set-VM -LowMemoryMappedIoSpace 1Gb -VMName $vm
Set-VM -HighMemoryMappedIoSpace 32GB -VMName $vm
$vm = "ENTER YOUR VM NAME"
要改成具体你的虚拟机名
开始运行你的虚拟机
Start-VM -VMName $vm
第二步
还在 windows
中 powershell
中
准备你的驱动复制到 linux
中前提是开启了 SSH
前两行要改的 ip
可以是你的 linux
的计算机名。当然原文的 ip addr
也可以这是 debian
的指令,我也只有 pve
和 truenas
的需求其他我就不折腾了。。。
$username="ENTER YOUR USERNAME"
$ip="192.168.0.161"
# Create a destination folder.
ssh ${username}@${ip} "mkdir -p ~/wsl/drivers; mkdir -p ~/wsl/lib;"
# Copy driver files
# https://github.com/brokeDude2901/dxgkrnl_ubuntu/blob/main/README.md#3-copy-windows-host-gpu-driver-to-ubuntu-vm
(Get-CimInstance -ClassName Win32_VideoController -Property *).InstalledDisplayDrivers | Select-String "C:\\Windows\\System32\\DriverStore\\FileRepository\\[a-zA-Z0-9\\._]+\\" | foreach {
$l = $_.Matches.Value.Substring(0, $_.Matches.Value.Length - 1)
scp -r $l ${username}@${ip}:~/wsl/drivers/
}
scp -r C:\Windows\System32\lxss\lib ${username}@${ip}:~/wsl/
scp -r "C:\Program Files\WSL\lib" ${username}@${ip}:~/wsl/
如果你暂时没有ssh可以只执行,暂时复制到桌面
(Get-CimInstance -ClassName Win32_VideoController -Property *).InstalledDisplayDrivers | Select-String "C:\\Windows\\System32\\DriverStore\\FileRepository\\[a-zA-Z0-9\\._]+\\" | foreach {
$l = $_.Matches.Value.Substring(0, $_.Matches.Value.Length - 1)
$la="~\Desktop\wsl\drivers\"+$(Get-Item $l).name
Copy-Item $l $la -R
Copy-Item C:\Windows\System32\lxss\lib ~\Desktop\wsl\lib -R
Copy-Item "C:\Program Files\WSL\lib" ~\Desktop\wsl -R -Force
}
第三步
在linux中执行:
curl -fsSL https://content.staralt.dev/dxgkrnl-dkms/main/install.sh | sudo bash -es
如果以前安装失败先执行清理安装:
curl -fsSL https://content.staralt.dev/dxgkrnl-dkms/main/install.sh | sudo bash -es -- clean all
如果没法清除:
sudo dkms status dxgkrnl
再 sudo dkms remove
具体的
如果安装是没有错误的就继续执行下面的指令
sudo rm -rf /usr/lib/wsl
sudo mv ~/wsl /usr/lib/wsl
sudo chmod -R 555 /usr/lib/wsl/drivers/
sudo chmod -R 755 /usr/lib/wsl/lib/
sudo chown -R root:root /usr/lib/wsl
sudo ln -sf /usr/lib/wsl/lib/libd3d12core.so /usr/lib/wsl/lib/libD3D12Core.so
sudo ln -sf /usr/lib/wsl/lib/libnvoptix.so.1 /usr/lib/wsl/lib/libnvoptix_loader.so.1
sudo ln -sf /usr/lib/wsl/lib/libcuda.so /usr/lib/wsl/lib/libcuda.so.1
sudo sed -i '/^PATH=/ {/usr\/lib\/wsl\/lib/! s|"$|:/usr/lib/wsl/lib"|}' /etc/environment
sudo sh -c 'echo "/usr/lib/wsl/lib" > /etc/ld.so.conf.d/ld.wsl.conf'
sudo ldconfig
然后重启
sudo reboot
重启后
linux
中输入
nvidia-smi
如果能运行那就说明成功了
扫描二维码,在手机上阅读