虚拟机使用主机显卡(hyper-v和WSL2)

时间:2024-11-14 07:18:54

    • 我的系统版本
    • WSL2+Ubuntu20.04+CUDA
        • 启用WSL2+安装Ubuntu20.04
    • 主机安装WSL Cuda显卡驱动
    • WSL2 Ubuntu安装cuda和cudnn
        • cuda
        • cudnn
        • 安装TensorFlow
        • 使用自带测试程序
        • 测试keras训练模型
        • 参考链接
    • hyper-v+win10
        • 准备iso镜像
        • 使用hyper-v安装win10系统
        • 使用脚本配置GPU-Pv
        • 显卡驱动
    • hyper-v安装ghost备份文件
        • 创建虚拟机
        • 新建一个硬盘
        • 接着将这个硬盘添加到虚拟机里
        • 分区然后还原系统
        • 将DVD驱动器移除
        • 参考链接

我的系统版本

我更新到了最新的版本,这样可以避免很多不必要的麻烦。
在这里插入图片描述

WSL2+Ubuntu20.04+CUDA

启用WSL2+安装Ubuntu20.04

这个很简单,请看:/RenLJ1895/article/details/122741040

主机安装WSL Cuda显卡驱动

在最新的显卡驱动都已经包含了WSL Cuda驱动,所以显卡驱动已经更新到最新版本,就不用重新安装了。另外:WSL2的Ubuntu系统里不需要再安装任何显卡相关的驱动

我的显卡驱动版本
在这里插入图片描述

WSL2 Ubuntu安装cuda和cudnn

cuda

这个和再Ubuntu安装没有多大的区别,CUDA安装的命令查看地址:/cuda-toolkit-archive

我选择的版本是11.6.0,接着再Ubuntu里面一个一个敲下面的命令等待安装完成。

在这里插入图片描述
更新~/.bashrc文件

#把这三行复制到文件底部
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
#更新一下bashrc文件
source ~/.bashrc
 
#更新一下可能需要的依赖
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
 
#用以下代码检查cuda是否检查成功,注意此处的cuda版本是你在toolkit下载那里决定的,这个版本可能和nvidia-smi显示的版本号不一样,可高可低,这是因为nvidia给cuda开了两个api,这两个api只要差不是太远,基本都可以保证正常运行cuda
nvcc -V

在这里插入图片描述
ubuntu中的nvidia-smi目录再/usr/lib/wsl/lib/nvidia-smi,可以建个软链接到/usr/local/bin下,也可以将这个目录加到环境变量里,任何执行nvidia-smi(这里识别出cuda版本是11.7应该是主机的版本,这个不重要)
在这里插入图片描述

cudnn

下载地址:/rdp/cudnn-archive (需要登录,下载最新的, 其实就是11.6)
在这里插入图片描述
解压到cuda安装目录

#以下是安装命令
tar -zxvf cudnn-自己补全版本号.tgz
sudo cp -P cuda/lib64/* /usr/local/cuda-11.6/lib64/
sudo cp cuda/include/ /usr/local/cuda-11.6/include/
 
#为更改读取权限:
sudo chmod a+r /usr/local/cuda-11.6/include/
sudo chmod a+r /usr/local/cuda-11.6/lib64/*
安装TensorFlow

我选择的是tensorflow-gpu==2.8.1, 因为2.0以后的TensorFlow自带了keras,直接import 即可。所以不用额外安装了。

使用自带测试程序

cat /usr/local/cuda/samples/README_CUDA_Samples.txt
这个文件里有个GitHub的链接:/NVIDIA/cuda-samples
把文件拷下来(如果速度很慢,则需要点手段,这个就不说了)
cd /usr/local/cuda/samples
git clone /NVIDIA/
然后编译可执行文件
cd cuda-samples
sudo make
需要等待个十几分钟吧,生成的可执行文件在cuda-samples/bin/x86_64/linux/release 目录
bin/x86_64/linux/release
测试通过,说明环境都没啥问题

测试keras训练模型

在vscode里下载Remote-WSl 插件,左边就会多一个按钮。打开然后创建个目录写代码
在这里插入图片描述
效果(可以看到显存已经占满了,训练也正常跑了)
不过出了很多的警告信息,谷歌搜了下没找到什么原因,算了,能跑就行了
在这里插入图片描述

参考链接

1、/iwanvan/article/details/122119595

hyper-v+win10

准备iso镜像

需要下载和主机系统一样的镜像(主要是为了显卡驱动一模一样,保证直接拷贝主机显卡驱动文件到虚拟机不会出问题)

使用hyper-v安装win10系统

步骤没什么区别

使用脚本配置GPU-Pv

下载脚本:/Sam-Chai/gpu-pv-ps1

修改图中两个位置,第一个为虚拟机的名称,第二个是虚拟机能使用的最大显存。我设置的和主机显卡一样
在这里插入图片描述
然后右键使用powershell运行,这样会不容易看出输出信息。窗口一闪而过

可以使用Powershell ISE来运行,打开位置如下
在这里插入图片描述
将gpu.ps1文件直接拖到这个窗口,点击绿色的执行按钮就能看到输出,没报错输出完成就没问题
在这里插入图片描述

显卡驱动

现在直接打开虚拟机,虽然能在设备管理器里面看到显卡的信息,但是显示代码43,因为确实驱动程序,但是又不能直接使用驱动软件下载驱动。

将虚拟机关机,并且挂着虚拟机的磁盘到主机,双击.vhdx文件就可以在磁盘管理里看到(也可以在磁盘管理右键选择附加VHD),可能会有个报错,可以忽略,因为还没有分配盘符。右键分配一下盘符就行

我已经分配过,一打开就挂载了,图中500G的那个
在这里插入图片描述
然后拷贝主机C:\Windows\System32\DriverStore\FileRepository目录下nv开头的文件夹到虚拟机硬盘F:\Windows\System32\HostDriverStore\FileRepository下(目录需要自己建)
在这里插入图片描述
然后在磁盘管理红圈的部分右键选择分离VHD,磁盘就取消挂载了
在这里插入图片描述
接着虚拟机开机就应该能看到显卡正常工作了
在这里插入图片描述
具体有没有真的正常工作,这个还真不清楚,先跑个鲁大师试试
虚拟机:在这里插入图片描述
主机:
在这里插入图片描述
相差还是挺大的,而且在虚拟机跑鲁大师直接卡死了,要等他测完才能连接到 ,尴尬,虚拟机CPU只给了1核,我说怎么这么卡。

后面在看看玩游戏的表现,跑模型就没必要了,用WSL或者直接在主机里跑更方便。

hyper-v安装ghost备份文件

一开始我不想安装系统,想直接备份主机的系统到ghost文件里。然后再hyper-v还原成虚拟机,但是还原后的虚拟机很卡,基本无法操作,估计是很多驱动都不兼容,分享下如果安装ghost

创建虚拟机

其他步骤一样,就是选择镜像的时候,需要选择PE系统的ISO镜像,我这里选了微PE的镜像(下载微PE,就有生成ISO文件的选项)
在这里插入图片描述

新建一个硬盘

硬盘大小比ghost文件大一点就行,比如我备份的系统文件大小是62G,虚拟硬盘选个63G就行了,选择固定大小(因为看到下面写了更好的性能)
在这里插入图片描述
生成虚拟硬盘文件之后,就是挂载这个硬盘,然后拷贝ghost文件到虚拟硬盘,这样做的目的是因为到时候要在虚拟机里还原系统,ghost文件又不能放系统盘,所以创建个盘来装。装完系统这个盘就可以卸载了

接着将这个硬盘添加到虚拟机里

添加刚才的包含ghost文件的虚拟硬盘
在这里插入图片描述
接着开机,正常应该进入到pe系统

分区然后还原系统

在这里插入图片描述

因为选的第二代,分区的格式必须选择GPT,不能选MBR,第二代引导是UEFI。还原成功后,需要修复下UEFI引导(可能是非必要的)

这个就不截图演示了

将DVD驱动器移除

选择无点应用就可以了,包含ghost文件的虚拟硬盘也可以移除
在这里插入图片描述
如果你也修复了UEFI引导,那么在固件的位置会增加一个文件,这个不用管
在这里插入图片描述
点开机然后应该就能正常进入系统,

参考链接

1、/read/cv15539810
2、/video/BV11u411U7KJ