适用于 Linux 的 Windows 子系统教程

前言:前不久双系统的ubantu被我自编译的内核搞挂了,突然发现windows的子系统功能,相当于是一个官方虚拟机,比较方便,没必要再装双系统了。

安装教程

按照官方教程来走一般没问题

适用于 Linux 的 Windows 子系统安装指南 (Windows 10)

步骤 1 - 启用适用于 Linux 的 Windows 子系统

需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。

以管理员身份打开 PowerShell 并运行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

 

步骤 2 - 检查运行 WSL 2 的要求(win10处于最新版即可)

需要运行 Windows 10。

  • 对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
  • 对于 ARM64 系统:版本 2004 或更高版本,采用 内部版本 19041 或更高版本。
  • 低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本。

若要检查 Windows 版本及内部版本号,选择 Windows 徽标键 + R,然后键入“winver”,选择“确定”。 (或者在 Windows 命令提示符下输入 ver 命令)。 更新到“设置”菜单中的最新 Windows 版本

 备注

如果运行的是 Windows 10 版本1903 或 1909,请在 Windows 菜单中打开“设置”,导航到“更新和安全性”,然后选择“检查更新”。 内部版本号必须是 18362.1049+ 或 18363.1049+,次要内部版本号需要高于 .1049。 阅读详细信息:WSL 2 即将支持 Windows 10 版本 1903 和 1909。 请参阅疑难解答说明

 

步骤 3 - 启用虚拟机功能

安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。

以管理员身份打开 PowerShell 并运行:

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

重新启动 计算机,以完成 WSL 安装并更新到 WSL 2。

步骤 4 - 下载 Linux 内核更新包

  1. 下载最新包:

     备注

    如果使用的是 ARM64 计算机,请下载 ARM64 包。 如果不确定自己计算机的类型,请打开命令提示符或 PowerShell,并输入:systeminfo | find "System Type"

  2. 运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择“是”以批准此安装。)

安装完成后,请继续执行下一步 - 在安装新的 Linux 分发时,将 WSL 2 设置为默认版本。 (如果希望将新的 Linux 安装设置为 WSL 1,请跳过此步骤。)

 备注

有关详细信息,请参阅 Windows 命令行博客上的文章对更新 WSL2 Linux 内核的更改

步骤 5 - 将 WSL 2 设置为默认版本

打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:

wsl --set-default-version 2

 

步骤 6 - 安装所选的 Linux 分发

  1. 打开 Microsoft Store,并选择你偏好的 Linux 分发版。

    Microsoft Store 中的 Linux 分发版的视图

    单击以下链接会打开每个分发版的 Microsoft Store 页面:

  2. 在分发版的页面中,选择“获取”。

首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。未来的所有启动时间应不到一秒。

然后,需要为新的 Linux 分发版创建用户帐户和密码。(利用好这次机会,之后再改密码设置不了简单密码了)

祝贺你!现已成功安装并设置了与 Windows 操作系统完全集成的 Linux 分发!

安装 Windows 终端(推荐)

Windows 终端可启用多个选项卡(在多个 Linux 命令行、Windows 命令提示符、PowerShell 和 Azure CLI 等之间快速切换)、创建键绑定(用于打开或关闭选项卡、复制粘贴等的快捷方式键)、使用搜索功能,以及使用自定义主题(配色方案、字体样式和大小、背景图像/模糊/透明度)。 了解详细信息。

安装 Windows 终端

推荐理由主要是终端可以开启多个命令行,但其实你可以多开Ubuntu应用来打开多个命令行。

终端可以点上方的下拉菜单打开多个系统的命令行,在右上角的通过在设置里改配置项里改顺序。

注意事项

Error “0x80070032”

我后来遇到了报错“0x80070032”,如果你也遇到了,就是在步骤3出问题了,可以手动打开Hyper-V功能

位置在“控制面板”-(查看方式:小图标)“程序和功能”-“启用或关闭Windows功能”-勾选“Hyper-V”并确定。之后重启即可

推荐Linux版本如下

安装的时候注意找指定版本,20版的还是兼容性不够

虚拟机安装位置

在C:UsersuserAppDataLocalPackagesCanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgscLocalStateext4.vhdx

注意虚拟机必须安装在C盘,否则会启动失败

访问本机硬盘资源

本机资源全部自动挂载在了/mnt目录下,非常方便,进入后可以看到自己的c d e f盘

使用CUDA

WSL跟传统的Linux还是有区别的,不能参考Linux那一套去装驱动

参考本博客中的下方内容。

优化方案

以下参考 昌南何许人 https://www.jianshu.com/p/dc32a75e2de4?utm_source=oschina-app

更换apt源

因为Linux子系统的apt源使用的是官方源,需要连接到国外的服务器。所以安装一些软件时下载会很慢,我们可以改用国内的镜像apt源。
国内的镜像源主要有:
阿里源

deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse 
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

科大源

deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse

网易源

deb http://mirrors.163.com/ubuntu/ wily main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ wily-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ wily-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ wily-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ wily-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ wily main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ wily-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ wily-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ wily-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ wily-backports main restricted universe multiverse

sjtu(上海交通大学更新服务器)
deb http://ftp.sjtu.edu.cn/ubuntu/ lucid main multiverse restricted universe 
deb http://ftp.sjtu.edu.cn/ubuntu/ lucid-backports main multiverse restricted universe 
deb http://ftp.sjtu.edu.cn/ubuntu/ lucid-proposed main multiverse restricted universe 
deb http://ftp.sjtu.edu.cn/ubuntu/ lucid-security main multiverse restricted universe 
deb http://ftp.sjtu.edu.cn/ubuntu/ lucid-updates main multiverse restricted universe 
deb-src http://ftp.sjtu.edu.cn/ubuntu/ lucid main multiverse restricted universe 
deb-src http://ftp.sjtu.edu.cn/ubuntu/ lucid-backports main multiverse restricted universe 
deb-src http://ftp.sjtu.edu.cn/ubuntu/ lucid-proposed main multiverse restricted universe 
deb-src http://ftp.sjtu.edu.cn/ubuntu/ lucid-security main multiverse restricted universe 
deb-src http://ftp.sjtu.edu.cn/ubuntu/ lucid-updates main multiverse restricted universe

可以直接使用vim对 /etc/apt/sources.list文件进行修改。
先进行一下备份。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

然后

sudo vim  /etc/apt/sources.list

选择一个源添加到文件最前面或直接替换掉原文件。
保存后运行

sudo apt-get update

使用cmder更便捷使用子系统

 下载网站https://github.com/cmderdev/cmder/releases/

推荐下载cmder_mini.zip ,完整版与mini版的功能是一样的,只是完整版中多了bash。因为我们已经安装了bash所以直接用mini版的就可以了。

打开cmder直接进入的是cmd,我们可以在设置中更改它的startup方式,选择command line ,填入bash -cur_console:p
保存设置,下次打开时就直接进入Linux子系统了。

将cmder添加进win10的环境变量中,这样我们就可以像在Linux系统中那样,在任意文件目录下直接右键打开cmder并进入当前路径了。
比如在桌面点击右键,选择cmder here,这样打开cmder就可以直接进入桌面的路径了。

具体方法是:把cmder路径(比如D:Program Filescmder_mini)添加到环境变量的Path里,保存之后就可以用win+R的方式打开cmder了。

接下来,以管理员方式打开cmd,输入命令 Cmder.exe /REGISTER ALL 。之后就可以直接在右键中打开cmde了。

在Windows10子系统里安装运行桌面(xUbuntu)

参考https://www.cnblogs.com/lee-li/p/11220533.html

如果报错 xfce4-session: Cannot open display: .

参考https://zhuanlan.zhihu.com/p/150555651

自己踩坑之后的解决办法,推荐按照我的顺序来

  • 安装好VcXsrv,启动桌面上的XLaunch
  • 启动,如图选择(这个没有上方的置顶工具栏)

  • 勾选禁用访问控制,其他的默认就行

  • 此时桌面上就有一个黑色窗口
  • 依次执行
sudo apt-get update
sudo apt-get upgrade
  • 安装xfce4

sudo apt-get install xfce4
  • 安装xubuntu(安装很漫长)
sudo apt-get install xubuntu-desktop

如果报错 Errors were encountered while processing

参考https://blog.csdn.net/qingfengxiaosong/article/details/87889995

  • 配置DISPLAY环境变量

由于WSL2其实是用Hyper-V技术实现的一个虚拟机,和WSL1的工作原理不一样,因此如果使用之前网上的方法直接设置DISPLAY=:0.0的话,启动xfce4的时候会出现下面的错误:

lpwm@DESKTOP-FI0NTIP:~$ startxfce4
/usr/bin/startxfce4: X server already running on display :0.0
xrdb: Connection refused
xrdb: Can't open display ':0.0'
Unable to init server: Could not connect: Connection refused
xfce4-session: Cannot open display: .
Type 'xfce4-session --help' for usage.
  • 正确的配置姿势
  • 输入
$ sudo vim /etc/resolv.conf

会显示nameserver后面的地址就是Windows系统虚拟网卡的地址,记一下,假设是192.168.112.1

  • 取消下面两行内容的注释,禁用自动重新生成配置文件,否则重启后这个地址会变
[network]
generateResolvConf = false

在bashrc文件最后追加显示信息(ip是前一步查看的)

echo 'export DISPLAY=export DISPLAY=192.168.112.1:0' >> ~/.bashrc

添加后需要在命令行使之生效

source ~/.bashrc

启动xfce4(确保已启动XLaunch)会跳出来一大堆信息,同时XLaunch中开始了初始化提示

$ startxfce4

目前看起来xfc4界面会模糊,因为默认分辨率太低,我们可以修改一下

参考https://blog.csdn.net/opportunityl/article/details/107090401

#输入以下查看1080p配置

# cvt 1920 1080
# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

# 查看显示器信息,注意Virtual1所在xxx connected的位置是显示器名称

# xrandr
Screen 0: minimum 0 x 0, current 1920 x 1080, maximum 32767 x 32767
Virtual1 connected primary 1920x1080+0+0 389mm x 228mm
1920x1080 0.00*
1920x1080_60.00 59.96

#设置分辨率

xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync #后面这一串是之前cvt得到的Modeline的信息
xrandr --addmode Virtual1 "1920x1080_60.00" #Virtual1是xrandr得到的显示器名称
xrandr --output default --mode "1920x1080_60.00"

#然后重启xfce4即可,不过这样不是永久的,我们可以保存命令到profile文件中。

echo 'xrandr --newmode "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync' >> ~/.profile
echo 'xrandr --addmode default "1920x1080_60.00"' >> ~/.profile
echo 'xrandr --output default --mode "1920x1080_60.00"' >> ~/.profile

如果还是模糊,那是windows的锅:

右键点击XLaunch的快捷方式或者可执行文件 –> “属性” –> “兼容性” – > “更改高DPI设置” –> 勾选“替代高DPI缩放行为”。

应用后重启XLaunch,瞬间清晰了!

xfce的右上角界面也可以自定义显示内容,参考https://blog.csdn.net/zhousmq/article/details/103772684

在WSL 2中使用CUDA安装流程

参考https://blog.csdn.net/qq_20291997/article/details/106897324

和官方文档

https://docs.microsoft.com/zh-cn/windows/win32/direct3d12/gpu-cuda-in-wsl

https://docs.nvidia.com/cuda/wsl-user-guide/index.html

加入windows预览体验计划

电脑登陆自己的微软账户,打开“系统设置-更新和安全-Windows预览体验计划”点击“开始”以加入计划

windows预览体验计划空白,没有“开始按钮”的话

尝试运行一下下方链接中所描述的powershell命令,检查一下Datacollect这一项,之后看是否正常。

https://www.msftnext.com/fix-blank-or-empty-insider-program-settings-page-in-windows-10/

一定要选取Dev通道(快速通道),随后保存并按照提示重启,随后检查更新即可自动安装最新的快速预览版系统。(一定要安装全部更新)

需要确保win版本高于20150,可在运行(win+R)中执行winver进行确认。

安装wsl2

由于我们之前已经安装了wsl2的ubuntu18.04版本,所以直接下一步。

没安装的话参考上面的几个参考链接。

以管理员身份打开 PowerShell 并运行:

wsl --list --verbose

如果返回的结果中version下的值为2,WSL2就安装成功了。

安装预览版驱动

wsl的驱动跟普通的linux版驱动不一样!请勿在 WSL 中安装任何 Linux 显示驱动程序!
英伟达下载与安装支持WSL的GPU驱动。Windows 显示驱动程序将同时安装本机 Windows 和 WSL 支持的常规驱动程序组件。
在这里插入图片描述
记得按照自己的GPU产品选择对应的驱动,该步骤需要Nvidia账户,登陆之后页面中有下载链接,下载后安装即可。
在这里插入图片描述

在子系统中安装CUDA

先在子系统中安装必要的工具,特别是gcc

sudo apt update
sudo apt install build-essential

前往Nvidia官网下载对应的cuda包,自己用什么版本就下什么版本。

比如我下载10.2版本,按照这个方法就是通过wget下载一个.run文件,然后在子系统里运行。

安装cuda时千万记住不要安装驱动,也就是第一个X要取消,不要安装驱动,不要安装驱动!!!!其余选项该怎么装怎么装,就是不要装驱动!!!!Driver相关一定要N或者X掉!!!!!!

安装后一定有如下提示,Driver: Not Selected。

如果提示缺少相应的依赖库,直接执行如下代码自动安装相应的依赖库

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

安装完了并不能通过nvidia-smi查看显卡信息,但是可以通过下面命令查看

cat /usr/local/cuda/version.txt

(如果没有nvidia-smi命令,是因为没安装CUDA Driver API Version,可以通过命令安装 apt install nvidia-utils-390 ,要注意这个跟CUDA Runtime API是不一样的,后者就是我们装的10.2版本的cuda toolkit)

我们也可以安装pytorch确认cuda的使用是否正常

安装Pytorch

参考官网的安装链接,注意cuda版本

 conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch 

我在下载的时候遇到了pytorch-1.7.1-py3.8_cuda10.2.89_cudnn7.6.5_0.tar.bz2下载失败

Downloading and Extracting Packages
pytorch-1.7.1        | 575.5 MB  | ##6                                                          |   4%

CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/pytorch-1.7.1-py3.8_cuda10.2.89_cudnn7.6.5_0.tar.bz2>
Elapsed: -

An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.

通过提示可以手动下载

https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/pytorch-1.7.1-py3.8_cuda10.2.89_cudnn7.6.5_0.tar.bz2

这个文件,然后运行本地安装

conda install --use-local pytorch-1.7.1-py3.8_cuda10.2.89_cudnn7.6.5_0.tar.bz2

安装好后再执行

 conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch 

这样应该就能装好了

然后测试一下

python
Python 3.8.5 (default, Sep  4 2020, 07:30:14)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.version.cuda)
10.2
>>> exit()
原文地址:https://www.cnblogs.com/smileglaze/p/14271137.html