升级Win10 安装ubuntu子系统、docker、nvidia-docker

1. 为什么升级Win10

据说Windows10内部版本低于20145时,WSL2无法使用GPU,就无法在ubuntu子系统下用GPU跑代码训练模型!
关于这点我没有验证!!

1.1 如何查看Win10版本

win + R,输入winver回车即可获得当前Windows版本号。

如图所示我的系统不满足最低版本要求需要更新。

1.2 更新Windows

那么如何更新系统以达到最低版本要求?其他博主通常的解决方法是:进入系统更新设置,参与Windows预览体验计划,选择Dev渠道,最后更新Windows。我按照上述操作进行更新,但不巧的是最近Win11发布,导致我的系统被直接升到了Win11。啊啊啊!难受的一匹,实在用不惯又回退了系统。
于是我只能另寻他法,在微软的官网里,我找到了预览版的下载地址,大家可以打开网址:https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewiso ,然后找到适合的系统版本进行下载(我选择的是第一个。注意:下载不对会被要求输入秘钥),最后按照说明本地升级即可。

升级之后我的系统版本达到了21354.1,满足最低版本要求。

2. 安装预览版nvidia驱动

下载地址:https://developer.nvidia.com/cuda/wsl

3. 确认开启适用于Linux的Windows子系统

打开“启用或关闭Windows功能”

4. 安装Ubuntu

管理员身份PowerShell执行:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

执行完后重启电脑
将WSL2设置为默认版本,管理员PowerShell下执行

wsl --set-default-version 2

提示"WSL 2 需要更新其内核组件”。下载并安装 WSL2 Llinx内核

随后进入微软商店下载并安装对应的ubuntu版本【注意Ubuntu会被安装在C盘,打算在其他盘安装的小伙伴请参考该文(推荐手动安装):(WSL2安装ubuntu 20.04和更改默认安装位置)[http://www.oopswow.com/2021/01/06/WSL2-install-ubuntu20-and-change-the-default-installation-driver/]】

微软商店显示安装成功后,启动Ubuntu,Ubuntu将开始安装如下图所示:

验证是否将WSL2设置为默认版本,管理员PowerShell下执行

wsl --list --verbose

若显示如下则表示配置成功

卸载方法
在商店安装的ubuntu直接进入Win10应用管理内卸载即可
手动下载安装的Ubuntu,卸载操作如下:

wslconfig /l
# 从列表中选择要卸载的发行版(例如Ubuntu)并键入命令
wslconfig /u Ubuntu

5. 登录Ubuntu

直接开始菜单栏处,即可启动Ubuntu

6. 安装docker

一步步来

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

7. 安装nvidia-docker

7.1 安装cuda

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda-repo-ubuntu1804-11-1-local_11.1.0-455.23.05-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-11-1-local_11.1.0-455.23.05-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu1804-11-1-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

现在需要配置环境变量

vim ~/.bashrc

末尾添加两行:

export PATH=/usr/local/cuda-11.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
source ~/.bashrc

验证是否安装成功

nvcc -V

7.2 安装cuddn

下载cuddn,解压cudnn压缩包
tar -xzvf cudnn-x.x-linux-x64-v8.x.x.x.tgz 会生成一个cuda 文件夹
复制文件

sudo cp cuda/include/cudnn*.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64

更改权限

sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

7.3 安装nvidia-docker【可不用安装】

curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
  sudo apt-key add - \
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update
# 安装nvidia-docker2软件包并重新加载docker守护程序配置
sudo apt-get install -y nvidia-docker2
sudo pkill -SIGHUP dockerd
# 重启docker
sudo service docker stop
sudo service docker start

查资料时才发现从docker 19版本之后,nvidia-docker成为了过去式。不需要单独去下nvidia-docker这个独立的docker应用程序,也就是说gpu docker所需要的Runtime被集成进docker中,使用的时候用--gpus参数来控制。人傻了

8. 安装桌面环境

Xfce4是一个轻量可高度定制的类-unix桌面环境,与wsl相性十分相符
xrdp支持rdp,是Windows原生支持的远程桌面协议,使用“远程桌面连接”即可连接到wsl桌面环境

安装Xfce4和xrdp

sudo apt update
sudo apt install xfce4 xrdp

更改xrdp配置

echo xfce4-session >~/.xsession
sudo vim /etc/xrdp/startwm.sh
#exec /bin/sh /etc/X11/Xsession(也就是最后一行) 前一行插入 xfce4-session

更改xrdp侦听端口
rdp默认侦听端口为3389,Windows 10本身已经占用(如果开启远程桌面的话),此处为了避免冲突我们更换一下监听端口

sudo vim /etc/xrdp/xrdp.ini
#将port=3389更改为3388或者其他可用端口

重启以使配置生效

sudo service xrdp restart

使用
打开windows远程桌面连接,地址填写localhost:3388即可

最后的最后

我放弃了这种方式,预览版有bug,电脑蓝屏好几次,还是老老实实双系统吧,或者等WLS2不在预览版下也能使用GPU的时候

参考

本文转载
https://blog.csdn.net/SUNbrightness/article/details/116783604
https://hanyuulu.github.io/wslDesktop

posted @ 2021-07-03 14:38  MorStar  阅读(663)  评论(0编辑  收藏  举报