wsl 简介
Windows Subsystem for Linux(简称WSL)是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。它是由微软与Canonical公司合作开发,其目标是使纯正的Ubuntu 14.04 "Trusty Tahr"映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。
WSL提供了一个微软开发的Linux兼容内核接口(不包含Linux代码),来自Ubuntu的用户模式二进制文件在其上运行。 [4] 该子系统不能运行所有Linux软件,例如那些图形用户界面,以及那些需要未实现的Linux内核服务的软件。不过,这可以用在外部X服务器上运行的图形X Window系统缓解。
您可以:
- 在 Microsoft Store 中选择你偏好的 GNU/Linux 分发版。
- 运行常用的命令行软件工具(例如 grep、sed、awk)或其他 ELF-64 二进制文件。
- 运行 Bash shell 脚本和 GNU/Linux 命令行应用程序,包括:
- 工具:vim、emacs、tmux
- 语言:NodeJS、Javascript、Python、Ruby、C/C++、C# 与 F#、Rust、Go 等
- 服务:SSHD、MySQL、Apache、lighttpd、MongoDB、PostgreSQL。
- 工具:vim、emacs、tmux
- 语言:NodeJS、Javascript、Python、Ruby、C/C++、C# 与 F#、Rust、Go 等
- 服务:SSHD、MySQL、Apache、lighttpd、MongoDB、PostgreSQL。
##
什么是wsl2
WSL2是WSL1的升级版,提供了更好的文件系统性能和更完全的Linux系统内核支持,WSL2 使用虚拟化技术在轻量级虚拟机 (VM) 中运行 Linux 内核,同时保留了WSL1的操作体验,可以把通过WSL2启动的Linux系统认为是虚拟机中的一个Linux系统,因此,相对于通过用户模式和内核模式组件构成兼容性底层来运行Linux的WSL1来说,WSL2的Linux系统更完整,功能更完善。例如,WSL1不支持Docker,而WSL2可以以原生的方式运行Docker(Empowering App Development for Developers | Docker)。
比较 WSL 1 和 WSL 2
从 WSL 1 更新到 WSL 2的主要原因包括:
- 提高文件系统性能,
- 支持完全的系统调用兼容性。
WSL 2 使用最新、最强大的虚拟化技术在轻量级实用工具虚拟机 (VM) 中运行 Linux 内核。 但是,WSL 2 不是传统的 VM 体验。
WSL 2 中的新增功能
- WSL 2 体系结构
传统的 VM 体验可能启动速度慢,是独立的,消耗大量资源,需要你花费时间进行管理。 WSL 2 没有这些属性。
WSL 2 有 WSL 1 的优点,包括 Windows 和 Linux 之间的无缝集成,启动时间短,资源占用量少,并且无需 VM 配置或管理。 虽然 WSL 2 确实使用 VM,但 VM 是在幕后管理和运行的,因此你将具有与 WSL 1 相同的用户体验。
- 完整的 Linux 内核
WSL 2 中的 Linux 内核是 Microsoft 根据最新的稳定版分支(基于 kernel.org 上提供的源代码)构建的。此内核已专门针对 WSL 2 进行了调整,针对大小和性能进行了优化,以便在 Windows 上提供良好的 Linux 体验。 内核将由 Windows 更新提供服务,这意味着你将获得最新的安全修补程序和内核改进功能,而无需自行管理它。
- 提升了文件 IO 性能
如果使用 WSL 2,文件密集型操作(如 git 克隆、npm 安装、apt 更新、apt 升级等)的速度都明显更快。
实际的速度提升将取决于你运行的应用以及它与文件系统的交互方式。 在对压缩的 tarball 进行解包时,WSL 2 的初始版本的运行速度比 WSL 1 快达 20 倍,在各种项目上使用 git 克隆、npm 安装和 cmake 时,大约快 2-5 倍。
- 完全的系统调用兼容性
Linux 二进制文件使用系统调用来执行访问文件、请求内存、创建进程等功能。 虽然 WSL 1 使用的是由 WSL 团队构建的转换层,但 WSL 2 包括了自己的 Linux 内核,具有完全的系统调用兼容性。 优点包括:
-
可以在 WSL 内部运行的一组全新应用,例如 Docker 等。
-
对 Linux 内核的任何更新都立即可供使用。 (无需等待 WSL 团队实现更新并添加更改)。
wsl 基本命令
wsl 安装
PowerShell下输入
wsl --install
安装特定的 Linux 发行版
wsl --install --distribution
通过将 替换为发行版名称,指定除默认发行版 (Ubuntu) 之外的 Linux 发行版进行安装。 此命令也可输入为:wsl -d 。
列出可用的 Linux 发行版
wsl --list --verbose
将 WSL 版本设置为 1 或 2
wsl --set-version
更新 WSL
wsl --update
WSL1升级为WSL2
首先需要启用组件
- 使用管理员打开Powershell并运行
Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
- 启用后会要求重启计算机
其次更新WSL2内核
- 从https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi获取WSL2 Linux内核更新包并运行
- 运行powershell
-查看目前的WSL版本
wsl -l -v
#输出
Name State Version
Ubuntu-20.04 Stopped 1
执行更新
wsl --set-version 分发版名称 版本号
例如,将Ubuntu18.04 设置为WSL2的命令为 wsl --set-version Ubuntu-18.04 2
该步骤会花一些时间,如果安装成功,会出现转移成功。
完成后重新检测
wsl -l -v
#输出
Name State Version
Ubuntu-20.04 Stopped 2
在pycharm 中使用wsl
配置解释器
1、通过以下两种方式打开“ 添加Python解释器”对话框:
-
当您在编辑器中时,最方便的方法是在状态栏中使用Python Interpreter小部件。单击小部件,然后选择添加解释器…
-
通过按或选择文件| 打开“ 设置/首选项对话框” 。设置 Windows和Linux或 PyCharm | macOS的首选项。 Ctrl+Alt+S
-
在“ 设置/首选项”对话框中Ctrl+Alt+S,选择“ 项目<项目名称>” |“项目”。项目口译员。单击配置项目解释器图标,然后选择添加。
2、在对话框的左侧窗格中,单击WSL。
3、选择Linux发行版,然后在所选Linux发行版中指定python可执行文件的路径。
完成后,新的解释器将添加到您的项目中,并将设置默认的mnt映射。
请注意,使用WSL不能创建虚拟环境:您安装的所有软件包都将添加到相应的系统解释器中。系统将要求您输入您的sudo密码。
PyCharm允许您使用在WSL上运行的自定义Linux发行版。这可以通过在检测到WSL之后自动编辑PyCharm创建的wsl.distributions.xml配置文件来完成。
完成以上操作就可以正常使用了。
在vs code中使用wsl
vscode已经安装了python
从命令行中
若要从 WSL 发行版打开项目,请打开发行版的命令行并输入:code .
从 VS Code 中
1、官网下载vscode
2、vscode插件内搜索 Remote-WSL并安装
安装完成后vscode会多出如下的图标
点击 并选择new window
此时vscode将打开一个新窗口并连接上linux子系统
打开Terminal发现提示符存在乱码, 下载FiraCode 这个号称程序专用字体,并将vscode终端配置为该字体即可
最后效果如下
写代码
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
x=np.arange(11)
y=x**2
plt.plot(x,y)
plt.show()