前言:前不久双系统的ubantu被我自编译的内核搞挂了,突然发现windows的子系统功能,相当于是一个官方虚拟机,比较方便,没必要再装双系统了。
安装教程
按照官方教程来走一般没问题
步骤 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 内核更新包
-
下载最新包:
备注
如果使用的是 ARM64 计算机,请下载 ARM64 包。 如果不确定自己计算机的类型,请打开命令提示符或 PowerShell,并输入:
systeminfo | find "System Type"
。 -
运行上一步中下载的更新包。 (双击以运行 - 系统将提示你提供提升的权限,选择“是”以批准此安装。)
安装完成后,请继续执行下一步 - 在安装新的 Linux 分发时,将 WSL 2 设置为默认版本。 (如果希望将新的 Linux 安装设置为 WSL 1,请跳过此步骤。)
备注
有关详细信息,请参阅 Windows 命令行博客上的文章对更新 WSL2 Linux 内核的更改。
步骤 5 - 将 WSL 2 设置为默认版本
打开 PowerShell,然后在安装新的 Linux 发行版时运行以下命令,将 WSL 2 设置为默认版本:
wsl --set-default-version 2
步骤 6 - 安装所选的 Linux 分发
-
打开 Microsoft Store,并选择你偏好的 Linux 分发版。
单击以下链接会打开每个分发版的 Microsoft Store 页面:
-
在分发版的页面中,选择“获取”。
首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。未来的所有启动时间应不到一秒。
然后,需要为新的 Linux 分发版创建用户帐户和密码。(利用好这次机会,之后再改密码设置不了简单密码了)
祝贺你!现已成功安装并设置了与 Windows 操作系统完全集成的 Linux 分发!
安装 Windows 终端(推荐)
Windows 终端可启用多个选项卡(在多个 Linux 命令行、Windows 命令提示符、PowerShell 和 Azure CLI 等之间快速切换)、创建键绑定(用于打开或关闭选项卡、复制粘贴等的快捷方式键)、使用搜索功能,以及使用自定义主题(配色方案、字体样式和大小、背景图像/模糊/透明度)。 了解详细信息。
推荐理由主要是终端可以开启多个命令行,但其实你可以多开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
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 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: .
自己踩坑之后的解决办法,推荐按照我的顺序来
- 安装好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
加入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()