前段时间微软总算把Linux系统“搬到”Windows上来了。WSL2与之前的版本相比,提高了文件系统性能并增加系统调用的完全兼容性。所以,给人的感觉就是WSL2更加的成熟一些。但是你在使用WSL2服务的时候,你还是无法使用虚拟机的。下面我将介绍如何将WSL2与Windows Terminal结合使用。
注意: WSL 2 仅适用于 Windows 10 版本18917或更高版本,如果你不清楚自己的版本号,那么你可以通过打开设置-系统-关于中的设备参数中查看,或者使用命令systeminfo | find "System Type"
输出自己PC的版本号。
开启WSL下载内核
我们输入以下命令开启设备上的WSL
1 | dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart |
开启成功之后,我们需要重新启动计算机。
接下来,我们去下载最新的Linux内核软件包
切记要下载对应的指令集的更新包,关于二者的差别这里不展开讲,有兴趣的可以看看这个
下载完成之后,双击运行该文件。
安装Linux
完成上面的步骤之后,我们现在去Microsoftstore安装Linux发行版本,我这里选择的是Ubuntu18.04,个人可以随意选择,自己用着顺手就行。
下载完成之后,我们点击启动,创建用户和密码。
配置
我们输入wsl -l -v
查看当前的版本,如果你的WSL处于1的话,我建议切换至2。因为我个人在安装Linux发行版的时候,当我点击启动Ubuntu打算创建用户和密码的时候,上面显示“当前的网络名已经不再可用”。如果你在过程中也遇到了这样的问题,那么请这样操作。
wsl --set-version Ubuntu-18.04 2
你也可以使用命令默认使用WSL2
wsl --set-default-version 2
启动
启动Ubuntu的方式有两种,一是通过点击Ubuntu的图标使其运行,另一种就是使用wsl命令运行。因为接下来要与WindowsTerminal结合使用,所以我将会用wsl命令来启用Ubuntu。
Windows Terminal
注意:以下是关于WindowsTerminal的相关的一些配置,可以选择跳过,不影响WSL2和Linux发行版的使用,但是如果希望把Windows Terminal作为一个命令行工具,那么下面的配置你可以考虑一下。
WindowsTerminal是一款集成了Windows上的PowerShell、CMD以及Windows Linux子系统的终端。Windows自身的命令控制台过于简陋,所以我们不妨使用Windows Terminal来替代cmd和power shell,只需要简单的配置一些功能,就能实现很多常用的Linux操作命令。
vim配置
Vim是一款优秀的Linux文本编辑器。我们在Windows下编辑一些一些配置文件的时候很有作用。
1 | 1.首先,我建议先去下载一个Vim,安装的时候注意路径中不要包含中文路径。 |
Git Bash 配置
GitBash是一个Git命令处理器,通常运行于文本窗口中,并能执行用户直接输入的命令。更多资料——https://zh.wikipedia.org/zh-cn/Git
其实,我自己在网上看到很多的将GitBash配置到WindowsTerminal下都是通过修改WindowsTerminal中的JSON文件来实现的。但是实际中,WindowsTerminal已经精简了很多的冗长的代码,添加配置文件也变得更加的简单。
1 | 1.首先,你需要去下载一个Git |
但是,完成相关的bash配置之后我们会发现,当我们使用命令浏览磁盘下具有中文的文件夹时会出现乱码现象。其实这个很好解决,我们只需要在Git文件路径下找到bash.bashrc文件,例如我的路径D:\BigDataTools\Git\Git\etc。
然后打开文件进行编辑,在文件后面添加
1 | export LANG="zh_CN.UTF-8" |
之后,保存退出,重启终端,这个时候我们就会发现问题解决了。
关于Windows Terminal的配置部分算是额外添加补充的,但是没有这些配置也不影响我使用WSL2以及Linux发行版。
完成这些配置之后,接下来我们就可以使用命令在Windows Terminal中来启动Ubuntu了实现操作文件的效果了。
1 | wsl 启用Ubuntu |
WSL1和WSL2
WSL1和WSL2到底有哪些不一样呢?
WSL1的主要问题是
1 | 文件 I/O 慢,尤其是在大量IO操作时,例如使用 git 克隆仓库; |
WSL2改进方面
1 | 相比较于 WSL 1 使用翻译层将 linux 系统调用转化成 windows 系统调用, |
还有许多的地方二者都有不一样的地方,以及什么情况下选择哪一种版本更加合适,内容太多我没有办法一一列举,我强烈建议阅读微软官方文档,上面对于二者的描述很详细,很清楚。
在WSL2下安装Docker
Docker Desktop for Windows 支持 64 位版本的 Windows 10 Pro,且必须开启 Hyper-V(若版本为 v1903 及以上则无需开启 Hyper-V),或者 64 位版本的 Windows 10 Home v1903 及以上版本。更多的详细情况可以参阅官方文档
在安装好WSL2,并且没有问题出现之后,开始着手安装docker。在Docker Desktop官方下载地址下载好.exe文件。
双击.exe文件进行安装,勾选为WSL2添加需要的配置文件和创建开始菜单(看到两个勾就可以了),点击下一步开始安装。等待一会儿就会安装完成,点击close。
这个时候如果你能够正常打开docker那么是最好的,如果出现了报错的话,例如
那么你就需要下载WSL2内核的更新包,前往上面给出的链接下载。
又或者是下面这个样子的。
这里需要需要注意三点:
1.我们首先要保证该启用的功能都启用了。
2.我们需要使用的是WSL2版本来操作docker,所以你要先确定自己当前的版本。
wsl -l -v
查看当前版本
wsl --set-default-version 2
将WSL2设置为默认版本
3.输入在cmd中输入 bash 或者 wsl 都报错, 提示参考的对象类型不支持尝试的操作。
输入 netsh winsock reset
,使用管理员权限运行该命令。然后重新启动docker。
启动docker之后,我们需要对docker在WSL2下进行一些设置:
默认的访问方式去访问官方仓库太慢了,我们需要配置一个镜像源。我们在docker engine registry-mirrors
中配置镜像站点。
1 | "https://hub-mirror.c.163.com", |
这四个分别是网易源,阿里源,华为源,还有daocloud,可以根据自己的情况进行更换,只要保持相对应的格式就可以。
完成这些配置之后,我们现在进行检查。
1 | 检查wsl2下的安装docker是否成功 |
关于更多docker操作命令,使用方法等,这里有一份docker从入门到精通的教程。
VM虚拟机还是WSL2
就安装配置来说,WSL2的安装可比新建虚拟机导入ISO镜像文件来的快多了。而且WSL2启动快,资源占用也少一些,共享文件和网络系统,节省了不少的折腾时间。所以是不是意味着我们可以和VM虚拟机说byebye了?
这可不见得,对于是使用WSL2还是VM虚拟机,还得看自己的需求。
1.如果你是一个萌新,那么建议使用虚拟机,对于命令不熟悉的你,最好不要直接在Windows上直接操作,万一出现什么问题解决起来可能要比你新建虚拟机长不少时间。在VM虚拟机就无所谓了,快照谁用谁真香,万一有什么错误还可以通过快照恢复。而且VM虚拟机有着更加友好的GUI界面,这对于新手来说也是很重要的一点,但是WSL2就显得比较简陋了。
2.VM虚拟机中的系统是一个较为完整的系统,能够很大程度上模拟真实的环境。而WSL2就只有一个轻量级的Linux内核而已,所以二者在功能性上丰富程度是相差较大,在这一点上VM虚拟机完胜WSL2。所以,如果你想体验一个较为完整的Linux系统,建议VM虚拟机。
目前,微软正在与VM进行合作,现在的VMWorkstation16允许Hyper-V与VM虚拟机同时使用了。相信以后估计不用再为两者的二选一问题而伤脑筋了。
参考文章
1.解决idea Terminal配置git bash中文乱码