WSL,即Windows Subsystem on Linux。中文叫Linux子系统。可以在windows里,直接启动一个linux系统,用过通过命令行控制。就和远程ssh差不多。但是,比远程ssh方便。你可以用熟悉的Linux命令轻松的操作windows文件,也可以用windows访问linux里面的文件。
除了文件,应用程序也是互通的。在WSL启动的web服务,直接在Windows用localhost打开就行了,端口都不用换。
从WSL 1.0,我就开始使用它了。有了它,很多东西就可以直接丢掉了。比如putty,你想,你可以直接启动一个linux,那么你就在Linux里面访问ssh了,你要putty干嘛?合并Windows文件,我直接用linux命令了。一行cat命令,省下好几行逻辑复杂的python。git也可以考虑删除了,因为linux自带git。
WSL 1.0 是没有UI界面。不过,我觉得界面这东西也不需要了。编辑文本文件我直接用Notepad++了,干嘛用这么复杂的vim。编程可以用vscode,他直接支持WSL。visual studio也支持WSL。我现在用vscode写python,用visual studio写c++,他们都很好的支持WSL。
WSL 1.0 不支持GPU的。WSL 2.0 开始支持GPU了,微软(Microsoft Developer)5月24日的视频里说的。
另外,我最近安装了Docker,也已经基于WSL了。微软还展示了WSL对UI的支持。
现在,你可以选择安装WSL 1.0 或者 WSL 2.0。不过,如果你要装WSL 2.0,你需要升级你的Windows 10 到19041
https://www.microsoft.com/zh-cn/software-download/windows10
可以在powershell里执行以下命令。
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
可以在powershell里执行以下命令。
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
执行完这句命令以后,还需要升级wsl kernel。在这里直接下载。
https://docs.microsoft.com/en-us/windows/wsl/wsl2-kernel
打开Windows 商店,你就可以安装Linux了。
中国访问别的外网很慢,但是windows 商店的速度是刚刚的。我这里下载速度20兆,吓死我了。
很快,你就会看到如下节目,输入用户名,密码,开始你的WSL之旅吧。
WSL里面访问windows文件很简单,你只需要输入/mnt/d,就是d盘了,/mnt/e就是e盘,以此类推。
你还可以直接在WSL启动windows程序。比如,你可以直接启动explorer,如果你加上.就直接启动当前WSL文件夹了。
explorer.exe .
启动explorer以后,你会看到路径是\wsl$开头的,没错,你也可以直接输入这个地址访问。
除此之外,你还可以启动vscode。(别忘了点)
code .
插一句,不知道你是不是和我一样,兴奋的决定到windows里面去修改linux的软件安装镜像。我改了半天,不让保存。所以,还是要回到wsl里面去改。微软不建议在外面修改linux文件。不过,你还是可以在wsl里面自由的修改windows文件。所以,我把代码都放在了windows,把程序安装在wsl。如果要重装,直接删除linux并重装。
同时,我把linux各种软件的安装文件都放在d盘。比如anaconda linux版,cmake等。安装的时候,我直接访问/mnt/d/linux就行了。解压的时候,也直接解压在这里。不过要用WSL解压,否则会有问题。问题就是可执行文件变成不可执行文件了。
把文件都放在windows的d盘,还有另一个原因。那就是wsl必须安装在系统盘,即c盘。这样导致c盘越来越大。linux的需要用的文件,仍然放在windows中,可以防止wsl占满c盘。
WSL是通过wsl命令来管理的。你在cmd或者powershell输入wsl可以直接打开默认的linux。输入
wsl --help
可以查看帮助。
最好的检查wsl版本的方法就是执行
wsl -l -v
如果出来的是帮助,那么说明wsl还是1.0。如果wsl是2.0,会显示已经安装的linux。
wsl升级到2.0以后,安装的linux并不会自动升级到2.0,需要执行以下命令。
wsl --set-version Ubuntu-20.04 2
这个升级似乎很快,几分钟就好了。
下面这个命令可以设置linux默认使用wsl 2.0。
wsl --set-default-version 2
有时候,在升级wsl,安装docker wsl版的时候,会碰到
“参考的对象类型不支持尝试的操作”
或者英语
“The attempted operation is not supported for the type of object referenced”
可以执行
netsh winsock reset
官方文档: https://docs.microsoft.com/en-us/windows/wsl/install-win10